Сниппеты 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.