Тонкости и трюки

Вывод ТВ со своим оформлением

Есть задача: сделать раздел вакансий, в котором у каждой вакансии 3 списка: требования, ответственность, условия.

Конечно, менеджеру должно быть удобно и html теги он писать не собирается.

Использовать для этого TinyMCE не хочется — слишком просто в нем сломать верстку. Поэтому я решил использовать ТВ и выводить их в нужном мне виде простым сниппетом.

Читать далее

Переключение контекстов в зависимости от URL

Периодически появляется задача — создать несколько контекстов и сделать так, чтобы нужный загружался для работы автоматически в зависимости от URL. Будем считать, что ЧПУ настроены. Более никаких изменений ни в .htaccess, ни в конфигах сервера. Ведь часто встречаются злые хостеры, которые не позволяют этого делать. А еще нежелательно создавать подкаталоги и копировать в них index.php, иначе после каждого обновления придется следить за его изменением.

Читать далее

Решение: История просмотров на MODx Revo

Реализация сниппета, который бы выводил историю просмотренных страниц.

Читать далее

Вывод секций для публикаций Tickets

При создании нового тикета, в форме выводится список секций, доступных для пользователя.

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

По умолчанию, Tickets выбирает все доступные секции, что не очень удобно, если сайт большой.

Поэтому, я написал простенький сниппет, который позволяет указать

  • &parents — список контейнеров, где искать секции тикетов

  • &depth — глубина выборки

  • &tpl — шаблон оформления секции

  • &sortby — сортировка, по умолчанию — «menuindex».

  • &sortdir — направление сортировки, по умолчанию «desc».

  • &where — дополнительные параметры выборки.

Возможно, он войдёт в состав Tickets на постоянной основе, но не факт.

Читать далее

@EVAL не работает в поле "Значение по умолчанию" у ТВ

modx revo 2.2.7.

Если в поле «Значение по умолчанию» некоторого TV-параметра указать:

@EVAL return $modx->runSnippet('snippet');

то значение по умолчанию при создании ресурса не устанавливается.

Значение по умолчанию в этом случае устанавливается только при нажатии на зелёном кружке.

Если же указать так:

@EVAL return 5;

то значение устанавливается в 5 сразу же при создании ресурса.

Как сделать так, чтобы при использовании EVAL+runSnippet значение по умолчанию устанавливалось сразу (без нажатия на зелёном кружке)?

Читать далее

Дополнительное поле в свойствах товара в 2 клика

Для тех, кому не хватает полей товара, и хотелось бы еще хотя бы одно, не дописывая плагин, можно сделать следующее:

  1. Зайти в пункт «Настройка системы».

  2. Выбрать пространство «minishop2».

  3. В настройке «Основные поля панели товара» добавить «description», например перед «introtext», естественно отделив запятой.

Собственно и все, +1 поле готово к использованию.

Читать далее

Полезные выборки

Задают много вопросов "а как выбрать бла-бла-бла и вывести все id товаров по нему?", на которые регулярно пишу в комментариях разные выборки на xPDO.

Пришло время собрать их в кучу, чтобы было проще искать.

Читать далее

Очень хитрые TV параметры

У любого ресурса 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

Реализовал специальный тег spoiler, чтобы прятать куски текста. Работает при помощи новой возможности JevixcfgSetAutoPregReplace. Небольшая демонстрация

Круто, да?
Читать далее

Как не чистить кэш всего сайта?

Постоянно задают вопросы «а как при сохранении чистить кэш не всего сайта, а только обновляемого ресурса?».

А вот так:

Читать далее
inetlover
Александр Наумов
06.02.2023 00:48
Ок, спасибо!
inetlover
Александр Наумов
28.01.2023 18:27
Классно, все работает!
inetlover
Александр Наумов
24.01.2023 18:31
Понял, спасибо!
inetlover
Александр Наумов
16.01.2023 16:41
Понял, спасибо!
gvozdb
Павел Гвоздь
15.01.2023 13:47
Теперь понял. Благодарю!
bezumkin
Василий Наумкин
14.01.2023 05:16
Да, мне тоже нравится Vite и он по умолчанию используется в Vue 3 и Nuxt 3. Более того, он вроде как...
inetlover
Александр Наумов
09.01.2023 14:35
Ясно, спасибо!
bezumkin
Василий Наумкин
29.12.2022 04:19
На здоровье!
inetlover
Александр Наумов
04.12.2022 15:12
Понятно, спасибо! А то в интернете пишут о минусах разных я и сомневаться стал.
born2slip
pishnaa istntome
22.11.2022 14:06
огромное спасибо! )