Modx - сніппети, ит шеф

У цій статті розглянемо, що таке сниппет і навіщо він потрібен в MODX Revolution. Познайомимося з тим, як здійснюється виклик сниппета, чим відрізняється кешированний виклик сниппета від НЕ кешованого, а також як здійснюється настройка, тобто передача параметрів або набору параметрів, сніпетів.

Призначення і способи виклику сниппета

Сніппет - це фрагмент php-коду, який в результаті свого виконання повертає деякий відповідь. Для того щоб сниппет приступив до виконання свого коду, його необхідно викликати. Виклик сниппета в MODX Revolution здійснюється за допомогою наступного тега:

Відрізняється один спосіб виклику сниппета від іншого тільки кешуванням.

На відміну від НЕ кешованого кешированний варіант виклику сниппета в більшості випадків повертає результати з кешу. Розглянемо, як це працює. У момент виклику кешованого сниппета, MODX спочатку перевіряє, чи є результат його роботи (відповідь) в кеші. Якщо так, то використовує його. В іншому випадку (якщо відповідь сниппета не знайдений в кеші) запускає код цього сниппета на виконання. Отриманий в результаті виконання сниппета відповідь, MODX не тільки використовує для формування вмісту ресурсу (виведення), але також зберігає його в кеш. Після цього код сниппета вже не буде виконуватися при формуванні сторінки, MODX просто буде використовувати готовий результат його роботи з кешу.

Кешированний варіант виклику сниппета дозволить не тільки знизити навантаження на сервер, але також зменшити час, необхідний для формування сторінки (ресурсу), яку необхідно віддати користувачеві. Тому на сайті де це можливо бажано використовувати саме кешированний спосіб виклику сниппета.

У яких елементах MODX можна викликати сниппет за допомогою тега?

Тег виклику сниппета можна розміщувати в чанка, шаблонах, TV-параметрах і полях ресурсів MODX Revolution.

Де розташовані сніппети в адмінки?

В адмінці CMF MODX Revolution все сніпети розташовані в розділі "Сніппети". Даний розділ знаходиться на лівій панелі у вкладці "Елементи".

Додавання (установка) нових фрагментів у систему MODX Revolution може здійснюватися наступними способами:

  • за допомогою встановлення пакетів (програм), що містять в своєму наборі готові сніппети. Призначені вони в більшості випадків для реалізації певного динамічного функціоналу на сайті;
  • за допомогою створення своїх власних фрагментів.

параметри сниппета

Сніппети в MODX Revolution можуть мати параметри. Параметри - це php-змінні, які можна форматувати під час виклику сниппета.

Вказуються параметри у виклику сниппета після знака воспрос (.).

Передаються параметри сніпетів за допомогою пар імяПараметра = # 96; значення # 96 ;. Пара починається зі знака (Амперсанда). Ім'я параметра відділяється від значення за допомогою знака рівності (=). Крім цього значення параметра має бути укладена в зворотні одинарні лапки ( # 96; ).

Наприклад, виведемо 7 останніх тікетів (статей) з розділу 2, використовуючи в якості оформлення кожного результату вміст чанка tpl.Tickets.ticket.latest:

Стилі

Передавати параметри сніпетів можна не тільки за допомогою пар імяПараметра = # 96; значення # 96 ;. але і у вигляді набору. Набір параметрів - це деяка сутність MODX, яка дозволяє передати сніпетів колекцію параметрів за допомогою вказівки тільки деякого імені (імені цього набору).

Управління наборами параметрів в MODX Revolution здійснюється на сторінці "Стилі". Для відкриття даної сторінки необхідно у верхньому меню адмінки натиснути на значок шестерінки і вибрати з списку пункт "Стилі".

MODX - Стилі (Property Sets)

Сторінка "Стилі" складається з 2 частин:

1 частина (ліва панель) - це імена наборів;

2 частина (права панель) - це параметри, які пов'язані з певним ім'ям набору. Представлені параметри в цій панелі за допомогою таблиці, що складається з 2 стовпців: імені параметра і значення.

