|
|
|||||||||||||||||||||||||||||
|
MODX Revolution - пара костылей для необычных ситуацийИсточник: habrahabr Agel_Nash
MODX конечно крутая CMF, но порой сталиваешся с такими мелочами, которые напрягают. Я не буду в этом топике плакаться какие все вокруг плохие, а я такой хороший. Возьмем, например, ветку Revolution и препарируем ее. А чтобы вы не потеряли интерес к этой заметке, вот небольшой план статьи:
Удаление параметра из набора параметровСоздаем набор параметров. В него добавляем Х параметров, а потом понимаем, что мы разошлись. Пытаемся найти кнопку удалить… В общем у меня ничего не вышло. Пришлось искать другой способ удаления параметра. Решение проблемы: открываем на редактирование ненужный параметр и полностью копируем все данные другого нужного параметра (якобы пытаясь перезаписать старый параметр новыми данными). Следствие: Можем перезаписать значение нужного параметра. Значения ключей в настройках контекстовСмоделируем такую ситуацию: несколько контекстов, к каждому контексту привязаны свои настройки. Если в админке несколько сайтов, то как правило в настройках контекста переопределяют такой ключик, как site_name. А теперь представьте, ваша фирма всегда позиционировала свое название какКрутые{Перцы}. Как вы думаете, какой результат мы увидим во front-end? Правильно, просто Крутые. Решение проблемы: вместо скобок использовать специальные символы. А что делать тем, кто у кого используется 1 шаблон на нескольких контекстах и желает в качестве ключа указать некий набор параметров для JS кода? Там специальные символы не помогут и одним чанком не обойтись. Тут решений уже два
Работа с вложенными чанкамиВ MODX еще с давних пор есть такая функция, как А теперь давайте создадим простой установим phpthumbof и создадим Сделаем вызов этого всего на странице примерно так: [[!test? &tpl=`test` &phs=`/assets/1.jpg,/assets/2.jpg`]] Но вот незадача, при первом вызове в сниппет phpthumbof приходит строка [[+item]] и только при всех последующих уже распарсеный плэйсхолдер Решение: Хранить такие проблемные чанки в файлах. Т.е. поставить галочку статичный и выбрать файл Еще одно решение от bezumkin: Заменить parseChunk на getChunk. Наблюдаем за работой парсераЭксперимент проведем следующим образом: создадим новый документ с шаблоном blank. Содержимое и все остальное оставим пустым. Проверим, что стоит галочка кешировать. перед строкой добавим
Ну и открываем в браузере нашу страницу. о0! число 1..2..3 Спрашивается какого мать вашу… Пустая страница. Что там парсить? Смотрим внимательно исходник
Таким образом даже на пустой странице мы вызываем 3 раза одно и тоже событие. Мне страшно подумать, что будет с теми сайтами, у которых еще на это событие повешан какой-то код. artdevue для эксперимента проверил сколько раз будет выполняться данная функция при различных условиях. таким образом мы имеем следующую табличку.
Мощный кешНа одном из рабочих сайтов открыл я папку с кешем и чуть со стула не упал. 1 страница в кеше занимает от 50 до 200 КБ. Нет, это может конечно и нормально, но кеш обновляется при каждом изменении документов. Обновил 1 документ - все закешированные страницы удалились. А если 100 страниц? 1000? Это уже на несколько МБ тянет. А если новости добавляются каждый день? Ссылки по теме
|
|