Обрабатываем поля форм, добавляемые динамически
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)
Читать дальше
Очень хотелось той же гибкости в оформлении, которую дает getResources при выводе списка ресурсов. Ну и getPage для пагинации использовать. В результате я взял getResources и слегка его переделал, чтобы он мог выводить список объектов любого класса (ему этот класс, конечно же, придется все-таки указать).
Получился сниппет getObjects Внимание: Велосипед (кошерное решение в UPD)
Читать дальше
[Перевод] Оптимизация сайта с помощью getCache или работа с пользовательскими разделами кеша
06 апреля 2013, 02:30
Перевод статьи Джейсона Коварда (opengeek) Optimization with getCache and Custom Cache Partitions
Одной из самых распространенных претензий к системе кеширования MODX Revolution является очистка всего кеша сайта при любом действии в админке (будь то редактирование ресурса, чанка, сниппета и пр. — даже просто при создании нового чанка). В результате скорость загрузки сайта уменьшается, так как все сниппеты, чанки и шаблоны необходимо снова обрабатывать. Многие высказываются, что они хотят очищать кеш только отредактированного ресурса. На первый взгляд это выглядит как баг, а не как фича. Кажется, что в такой продвинутой и гибкой системе, как MODX, довольно просто реализовать очистку кеша только тех элементов, которых коснулись изменения.
В этой статье я хотел бы получше объяснить, во-первых, почему так трудно реализовать такую частичную очистку кеша, а во-вторых, на примере показать альтернативный способ решения проблемы без необходимости разработки решений с нуля.
Читать дальше
Проблема: При любом действии в админке, очищается кеш всего сайта
Одной из самых распространенных претензий к системе кеширования MODX Revolution является очистка всего кеша сайта при любом действии в админке (будь то редактирование ресурса, чанка, сниппета и пр. — даже просто при создании нового чанка). В результате скорость загрузки сайта уменьшается, так как все сниппеты, чанки и шаблоны необходимо снова обрабатывать. Многие высказываются, что они хотят очищать кеш только отредактированного ресурса. На первый взгляд это выглядит как баг, а не как фича. Кажется, что в такой продвинутой и гибкой системе, как MODX, довольно просто реализовать очистку кеша только тех элементов, которых коснулись изменения.
В этой статье я хотел бы получше объяснить, во-первых, почему так трудно реализовать такую частичную очистку кеша, а во-вторых, на примере показать альтернативный способ решения проблемы без необходимости разработки решений с нуля.
Читать дальше
Создаем свою сборку MODX REVO
06 апреля 2013, 02:24

Уже довольно давно существует скрипт от bezumkin для создания сайтов на сервере с уже установленными необходимыми пакетами.
Но иногда нужно быстренько развернуть сайт на обычном shared-хостинге. Я как-то сделал себе отдельный сайтик, где настроил нужные мне дополнения, создал файлы robots.txt и sitemap.xml, настроил дружественные URL и прочие мелочи. Соответственно, если нужно было развернуть новый сайт я брал свою заготовку, переносил ее на новое место и занимался уже созданием сайтов.
Но тут решил попробовать сделать свою заготовку еще более простой в использовании — скачал, установил и все. Не нужно менять пути, не нужно в конфиге прописывать доступ к базе и пр.
Читать дальше
Реализация админки во фронтэнде сайта на MODX Revo
06 апреля 2013, 02:01
Необходимо было сделать как можно более понятный интерфейс с минимумом лишних кнопок, настроек и прочего – только заголовок и текст.
Начал я с того, что написал сниппет addResource, который будет создавать новый ресурс с указанным заголовком и прочими параметрами
Читать дальше
Начал я с того, что написал сниппет addResource, который будет создавать новый ресурс с указанным заголовком и прочими параметрами
Читать дальше
Реализация пошаговой работы PHP-скрипта с помощью AJAX
06 апреля 2013, 01:36
Искал более-менее простое и универсальное средство для организации пошаговой работы скрипта, но так ничего и не нашел. Даже вопрос в QA задал, везде только общие фразы. Поэтому решил сам сделать такой инструмент.
Бывает необходимо обработать скриптом какой-то очень уж большой файл, например, для импорта. Естественно, время работы скрипта увеличивается пропорционально размеру файла или количеству строк в нем.
Хотелось бы разбить обработку файла на несколько частей и запускать скрипт в работу уже по частям.
Принцип реализации давно известен — обмен данными между сервером и клиентом:
Клиент запускает скрипт, тот выполняет несколько итераций и возвращает клиенту номер строки, на которой он остановился. После этого клиент делает новый запрос, в котором передает скрипту этот номер и скрипт продолжает работу дальше.
Читать дальше
Для чего это вообще нужно?
Бывает необходимо обработать скриптом какой-то очень уж большой файл, например, для импорта. Естественно, время работы скрипта увеличивается пропорционально размеру файла или количеству строк в нем.
Хотелось бы разбить обработку файла на несколько частей и запускать скрипт в работу уже по частям.
Принцип реализации давно известен — обмен данными между сервером и клиентом:
Клиент запускает скрипт, тот выполняет несколько итераций и возвращает клиенту номер строки, на которой он остановился. После этого клиент делает новый запрос, в котором передает скрипту этот номер и скрипт продолжает работу дальше.
Читать дальше
Разрабатываем социальную сеть на MODx Revolution
06 апреля 2013, 00:22

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