Наверх

Советы и решения

Вечный кеш для чанков. Запрещаем удалять кеш даже по событию обновления сайта

30 июля 2013, 18:16

Когда оптимизируешь сайт, понимаешь, что некоторые блоки обновляются очень-очень редко и хотелось бы такие блоки сгенерировать один раз, потом закешировать и так, чтобы даже при обновлении сайта их кеш не сбрасывался.

В статье Оптимизация сайта на MODX Revolution — уменьшение времени загрузки страницы есть сниппет chunk, который помогает закешировать блоки с первого отображения и вплоть до внесения изменений на сайт.

Сниппет longCache действует анологично, только создает кеш блока, который не очищается при каждом обновлении информации на сайте.
Читать дальше

Решаем проблему с getPage и несуществующими страницами

30 июля 2013, 15:08

Недавно в блоге bezumkin'а подняли тему генерации страниц сниппетом getPage:
подскажите по поводу пагинации. допустим имею две страницы: page 1, page 2.
но если в адресную строку ввести несуществующий адрес/?page=N то открывается пустая страница, а не 404?
кто нибудь решал этот вопрос?

Читать дальше

Небольшой скрипт, улучшающий отображение картинок в статьях

26 июля 2013, 13:01

Так как сайты заполняют в основном контент-менеджеры, которые о CSS знают лишь понаслышке, я давно заметил, что контент страниц выглядит некрасиво. Дело в том, что картинки имеют неправильные отступы (обычно ставят выравнивание и отступы по обоим сторонам от картинки). Получается что-то типа такого:
Читать дальше

Изменяем алгоритм подсчета просмотров страниц в компоненте Tickets

17 апреля 2013, 16:33

Мой блог работает на Tickets от bezumkin, однако Tickets считает просмотры только зарегистрированными пользователями. А у меня в блоге много читателей, кто получает обновления, например, по RSS и не регистрируются. Вот и решил я сделать так, чтобы любые просмотры писались в базу.

Для этого я каждому незарегистрированному читателю устанавливаю cookies, чтобы потом его опознать и повторно не считать его же просмотры.

Ну и добавляем новую запись о просмотре в базу (объект TicketView)
Читать дальше

Кастомизация форм в MODX Revolution

14 апреля 2013, 13:24


В MODX есть интересная возможность — вы можете менять внешний вид формы редактирования ресурсов практически как вам хочется. Причем вы можете сделать разные формы для разных групп пользователей, и даже для разных ресурсов. Можно выбирать разные профили форм для данного ресурса в зависимости от его шаблона, родителя или других свойств.

И для этого нам не придется писать ни одной строчки кода!

Давайте, посмотрим, что, например, можно сделать с формами
Читать дальше

Подписка на новости для вашего сайта

12 апреля 2013, 15:55

Сделал я себе блог и решил, что каждый день на него никто заходить все равно не будет, но почитать новые статьи многие бы не отказались. И решил я сделать подписку на новые статьи для любого посетителя.

Так как на начальном этапе подписчиков будет немного, то отправку писем я реализовал с помощью простого плагина на событие OnDocFormSave
Читать дальше

Оптимизация сайта на MODX Revolution — уменьшение времени загрузки страницы

10 апреля 2013, 15:17

Советы по оптимизации сайта штатными средствами MODX

Всегда вызывайте сниппеты кешируемыми


Многие разработчики привыкли писать так:
[[!getResource?
  &parents=`5`
  &tpl=`tpl.news`
]]
Это в корне неверно. Убирайте восклицательные знаки везде. Исключение составляют те сниппеты, которые обрабатывают какую-то информацию, которая поступает от пользователя, т. е.:
  • FormIt (пользователь заполняет форму и сниппет должен данные обработать);
  • Login, Register (точно так же — обработка пользовательских данных, например, логин и пароль);
  • getPages (ссылки на разные страницы формируются с GET-параметрами, типа /?page=3, соответственно сниппет должен обработать этот GET-параметр);
  • Ну и другие сниппеты, например, на моем сайте — это сниппеты Loginza для авторизации и TicketsComments, с помощью которого можно оставлять комментарии к статье.
Остальные сниппеты (такие как Wayfinder, getResources, Breadcrumb и пр.) должны вызываться без восклицательного знака.
Читать дальше

Обработка большого количества документов на слабом хостинге

09 апреля 2013, 17:00

Иногда возникает необходимость обработать сразу большое количество ресурсов, например вдруг решили, что у всех отзывов должен быть URL /review-25.html (у каждого свой id), а сейчас на сайте около 200 отзывов и у них URL формировались обычным translit'ом (ну или не совсем обычным))). Все бы ничего, да вот хостинг слабенький и на нем жестко прописано ограничение на время выполнения скрипта. И максимальное количество документов, которые успевают обработаться — 10-15.

Можно, конечно как-то оптимизировать скрипт, например, не использовать процессоры, можно вносить изменения прямо в базу через phpMyAdmin, можно запускать скрипт 20 раз вручную, пока не обработаются все ресурсы… Каждый выбирает сам.

Для себя я сделал сниппет для пошаговой работы php-скрипта, который вполне может обрабатывать и ресурсы MODX.
Читать дальше

Пара советов о том, как писать свои сниппеты

09 апреля 2013, 16:56

MODX не предъявляет высоких требований к разработчику. Если ты немного знаешь HTML, то можешь сделать свой сайт без труда:

Менюшки — Wayfinder
Вывод новостей — getResources

Просто правильно пропиши параметры вызовов и вставь в шаблон HTML — вот и готов сайт.

Но как только сайтостроителю надо сделать что-то чуть-чуть другое, он начинает писать свои сниппеты. Вот тут и возникают такие творения
Читать дальше

Снова о кешировании. Генерируем меню только один раз

09 апреля 2013, 16:43

Иногда бывает необходимость сделать меню большим. Ну, реально большим и разветвленным. Например, как на сайтах fsknmsk.ru, medicinskiy-center.ru, www.withoutdrugs.ru, narcononekb.ru

Если Wayfinder вызывается кешируемым, т. е. [[Wayfinder &startId=`0`]] (без восклицательного знака), и изменения на сайте вносятся нечасто, то проблем особых нет — после первого посещения каждой страницы, вывод сниппета кешируется и для этой страницы код меню уже не генерируется.

Если изменения вносятся часто, но на меню они особо не влияют (например, просто выкладываются новости или статьи, которые в меню не появляются), то используем getCache (статья)

Но что делать, если само меню постоянно меняется и новые пункты нужно обязательно отражать на всех страницах? Сниппет getCache хранит сгенерированный код, пока вы его не удалите вручную (или по таймеру). Обновление кеша после сохранения страниц на него не влияет.

Поделюсь своим решением, использующим самый простой вариант пользовательского кеширования в MODX
Читать дальше

Авторизация

через сервис Loginza:

Подписка или RSS

Буду присылать новые статьи — никакого спама



Шаблоны MODX

1 2 Дальше »

Объектная
модель
MODX