Сниппеты MODx - статья от web студии Witech

G
N
I
D
A
O
L

Статья

image news
view240

Сниппеты MODx

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