Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Отложенный платеж и php шаблонизатор

Автор exbbРаздел Шаблоны PHP

Ответов: 0
Просмотров: 1424
Последний ответ 11 Мая 2016, 12:20:32
от exbb
Как часто Вы используете TPL шаблонизатор ?

Автор pandusРаздел Шаблоны TPL

Ответов: 1
Просмотров: 1575
Последний ответ 23 Мая 2017, 20:16:39
от aghigay
PHP шаблонизатор, кто то уже пользуется?

Автор atachРаздел Настройка системы и модулей

Ответов: 6
Просмотров: 5060
Последний ответ 31 Марта 2016, 09:59:35
от admin

0 Пользователей и 1 Гость просматривают эту тему.

*

Vladimir

  • ****
  • 279
  • +48/-0
    • Просмотр профиля
Re:Шаблонизатор в UMI CMS 2.8.5
« Ответ #15 : 30 Марта 2012, 21:25:53 »
Исправлено 02.04.2012

Новый шаблонизатор и аякс.

1. Теперь всегда при обращении по урлу  /имя_модуля/имя_метода/ отрабатывает  шаблон по умолчанию Даже если переключиться в старый формат шаблонов. Зачем такое сделаи я не понимаю, но увы.
Получается, кердык всем старым сайтам.

Избавиться от этой напасти можно заменой урла на  /имя_модуля/имя_метода.json или  /имя_модуля/имя_метода.xml
слава богу, юмисофты догадались не отдавать автоматом и заголовки.

Вызов в конце метода def_module::flush($result_string, $headers); отдает нужный результат без дополнительного оформления.

2. Инициализация кастомных классов.

Пример http://api.umi-cms.ru/module_dev.newTemplates.html

Здесь оказался нюанс.
Если инициировать некую переменную в конструкторе класса
private $e;
public function __construct() {
$this->e = '445544';
}
то к ней нельзя будет обратиться из других методов, получаем ошибку "вызов необъявленного свойства".

Инициализацию ее следует поместить в публичный метод и вызывать этот метод из конструктора, используя ссылку на родительский класс $self

private $e;
public function __construct($self) {
$self->setIniVals();
}
public function setIniVals(){
$this->e = '445544';
}

При этом декларируемая переменная может быть private, но медод, ее инициирующий обязательно public

Особенность.
Учите, что инициализация кастомного класса происходит даже тогда, тогда интуитивно этого не ожидается, например, при вызове autothumbs.php
« Последнее редактирование: 02 Апреля 2012, 12:31:19 от Vladimir »

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Шаблонизатор в UMI CMS 2.8.5
« Ответ #16 : 02 Апреля 2012, 09:51:18 »
не знаю поможет ли это проблемам которые описывались выше, но добавлю что при работе с ajax полезно отключать строчку о генерации страницы и сколько времени это заняло. Для этого идем в /config.ini и там в секции [kernel] находим и меняем (или создаем если не нашли) строчку show-generate-time = "0"

*

Vladimir

  • ****
  • 279
  • +48/-0
    • Просмотр профиля
Re:Шаблонизатор в UMI CMS 2.8.5
« Ответ #17 : 02 Апреля 2012, 11:42:56 »
Вот что интересно, за всю жизнь ни разу не сталкивался с такой проблемой.
Может быть, если у кого будет время, приведите пример как вы действуете, что впечатывается время генерации? Мне для сравнения, может, я что-то не так делаю и есть более простой способ?

+ исправил предыдущее свое сообщение
« Последнее редактирование: 02 Апреля 2012, 11:44:34 от Vladimir »

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Шаблонизатор в UMI CMS 2.8.5
« Ответ #18 : 02 Апреля 2012, 16:52:49 »
это если делать ajax запрос через udata протокол и сразу его преобразовывать Например, чтобы получить список подразделов бокового меню состоящего из разделов каталога "/udata/catalog/getCategoryList/?transform=modules/catalog/left-menu.xsl"

*

Vladimir

  • ****
  • 279
  • +48/-0
    • Просмотр профиля
Re:Шаблонизатор в UMI CMS 2.8.5
« Ответ #19 : 27 Июня 2012, 11:48:50 »
Просто шарман)
Решил использовать шаблонизатор во всей красе и расширить модуль users.
class users_custom extends users   и т.д.
И открывается мне картина маслом

Notice: Constant SV_GROUP_ID already defined in ***on line 11
Notice: Constant SV_USER_ID already defined in /*** on line 12

Мда...  такое впечатление, что на юми в реальности никто ничего, кроме нескольких человек, не разрабатывает. Не верю, что до меня никому не требовалось работать с модулем пользователи!

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Шаблонизатор в UMI CMS 2.8.5
« Ответ #20 : 27 Июня 2012, 12:09:40 »
красивая картина, а что именно писалось и куда?

*

Vladimir

  • ****
  • 279
  • +48/-0
    • Просмотр профиля
Re:Шаблонизатор в UMI CMS 2.8.5
« Ответ #21 : 27 Июня 2012, 17:35:56 »
Да ничего особенного не писалось.
Я взял инструкцию http://api.umi-cms.ru/module_dev.newTemplates.html
Сделал ей копи-пасте, заменил везде слово content на users.

После отсутствия результата заметил, что видимо, писать надо не
class content_custom extends def_module
а
class content_custom extends content
Не так ли?

Ок. Теперь заработало с выводом указанных предупреждений. Что и логично, конструкция extend пытается второй раз объявить константу.

Но это ладно, фиг с ними, можно отключить вывод ошибок или изменить системный класс.

НО:
читаем инструкцию:
Цитировать
Обратите внимание на порядок подключения файлов с правами: Первым делом система производит поиск в файле ~/classes/modules/{имя_модуля}/permissions.custom.php, затем в файле ~/classes/modules/{имя_модуля}/permissions.php, и только потом в ~/templates/{имя_шаблона}/classes/modules/{имя_модуля}/permissions.php.
Повторяем.
И видим, что файл
~/templates/{имя_шаблона}/classes/modules/{имя_модуля}/permissions.php
не читается!
Хотя в 2.8.5.1 все читалось.

Ох, вспоминается переход с 2.5 на 2.6)))))


*

Vladimir

  • ****
  • 279
  • +48/-0
    • Просмотр профиля
Re:Шаблонизатор в UMI CMS 2.8.5
« Ответ #22 : 27 Июня 2012, 17:52:59 »
Не верьте написанному в документации
<?php
$permissions['content'][] = 'testMenu';
?>

На самом деле писать надо копируюя синтаксис как в папке основных классов.