Работа с PHP шаблонизатором в UMI CMS

25.02.2018

Разрешенные способы изменения системы

В целях расширения или изменения в системе разрешается вносить изменения в следующие файлы и папки:

  • Добавление методов в файл /classes/modules/custom.php
  • Добавление методов в файлы модулей /classes/modules/имя_модуля/custom.php и /classes/modules/имя_модуля/__custom_adm.php
  • Добавление прав на методы в файлах permissions.custom.php
  • Помещение кода в /templates/{имя_шаблона}/classes/modules/{имя_модуля}/class.php
  • Создание и подключение собственных классов через файл /classes/modules/имя_модуля/includes.php (не работает для модуля emarket, а также на новой реализации модулей; используйте механизм autoload)
  • Добавление расширений существующих модулей через файлы в директории /classes/modules/{имя_модуля}/ext
  • Редактирование языковых файлов i18n.{язык}.php и lang.{язык}.php
  • Добавление способов оплаты в /classes/modules/emarket/classes/payment/systems/
  • Добавление способов доставки в /classes/modules/emarket/classes/delivery/systems/
  • Добавление механизмов скидок в /classes/modules/emarket/classes/discounts/rules/
  • Добавление модификаторов скидок в /classes/modules/emarket/classes/discounts/modificators/
  • Добавление нового шаблона дизайна административной панели /styles/skins/{имя_шаблона}
  • Добавление форматов экспорта данных в /classes/system/subsystems/export/exporters/
  • Добавление сплиттеров в /classes/system/subsystems/import/splitters/
  • Создание собственного модуля к системе
  • Кастомизация шаблонов в /xsl/import/custom и /xsl/export/custom
  • Назначение обработчиков событий в файлах /classes/modules/{имя_модуля}/custom_events.php
  • Изменение шаблонов в папке /templates/{имя_шаблона}/
  • Изменение настроек системы в файле /config.ini
  • Изменение настроек web-сервера в файлах .htaccess
  • Изменение стандартного механизма вывода карты сайта и /robots.txt через перенаправление запросов на созданные файлы robots.php и sitemap.php

Переход с XSLT шаблонизатора на PHP

В этом разделе приведено сопоставление возможностей XSLT и PHP шаблонизатора.

XSLT-шаблонизатор

PHP-шаблонизатор

uobject://123

$this->getObjectById(123)

upage://(/contacts/)

$this->getPageByPath(‘/contacts/’);

upage://159

$this->getPageById(159)

usel://info-pages

$this->usel(‘info-pages’)

udata://menu/draw/hmenu

$this->macros(‘menu’, ‘draw’, array(‘hmenu’))

В XSLT шаблонизаторе для локализации использовались файлы constants.dtd со списком ENTITY, в шаблоне вывод меток был вида &label-name;. В PHP шаблонизаторе для перевода меток необходимо использовать метод translate(). Пример использования:

$this->translate(‘name-label’);

Файл i18n.ru.php с метками возвращает ассоциативный массив, в котором ключом является название метки, а значением перевод, соответствующий метке, например:

return array(
  'search-default-text'=>'Поиск',
  'yes'=>'Да',
  'no'=>'Нет',
  'welcome'=>'Добро пожаловать,'
);

Описание API

Из коробки в PHP-шаблонизаторе доступны следующие helper’ы:

  • mixed macros($module, $method, $arguments = array(), $extProps = array(), $extGroups = array()) выполняет вызов макроса

  • umiHierarchyElement getPageByPath($path) возвращает страницу по её url

  • umiHierarchyElement getPageById($id) возвращает страницу по её Id

  • string translate($label, $path = false) возвращает перевод языковой метки

  • umiObject getObjectById($id) возвращает объект по ID

  • array usel($uselName, $params = null) выполняет команду usel

  • mixed getRequest($name, $default = null) возвращает Request-параметр

  • mixed getRawRequest($name, $default = null) возвращает необработанный Request-параметр

  • mixed getCommonVar($name) возвращает запрошенную общую переменную

  • mixed setCommonVar($name, $value) устанавливает общую переменную

  • mixed isSetCommonVar($name) проверяет существование общей переменной

  • mixed parseTplMacros($value, [$elementId = false, $objectId = false]) выполняет tpl макросы

Rate this post

Comments 0

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

Your email address will not be published. Required fields are marked *