Сниппеты MODx, что это такое? Давайте поговорим об этом в данной статье, разберемся, что это такое, как это работает и некоторые другие полезные фичи, которые можно реализовать.
- Общее представление
- Что такое сниппет?
- Как они работают?
- Передача значений в сниппет
- Чтение переменных сниппета
- Взаимодействие с базой данных в сниппетах
Общее представление
Сниппеты – это элемент, с помощью которого MODx позволяет вставлять динамический PHP-код в любое место на ваших страницах. Они являются основным средством разработки для большинства веб-мастеров.
Что такое сниппет?
Согласно одному из определений, "сниппет" – это "короткий многократно используемый фрагмент исходного кода". Некоторым людям трудно отличить сниппет от чанка. Но в процессе работы различия будут видны (можете посмотреть, что такое чанк).
Как они работают?
Большинство сниппетов кэшируются, это означает, что они хранятся как временная динамическая функция в кэше. Если они помечены как некэшируемые, то они не анализируются до тех пор, пока синтаксический анализатор не выполнит все другое кэшированное содержимое.
[[snippet]] — кешируется, или [[!snippet]] - не кешируется.
Вот простой пример того, как может выглядеть сниппет:
<?php return 'Hello, World!'; ?>
Если вы назвали сниппет “helloWorld", вы можете вызвать этот сниппет с помощью [[helloWorld]] в ресурсах, шаблонах или чанках. Можно, также, вызвать сниппет из другого сниппета.
Передача значений в сниппет
Значения передаются в сниппет с помощью измененной нотации типа веб-формы CGI, которая следует за именем сниппета. Если Ваш сниппет был назван "mySnippet", вы можете вызвать его, используя следующий код:
[[!mySnippet? &input=`Hello World`]]
И код для Вашего сниппета, допустим, выглядит так:
<?php return 'My input was:' $input; ?>
Обратите внимание: имена переменных в вызывающем коде должны точно совпадать с именами переменных в сниппете. Во-вторых, не забывайте '&' перед именами переменных. Обратите внимание: обратные, а не одиночные кавычки!
Чтение переменных в сниппетах
Как правило, вы можете прочитать переменные, сославшись на имена, которые были переданы: &someParameter в вызове преобразуется в $someParameter в коде сниппета.
Вы также можете прочитать все параметры, с помощью встроенного массива $scriptProperties. Это полезно, если Ваш сниппет принимает переменные параметры – в таком случае он использует функцию FUNC_GET_ARGS() PHP.
Например, если Вы вызываете сниппет с помощью такого кода:
[[!mySnippet? &x=`x-ray` &y=`yellow`]]
Тогда массив $scriptProperties будет содержать это:
Array( 'x' => 'x-ray', 'y' => 'yellow' )
Взаимодействие с базой данных в сниппетах
Доступ на уровне базы данных в MODx опирается на Object Relational Model (ORM), вызывает xPDO для подключения к базе данных, так что вам не придется писать необработанных запросов к базе данных, что пришлось бы сделать в других CMS. Обычно, вы будете использовать данные из базы, используя несколько объектов MODx и методов, таких как getobject и getCollection. Это зависит от базовой платформы xPDO.