На цій сторінці можна не тільки побачити імена наборів і пов'язані з ними параметри, але також створити нові набори або відредагувати існуючі.

Наприклад, створимо новий набір параметрів для сниппета TicketLatest:

Відкриємо сторінку "Стилі" (в головному меню адмінки значок "шестерінки" -> Стилі).

Натиснемо на кнопку "Новий набір параметрів". У діалоговому вікні "Створити набір параметрів" введемо в поля наступні значення:

Натиснемо на кнопку "Зберегти".

Натиснемо правою кнопкою миші на щойно створений набір параметрів і в контекстному меню виберемо пункт "Зв'язати з елементом". У діалоговому вікні виберемо ім'я класу modSnippet і елемент TicketLatest. Натиснемо на кнопку "Зберегти".

Після цього виберемо в лівій панелі набір html. який пов'язаний з елементом TicketLatest (html-> TicketLatest). Параметри і значення за замовчуванням, які має цей набір (а точніше пов'язаний з цим набором сниппет TicketLatest) відобразиться в таблиці.

Змінимо значення необхідних параметрів:

  • parents - список розділів для пошуку результатів (2);
  • limit - кількість записів для вибірки (7);
  • action - вказує на те, що необхідно вибрати (tickets);
  • tpl - чанк, на підставі якого оформляється кожен тікет (tpl.Tickets.ticket.latest).

Натиснемо на кнопку "Зберегти набір параметрів".

Зазначимо створений набір в тезі виклику сниппета TicketLatest.

Ця запис автоматично встановить сніпетів TicketLatest параметри, що містяться в наборі html.

Крім цього параметри набору можна перевизначити, якщо їх вказати безпосередньо у виклику сниппета за допомогою пар ІмяПараметра = # 96; значення # 96; .

Параметр limit в цьому прикладі буде мати значення 10 замість 7 (значення 7 має даний параметр в наборі html).

Сергій Вчора в 08:36 # 0

Є сформований блок посилань (формуються в сніпеті і відображаються на головній сторінці сайту) при натисканні на які відкривається сторінка з викликом pdoResources і відбувається вибірка ресурсів. Як мені передати в параметр where json масив для додаткових умов вибірки і як його там правильно прийняти. Фактично туди треба покласти період за який відбуватиметься вибірка ресурсів. І писати сниппет-обгортку для pdoResources такого технологічного доповнення рука не піднімається.
Дякуємо.

Олександр Мальцев Вчора о 12:43 # 0

Ви не можете просто передати в where json масив. Його необхідно розібрати і скласти з його параметрів необхідна умова. Ця дія необхідно виконати в сніпеті (його необхідно створити). А в параметрі where сниппета pdoResources вказати його виклик.

Сергій Вчора о 14:23 # 0

Ну а якщо я сформую необхідна умова в тому сніпеті де формуються посилання і як параметр передам цю умову на сторінку де є виклик pdoResources? Так можна?

Олександр Мальцев 9 годин тому # 0

Так можна. Але, вам потрібно задати додатковий параметр для сниппета, за допомогою якого визначати, що повертати в якості значення (посилання або умова для pdoResource).

Сергій 4 години тому # 0

Перепрошую за зайву наполегливість, напевно я не зовсім розумію.
У сніпеті я формую посилання так
При натисканні на посилання мені треба зловити month і year на сторінці з id = 544 і як то там їх використовувати у виклику pdoResources. Або вже передати туди готову json рядок і вставити в умова where. Як мені звернутися до тих параметрів що передаються на сторінку?
Якщо викликати pdoResources без параметра tpl то видно що туди приходить
в такому випадку можна адже передати вже готове умова, а потім відразу підставити в where. Як прописати рядок where якщо умова передати на сторінку в змінної str, так чи що?

Сергей 1 годину тому # 0

Вирішив очищенням core / cache вручну.
Чомусь з панелі керування не чиститься. Щось права?

Якщо щось налаштовували, то можливо ... Подивіться може щось є в журналі помилок.
Якщо є резервна копія, то спробуйте відкотити на неї. Або ж поверх «накатом» таку ж збірку MODX і переустановите компоненти.