Есть задача: сделать раздел вакансий, в котором у каждой вакансии 3 списка: требования, ответственность, условия.
Конечно, менеджеру должно быть удобно и html теги он писать не собирается.
Использовать для этого TinyMCE не хочется — слишком просто в нем сломать верстку. Поэтому я решил использовать ТВ и выводить их в нужном мне виде простым сниппетом.
Периодически появляется задача — создать несколько контекстов и сделать так, чтобы нужный загружался для работы автоматически в зависимости от URL. Будем считать, что ЧПУ настроены. Более никаких изменений ни в .htaccess, ни в конфигах сервера. Ведь часто встречаются злые хостеры, которые не позволяют этого делать. А еще нежелательно создавать подкаталоги и копировать в них index.php, иначе после каждого обновления придется следить за его изменением.
Реализация сниппета, который бы выводил историю просмотренных страниц.
При создании нового тикета, в форме выводится список секций, доступных для пользователя.
Чтобы иметь возможность публиковать тикеты, юзер должен быть авторизован и входить в группу, у которой есть разрешение section_add_children для секций тикетов.
По умолчанию, Tickets выбирает все доступные секции, что не очень удобно, если сайт большой.
Поэтому, я написал простенький сниппет, который позволяет указать
&parents — список контейнеров, где искать секции тикетов
&depth — глубина выборки
&tpl — шаблон оформления секции
&sortby — сортировка, по умолчанию — «menuindex».
&sortdir — направление сортировки, по умолчанию «desc».
&where — дополнительные параметры выборки.
Возможно, он войдёт в состав Tickets на постоянной основе, но не факт.
modx revo 2.2.7.
Если в поле «Значение по умолчанию» некоторого TV-параметра указать:
@EVAL return $modx->runSnippet('snippet');
то значение по умолчанию при создании ресурса не устанавливается.
Значение по умолчанию в этом случае устанавливается только при нажатии на зелёном кружке.
Если же указать так:
@EVAL return 5;
то значение устанавливается в 5 сразу же при создании ресурса.
Как сделать так, чтобы при использовании EVAL+runSnippet значение по умолчанию устанавливалось сразу (без нажатия на зелёном кружке)?
Для тех, кому не хватает полей товара, и хотелось бы еще хотя бы одно, не дописывая плагин, можно сделать следующее:
Зайти в пункт «Настройка системы».
Выбрать пространство «minishop2».
В настройке «Основные поля панели товара» добавить «description», например перед «introtext», естественно отделив запятой.
Собственно и все, +1 поле готово к использованию.
Задают много вопросов "а как выбрать бла-бла-бла и вывести все id товаров по нему?", на которые регулярно пишу в комментариях разные выборки на xPDO.
Пришло время собрать их в кучу, чтобы было проще искать.
У любого ресурса MODX есть ограниченное число полей, таких как pagetitle, content, introtext. Чтобы расширить этот функционал, и добавить, например, картинку к заметке — нужны дополнительные поля.
В MODX они называются Template Variables, то есть, TV.
Это очень мощная система, и тэвэшки можно создавать бесконечно много, с разными свойствами и наворотами. Чем многие и злоупотребляют.
Объясняю почему. Один TV — это одна строка в таблице modTemplateVarResource. Если нужно получить 10 TV — это обычно 10 запросов в базу. Если нужно отсортировать по ним — еще сложнее и дольше.
Написано в MODx Revo 2.2.4.pl.
Сниппет формирует список возможных значений по существующим значениям TV.
Сегодня задали вопрос: -а как выводить тикеты определённого пользователя, типа как персональный блог?
Ну, тут минимум 2 варианта:
1. Создать отдельный раздел для юзера.
2. Выделять тикеты юзера из общей кучи.
Первый вариант отметаем сразу по ряду причин:
— Нужно дать право юзеру на создание разделов.
— Нужно проверять, сколько он их создал (должно же быть не больше одного).
— Нужно назначать политики доступа так, чтобы туда мог написать только юзер.
— Куча ненужных никому разделов в админке
— Еще всякие непредвиденные сложности.
Если вы будуте создавать каждому юзеру блог самостоятельно в админке руками — еще куда ни шло. Но это не удобно + если юзеров много, то админка разрастётся до неприличных размеров.
Поэтому, мы пойдем вторым путём — выводом тикетов юзера по уникальному url. Я предлагаю site_name/section_name/user_name/.
Реализовал специальный тег spoiler, чтобы прятать куски текста. Работает при помощи новой возможности Jevix — cfgSetAutoPregReplace. Небольшая демонстрация
Круто, да?
Постоянно задают вопросы «а как при сохранении чистить кэш не всего сайта, а только обновляемого ресурса?».
А вот так: