Что такое сниппеты в modx
Перейти к содержимому

Что такое сниппеты в modx

  • автор:

Сниппеты

Сниппет — это код на языке PHP, который выводит результат своей работы в том месте шаблона/чанка, где размещен вызов этого сниппета. В сниппеты можно передавать любые параметры, в том числе другие сниппеты, тв-параметры или чанки.

Зачем нужны сниппеты

Как правило, сниппеты используются вывода динамически меняющегося содержимого. Они могут использоваться для создания меню, комментариев, новостных лент, блогов или любого другого функционала, который возможен на языке php в связке с API системы Evolution.

Вызов сниппета

Вызывать сниппет можно в любом месте ресурса. Как правило, обычно это происходит в шаблоне или чанках. Крайне не рекомендуется вызывать сниппеты в поле content, особенно если это поле доступно для редактирования менеджерам сайта.

[!mySnippet? ¶m=`Value`!] - некэшируемый вызов [[mySnippet? ¶m=`Value`]] - кэшируемый вызов

Вызов через API

$params => array('param' => 'Value'); $modx->runSnippet('mySnippet', $params);

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

Для примера сделаем сниппет, показывающий дату создания документа в читаемом человеком формате. Дата создания документа находится в системном ТВ-параметре [*createdon*]. Параметр хранит дату создания документа в формате unixtime, и выглядит его значение примерно так: 1144904400.

 'января', '2' => 'февраля', '3' => 'марта', '4' => 'апреля', '5' => 'мая', '6' => 'июня', '7' => 'июля', '8' => 'августа', '9' => 'сентября', '10' => 'октября', '11' => 'ноября', '12' => 'декабря'); $output = strftime('%d.%m.%Y',$date); $date = explode(".", $output); $month = (int)$date[1]; $m = $fullMonth[$month]; $out = $date[0] . ' ' . $m . ' ' . $date[2]; return $out;

Использование.

Передадим сниппету ТВ-параметр [*createdon*]:

[[ruDate? &date=`[*createdon*]`]]

В результате мы получим что-то подобное:

21 мая 2018

Популярные сниппеты

  • DocLister — позволяет выводить данные из любых таблиц. Идеален для создания новостных лент, блогов, каталогов товаров или услуг.
  • FormLister — сниппет для работы с формами. Прекрасно подходит для форм отправки сообщений с сайта, авторизации-регистрации и любого возможного функционала, связанного с личным кабинетом.
  • phpthumb — сниппет для создания эскизов изображений, наложения водяных знаков и другой работы с изображениями.
  • JotX — сниппет для создания комментариев
  • Sitemap — генератор sitemap.xml

Урок 7. Сниппеты

Начнем наш 7 урок MODx Revolution для новичков. В предыдущем уроке мы изучили переменные шаблона и как их можно использовать для создания пользовательких полей на страницах сайта. При этом использовали шаблон студии Themeforest, вы можете использовать любой удобный для вас шаблон. Мы изучили как преобразовавывать статический HTML/CSS/JS шаблон в динамический контент нашего сайта. В целом, всё то, на что мы смотрели представляло собой внешний вид сайта и разметку. В этом уроке мы коротко рассмотрим как добавить функциональности нашему сайту при помощи сниппетов. Это будет короткий пример использования сниппетов. Каждая запись будет содержать описания одного сниппета, максимум два.

Что такое сниппет?

Сниппеты – это куски PHP кода, которые позволяют добавлять функциональность в ваш MODx сайт. Согласно официальной документации:

Сниппеты – это ответ MODx на внутренний PHP код. Они обеспечивают пользовательский динамичный контент, такой как меню, блоги или новые списки и другие функциональные блоки и что еще угодно, что ваш сайт должен генерировать по запросу.

Сниппеты позволяют вам добавлять такую функциональность как навигацию, записи твиттера, поиск, галереи образов, формы контактов, вместолище контента, комментарии в ваш MODx сайт без необходимости написания PHP кода самому (если, конечно же, вы не хотите сами создать ваш собственный сниппет).

Репозиторий MODx постоянно пополняется коллекциями сниппетов, которые создаются разработчиками ядра либо членами сообщества и вы можете установить и использовать эти сниппеты в пару кликов. Как я уже ранее упомянул, вы можете создать собственный сниппет с пользовательским функционалом, если нет аналогичных доступных сниппетов, поэтому всё зависит от ваших способностей в программировании на PHP и знания MODx API. Поскольку мы здесь ведём разговор о курсе для новичков, то сосредоточимся на существующих сниппетах, но кроме этого я потом сделаю серию уроков, посвященных созданию собственных сниппетов.

Как установить сниппет в MODx Revolution

Если до этого вы использовали MODx Evolution, то вы должны знать, что вместе с установкой ядра Evolution в комплекте идет несколько сниппетов по умолчанию. Чтобы добавить другие сниппеты, вам нужно скачать их с официального сайта MODx, загрузить на сервер, а дальше вручную скопировать и вставить некоторый код для создания сниппета. В Revolution всё намного проще, базовая установка движка не содержит никаких сниппетов, всё что нужно – это зайти в менеджер сайта, дальше System->Package Management нажать Download Extras, и далее выбрать необходимый сниппет, загрузить его и установить. Все просто!

Установка сниппета в MODx Revolution

Тут я не буду останавливаться, более детально этот вопрос был освещен в 3 уроке, его можно почитать по этой ссылке Урок 3. Базовая настройка и установка дополнений

Простейший вызов сниппета

После установки необходимых сниппетов, следующим шагом является вызов сниппета в нашем шаблоне или странице – там где вам нужна дополнительная функциональность. Базовым синтаксисом вызова сниппета является: &#91&#91snippetName&#93&#93. Если ожидается, что сниппет будет генерировать различные результаты для разных пользователей или разных сессий, таких как агрегаторы или RSS лента, то тогда вам нужно вызывать некешируемый сниппет и это вы делаете просто поставив восклицательный знак перед сниппетом: &#91&#91!snippetName&#93&#93

Базового вызова сниппета не достаточно для использования необходимой функциональности. Для этой цели сниппеты имеют свойства, некоторые из которых обязательные, а некоторые и нет. В большинстве случаев сниппеты также дают вам возможность задать стиль и шаблон своего вывода.

Большинство сниппетов в репозитории MODx хорошо задокументированны и положительно стремление всегда заглядывать в MODx документацию. Каждому сниппету посвящен отдельный раздел в форумах MODx, где можно задать вопрос и получить поддержку и квалифицированный ответ от разработчика сниппета. Если у вас проблемы со сниппетом, то эти форумы – лучше место, где можно получить ответ на вопрос либо решить возникшую проблему, 100% у кого-то она уже была до вас .

Что дальше?

Как я уже говорил – это всего лишь общее вступление. Реально рассматривать сниппеты мы начнем лишь на следующем занятии. А начнем мы с Wayfinder, сниппета который занимается построением несортированных списков и является идеальным инструментом для создания меню. Мы будем использовать Wayfinder для замены статического меню нашего сайта динамическим, которое будет отображать необходимые названия страниц.

Итак для работы вам необходимо установить сниппет Wayfinder в ваш сайт на MODx Revolution и таким образом подготовится к следующему уроку.

Рекомендую для прочтения

  • Урок xPDO. Сниппет вывода родственных ресурсов
  • Синтаксис тегов MODX Revolution
Олег

25.11.2011 19:04 Подскажите пожалуйста
Всё шло хорошо до снипетов.
Не удаётся установить пакеты, СИСТЕМА-Управление пакетами-Добавить новый пакет/Скачать дополнения. Выдаётся ответ — «Произошла ошибка при подключении к поставщику:MODX получил пустой ответ от поставщика. Пожалуйста, проверьте URL-адрес поставщика и убедитесь, что поставщик является корректным поставщиком.» Попытка добавить новых поставщиков ничего не меняет.
Подскажите, что делать?

Viktorminator

25.11.2011 19:16 проверить права доступа к папкам, созданы ли папки assets, assets/components, какой сервер локальный(XAMPP, WAMP, DeNWeR) или виртуальный?

Олег

25.11.2011 19:50 Извините, что в первый раз кратко. Система установлена на бесплатном хостинге «Вагончик» ( никаких проблем при размещении сайтов раньше не было)
Права доступа на assets -755, assets/components — тоже 755.

Viktorminator

25.11.2011 20:38 Папки /assets/cache (и их файлы), /assets/export и /assets/images папки права 777.

Олег

25.11.2011 22:51 ОК. Спасибо

katerina

17.01.2012 14:48 у меня тоже нет возможности установить пакеты. Кнопка «Загрузить дополнения» неактивна! И вверху написано: Предупреждение!cURL должен быть установлен и настроен как расширение PHP, если вы собираетесь использовать управление пакетами.
Я работаю на Denwer, где копать — не пойму

Viktorminator

17.01.2012 19:01 Проверьте есть ли соединение с провайдером пакетов — команда «tracert rest.modx.com». Если есть файервол — выключите его.
В вопросах указывайте версию php и modx.

sergey

05.02.2012 20:39 2katerina
Так чего непонятного, надо подключить библиотеку cURL. Как — это уже другой вопрос.

Юрий

18.03.2012 21:51 Как подключить библиотеку cURL?

Филипп

23.05.2012 17:06 Z:\usr\local\php5\php.ini
Раскомментируйте строчу extension=php_curl.dll в файле php.ini и перезагрузите сервер.

Павел Савин

27.08.2012 11:37 А что делать если я уже скачал cURL и установил. Но строчка эта как была так и осталась, и в php.ini нету такой строчки с экстеншеном. Тупо нету. Я её даже пробовал сам дописывать. Бесполезно 🙁

Павел Савин

27.08.2012 11:38 А что делать если я уже скачал cURL и установил. Но Warning этот как был так и остался, и в php.ini нету такой строчки с экстеншеном. Тупо нету. Я её даже пробовал сам дописывать. Бесполезно 🙁

pcheliakov

28.03.2013 19:37 Не могу поставить плагины. php v. 5.3.8, MODx Revolution MODX Revolution 2.2.6-pl (traditional)
Вручную, локально — ошибка — Рабочее пространство не найдено.
online — файлы скачиваются, но бесконечно идёт процесс Загружается.

Viktor Minator

28.03.2013 22:01 попробуйте ниже версию пхп

pcheliakov

30.03.2013 15:34 Пришлось ставить на OPEN SERVER. Только так всё заработало. И кстати на версию PHP 5.2.17. На xampp и на мною установленной связке PHP APACHE MSSQL не работала, хоть ты тресни!

  • Урок 1. Вступление
  • Урок 2. Установка MODx Revolution
  • Урок 3. Базовая настройка и установка пакетов
  • Советы для начинающих работу с MODX
  • Советы для начинающих веб-разработчиков
  • Урок 4. Работа над шаблонами
  • Урок 5. Чанки MODx Revolution
  • Урок 6. Переменные шаблона
  • Урок 7. Сниппеты
  • Урок 8. Вывод меню с помощью Wayfinder
  • Урок 9. Создание контакт-формы с помощью FormIt
  • Урок 9-2. Добавление поля вложения в FormIt
  • Урок 9-3. Formit с проверкой полей на jQuery
  • Урок 10. Вывод контента сниппетом getResources
  • Урок 11. Создание карты сайта sitemap.xml
  • Урок xPDO 1. Создание классов из таблиц базы данных
  • Урок 12. Основы использования getPage
  • Урок 13. Создание голосования с помощью Polls
  • Урок 14. Использование MIGX. Создание таблицы
  • Урок 15. Создание слайдера с помощью MIGx TV
  • Урок 16. MIGX галерея с AJAX загрузкой
  • Урок 17. Создание RSS-ленты сайта
  • Урок 18. Создание галереи в MODX Revolution
  • Урок 19. Создание формы поиска с выпадающими подсказками
  • Урок 20. Madrass CSS3 паттерн в MODX стиле
  • Урок 21. AJAX загрузка Quip комментариев
  • Урок 23. Создание удобной формы входа с помощью Login
  • Создание компонента Qaptcha в MODX Revolution
  • Урок 25. Создание AJAX поиска на сайте
  • Урок 26. Создание AJAX формы отправки сообщений
  • Урок 28. Работа с csv
  • Урок 29. Экспорт ресурсов Modx Revo c TV в csv файл
  • Урок 29. AJAX загрузка ресурсов
  • Урок 30. Вывод отзывчивой галереи в MODX
  • Ext JS урок 1. Ваш первый extJS скрипт. Окна сообщений
  • Ext JS урок 2. Использование AJAX
  • Ext JS урок 3. Анимация
  • Ext JS урок 4. Манипулирование с узлами

