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

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

Есть задача: сделать раздел вакансий, в котором у каждой вакансии 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 поле готово к использованию.

Читать далее

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

Задают много вопросов "а как выбрать бла-бла-бла и вывести все 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. Небольшая демонстрация

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

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

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

А вот так:

Читать далее
futuris
Futuris
26.03.2024 07:39
Страница отдельного поста заработала сразу в том виде, как ты написал.) А вот в ленте постов контент...
bezumkin
Василий Наумкин
20.03.2024 18:21
Volledig!
Андрей
14.03.2024 10:47
Василий! Как всегда очень круто! Моё почтение!
russelgal
russel gal
09.03.2024 17:17
А этот стоило написать хотя бы затем, чтобы получить комментарий от юзера, который ничего не писал ...
inetlover
Александр Наумов
27.01.2024 00:06
Василий, спасибо! Извини, тупанул.
bezumkin
Василий Наумкин
22.01.2024 04:43
Давай-давай!
bezumkin
Василий Наумкин
24.12.2023 11:26
Спасибо!
bezumkin
Василий Наумкин
27.11.2023 02:43
Ура!
bezumkin
Василий Наумкин
25.11.2023 08:30
Vesp тянет 2 зависимости: vesp-frontent для фронта и vesp-core для бэкенда. Их можно обновлять, но э...
bezumkin
Василий Наумкин
22.11.2023 08:09
Отлично, поздравляю!