Как создать свой сниппет в modx

Как вывести дополнительное поле в сниппет modx

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

Как создать свой сниппет modx

Прямо в чанке, как я уже писал, php-код вызвать нельзя. Поэтому создаем сниппет. Для этого зайдите в админку modx, и нажмите Создать новый сниппет (на «плюс» или правой кнопкой мыши).

Как создать свой сниппет в modx
Как создать свой сниппет в modx

Дальше напишите php-код.

Как получить дополнительные поля tv modx в сниппете

Я находил несколько решений в интернете. Некоторые советовали получать сначала ИД документа, потом вызывать дополнительные поля, тоже по ИД. Но самый удачливым решением для меня был следующий код:

который при вызове чанка/сниппета автоматически передавал данные этого доп.поля документа в переменную. Тут не нужно было получать ИД страницы, а значение доп.поля можно получить по его имени (urlfromtv). Весь мой код выглядел примерно вот так:

Я получал данные в переменную url, дальше разделял через explode строку в переменной link2 и выводил данные (в примере, домен сайта) link2[2] (третий элемент в массиве после разделителя explode).

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

После этого не забудьте вызвать в чанке сниппет. Делается это просто:

У меня данные выводились на страницы через отдельный шаблон. Если Вам нужно на одной странице просто вывести сниппет, то вызывайте сразу сниппет.

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

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

восемнадцать − двенадцать =

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">