Что такое сниппет

Сниппет — это блок PHP-кода, который может быть вызван из MODX для выполнения определенной функции. Сниппеты могут использоваться для динамической генерации контента, выполнения пользовательских запросов или выполнения вычислений. Сниппеты работают все время пока запущен сайт и могут быть вызваны из шаблонов или ресурсов.

Вот несколько примеров того, как сниппеты используются в MODX:

  • Проверка формы: Сниппет может быть использован для проверки введенных пользователем данных в форме, гарантируя, что все обязательные поля заполнены и что входные данные представлены в правильном формате.
  • Изменение размера изображения: Сниппет можно использовать для автоматического изменения размера изображений до определенного размера, гарантируя, что они быстро загружаются и оптимизированы для отображения на разных устройствах.
  • Меню сайта: С помощью сниппета можно создавать меню, которое выделяет определенные страницы или контент на сайте.
  • Аутентификация пользователя: Сниппеты используются для управления функциями аутентификации пользователя и входа в систему, гарантируя, что только авторизованные пользователи смогут получить доступ к определенному контенту или функциям на сайте.
  • Интеграция с базой данных: Сниппеты помогают в интеграции MODX с внешней базой данных, что позволяет осуществлять более сложное управление данными и манипуляции с ними.

Создание кастомных сниппетов

Чтобы создать свой сниппет в MODX, выполните следующие действия:

  1. Войдите в MODX manager и перейдите во вкладку «Элементы».
  2. Нажмите кнопку «Создать сниппет».

  1. Введите имя и описание для сниппета.
  2. Добавьте PHP-код для сниппета в поле «Код сниппета».
  3. Настройте любые дополнительные параметры для сниппета.
  4. Сохраните сниппет.

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

Чтобы вызвать этот фрагмент из ресурса или шаблона, используйте следующий вызов фрагмента:

[[!customSnippet]]

Замените «customSnippet» на название вашего сниппета.

Передача параметров сниппету

В MODX передача параметров сниппету — это способ настроить его поведение и выходные данные на основе различных значений или входных данных. Параметры могут быть переданы фрагменту несколькими способами:

Изначально заданные значения:

Параметры могут быть заданы непосредственно в вызове сниппета:

[[mySnippet?param1=value1¶m2=value2]]

В этом примере mySnippet — это имя фрагмента, а param1 и param2 — это имена параметров с их соответствующими значениями.

Поля ресурсов

Параметры также могут быть переданы с использованием значений из определенного поля ресурсов:

[[mySnippet?param1=`[[*resource_field]]`]]

Это код передаст значение поля resource_field в качестве параметра param1 в фрагмент mySnippet.

Системные настройки

Параметры также могут быть переданы с использованием значений из системных настроек:

[[mySnippet?param1=`[[++system_setting_key]]`]]

Этот код передаст значение системного параметра system_setting_key в качестве параметра param1 в фрагмент mySnippet.

Получение доступа к параметрам

Как только параметры переданы фрагменту, к ним можно получить доступ в коде сниппета, используя метод $modx->getOption(). Например, чтобы получить значение параметра param1 в коде фрагмента, вы могли бы использовать этот код:

$param1 = $modx->getOption('param1', $scriptProperties, 'default_value');

В этом коде param1 — это имя параметра, ScriptProperties — это массив всех параметров, переданных фрагменту, а default_value — значение по умолчанию, которое используется, если параметр не указан.

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

