Наверх

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

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

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
Читать дальше

Обрабатываем поля форм, добавляемые динамически

06 апреля 2013, 02:54


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

<div class="control-group">
  <label class="control-label" for="contractor_phone">Телефон</label>
  <div class="controls">
    <div class="input-append">
      <input type="text" id="contractor_phone" name="contractor_phone[]">
      <span class="btn" id="add_phone"><i class="icon icon-plus"></i></span>
      <div id="addPhones"></div>
    </div>
  </div>
</div>

<script type="text/javascript">
$("#add_phone").click(function() {
    $("#addPhones").append('<input type="text" name="contractor_phone[]">');
});
</script>
В итоге в $_POST['contractor_phone'] приходит массив телефонов.

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

Выводим объекты любого класса с помощью модифицированного getResources

06 апреля 2013, 02:37

Недавно понадобилось выводить во фронтенде список пользователей, список групп пользователей, список ролей, и к тому же списки своих собственных объектов.

Очень хотелось той же гибкости в оформлении, которую дает getResources при выводе списка ресурсов. Ну и getPage для пагинации использовать. В результате я взял getResources и слегка его переделал, чтобы он мог выводить список объектов любого класса (ему этот класс, конечно же, придется все-таки указать).

Получился сниппет getObjects Внимание: Велосипед (кошерное решение в UPD)
Читать дальше

[Перевод] Оптимизация сайта с помощью getCache или работа с пользовательскими разделами кеша

06 апреля 2013, 02:30

Перевод статьи Джейсона Коварда (opengeek) Optimization with getCache and Custom Cache Partitions

Проблема: При любом действии в админке, очищается кеш всего сайта



Одной из самых распространенных претензий к системе кеширования MODX Revolution является очистка всего кеша сайта при любом действии в админке (будь то редактирование ресурса, чанка, сниппета и пр. — даже просто при создании нового чанка). В результате скорость загрузки сайта уменьшается, так как все сниппеты, чанки и шаблоны необходимо снова обрабатывать. Многие высказываются, что они хотят очищать кеш только отредактированного ресурса. На первый взгляд это выглядит как баг, а не как фича. Кажется, что в такой продвинутой и гибкой системе, как MODX, довольно просто реализовать очистку кеша только тех элементов, которых коснулись изменения.

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

Создаем свою сборку MODX REVO

06 апреля 2013, 02:24


Уже довольно давно существует скрипт от bezumkin для создания сайтов на сервере с уже установленными необходимыми пакетами.

Но иногда нужно быстренько развернуть сайт на обычном shared-хостинге. Я как-то сделал себе отдельный сайтик, где настроил нужные мне дополнения, создал файлы robots.txt и sitemap.xml, настроил дружественные URL и прочие мелочи. Соответственно, если нужно было развернуть новый сайт я брал свою заготовку, переносил ее на новое место и занимался уже созданием сайтов.

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

Реализация админки во фронтэнде сайта на MODX Revo

06 апреля 2013, 02:01

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

Начал я с того, что написал сниппет addResource, который будет создавать новый ресурс с указанным заголовком и прочими параметрами
Читать дальше

Реализация пошаговой работы PHP-скрипта с помощью AJAX

06 апреля 2013, 01:36

Искал более-менее простое и универсальное средство для организации пошаговой работы скрипта, но так ничего и не нашел. Даже вопрос в QA задал, везде только общие фразы. Поэтому решил сам сделать такой инструмент.

Для чего это вообще нужно?


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

Хотелось бы разбить обработку файла на несколько частей и запускать скрипт в работу уже по частям.

Принцип реализации давно известен — обмен данными между сервером и клиентом:
Клиент запускает скрипт, тот выполняет несколько итераций и возвращает клиенту номер строки, на которой он остановился. После этого клиент делает новый запрос, в котором передает скрипту этот номер и скрипт продолжает работу дальше.

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

Разрабатываем социальную сеть на MODx Revolution

06 апреля 2013, 00:22


MODx развивается стремительными темпами, и я решил попробовать сделать социальную сеть на этом замечательном движке. Ведь в нем давно уже есть возможность работать с пользователями (регистрация, авторизация и пр.), встроенный механизм сообщений пользователей, он умеет работать с изображениями и много чего еще.

Для начала давайте разберемся с пользователями, дадим им возможность писать статьи, например, или добавлять свои события.
Читать дальше

Авторизация

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


Шаблоны MODX

1 2 Дальше »

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