Freeocart

Проект свободной экосистемы Opencart

Как работает встроенная система шаблонизации в FOC:CSV

Краткий мануал по системе шаблонов, доступных в модуле FOC:CSV

Привет ребята! В одном из прошлых анонсов я писал что в модуле импорта/экспорта завезли поддержку «мультиколоночного преобразователя«, который управляется элементарной системой шаблонизации.

За таким сложным словом стоит весьма простое определение – мы берём контент нескольких колонок CSV, определённым образом обрабатываем их и складываем результат в одну ячейку.

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

В этом посте мы рассмотрим каждую из этих возможностей подробнее. А в конце я покажу как можно использовать шаблонизатор в своих проектах (хотя я не рекомендую этого делать — он очень ограничен)

Переменные

Для вывода значения переменной в шаблоне используется классическая конструкция – {{ VARIABLE }}. Если в VARIABLE скалярное значение, т.е. например, текст или число, то оно будет выведено. В случае, если вы пытаетесь интерполировать массив, будет выведено его JSON представление.

Циклы

Циклы используются для обхода массивов и имеют следующий синтаксис:

[@each (value,index) <= source]
// тело цикла, например {{ index }}
[@endeach]

// либо
[@each value <= source]
// тело цикла, например {{ loop.index }}
[@endeach]

Индексация начинается с 1, и доступна либо во второй переменной объявления цикла (в примере выше - index),  либо через специальную переменную - loop.index.

Функции

Синтаксис функций имеет вид:

[@fn FUNCTION_NAME | @argument] или [@fn FUNCTION_NAME | "Value"]

Обратите внимание, синтаксис с @ используется для подстановки значения переменной, в то же время в кавычках можно передавать своё значение. Например:

[@fn date | "Y-m-d"] будет обработано как date("Y-m-d")

[@fn md5 | @variable] будет обработано как md5($variables['variable'])

Список доступных для использования функций:

Список разрешённых функций находится в защищенном свойстве enabled_functions, добавление своих функций возможно только с помощью OCMod.

  • nl2br
  • date
  • htmlspecialchars
  • htmlentities
  • html_entity_decode
  • md5
  • lcfirst
  • ucfirst
  • strtolower
  • strtoupper
  • ucwords
  • trim
  • time
  • microtime
  • money_format
  • number_format

Использование шаблонизатора в своих проектах

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

Однако, если вы все же решили использовать FOCSimpleTemplater, вам нужно всего лишь подключить этот класс (system/library/FocSimpleTemplater.php), например, используя $this->load->library('FocSimpleTemplater'), и вызвать статический метод render, первым аргументом которого является шаблон, а вторым - хэш с переменными:

Приведённый выше код сгенерирует такое представление:

Как видите, в шаблонизации FOC:CSV нет ничего сложного, она изначально разрабатывалась чтобы быть максимально простой в использовании и не иметь никаких зависимостей.

Услуги Opencart программиста 💎

Ищете разработчика для работы с вашим проектом? 🤔


Просто напишите мне 🤝
я готов обсудить ваши задачи и предложить отличные условия сотрудничества! 👍