Пример передачи параметров в сниппет

Вот более пример того, как использовать параметры в сниппете MODX:

Допустим, у вас есть фрагмент под названием mySnippet, который принимает два параметра: num1 и num2. Цель сниппета состоит в том, чтобы сложить эти два числа вместе и вернуть результат. Вот как может выглядеть фрагмент кода:

getOption('num1', $scriptProperties, ''); $num2 = $modx->getOption('num2', $scriptProperties, ''); if (!is_numeric($num1) || !is_numeric($num2)) < return 'Error: Invalid input'; >$result = $num1 + $num2; return $result; ?>

В этом коде мы используем метод getOption для извлечения значений параметров num1 и num2 из массива $ScriptProperties. Если эти значения не являются числовыми, мы возвращаем сообщение об ошибке. В противном случае мы складываем два числа вместе и возвращаем результат.

Чтобы вызвать этот фрагмент и передать значения для num1 и num2, вы должны использовать следующий код:

[[mySnippet?num1=5&num2=10]]

Это вызвало бы фрагмент mySnippet с num1, равным 5, и num2, равным 10. Фрагмент кода сложит эти два числа вместе и вернет результат, который в данном случае будет равен 15.

Заключение

Пользовательские сниппеты — это мощная функция MODX, которая может помочь вам добавить дополнительную функциональность на ваш сайт. Изучив основы, вы можете создать свои собственные пользовательские фрагменты и начать использовать их в шаблонах и ресурсах. Благодаря возможности передавать параметры вы можете сделать свои фрагменты еще более универсальными и полезными.

Сниппеты

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

  • Jens Wittmann – Gestaltung & Entwicklung
  • Dannevang Digital
  • Digital Penguin
  • deJaya
  • Following Sea
  • CrewMark
  • Anton Tarasov
  • eydolan
  • Raffy
  • Murray Wood
  • Lefthandmedia
  • YJ

$396 per month—let’s make that $500!

Сниппеты — это способ, с помощью которого MODX позволяет вам запускать динамический код PHP на любой из ваших страниц. Они могут предоставлять такой контент как меню, списки блогов или новостей, поиск и любые другие функциональные возможности на основе форм и все остальное, что ваш сайт должен генерировать по требованию.

Использование сниппетов¶

После того, как у вас установлен Сниппет, вы можете использовать его, просто поместив его теги в шаблон, блок или TV или содержимое документа, где бы вы ни хотели, чтобы вывод Сниппета отображался.

[[MySnippet]] 

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

[[!MySnippet]] 

Свойства сниппета¶

Сниппеты могут иметь Свойства, которые могут быть передана в вызове Сниппета, например так:

[[!Wayfinder? &startId=`0` &level=`1`]] 

Вы также можете объединить эти свойства в Наборы свойств, которые представляет собой динамический набор свойств, которые могут быть присоединены к любому сниппету (или элементу в этом отношении). Это позволяет вам совместно использовать общие конфиги свойств в вызове сниппета в одном месте.

Скажем, у вас есть набор свойств под названием ‘Menu’ с startId установленным в 0 и level установленным в 1:

[[!Wayfinder@Menu]] 

Сниппет автоматически загрузит эти свойства в сниппет. И даже эти свойства могут быть переопределены:

[[!Wayfinder@Menu? &level=`2`]] 

который переопределит установленное значение level на 1, установив вместо этого 2.

Установка Сниппетов¶

Вы также можете скачать и установить сниппеты через Управление пакетами. Смотрите руководство по установке пакетов для получения дополнительной информации.

Смотрите также¶

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

  • Jens Wittmann – Gestaltung & Entwicklung
  • Dannevang Digital
  • Digital Penguin
  • deJaya
  • Following Sea
  • CrewMark
  • Anton Tarasov
  • eydolan
  • Raffy
  • Murray Wood
  • Lefthandmedia
  • YJ

$396 per month—let’s make that $500!

  • Улучшить эту страницу
  • Сообщить о проблеме на этой странице

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *