UMIhelp

Разработка сайта на UMI.CMS => Шаблоны TPL => Тема начата: korogan от 07 Декабря 2011, 08:24:00

Название: Шаблонизатор в UMI CMS 2.8.5
Отправлено: korogan от 07 Декабря 2011, 08:24:00
Добрый день!

Есть ли у кого какая либо инструкция по нововведению UMI.
Давайте тут делиться опытом.

Что нужно что бы сделать шаблон:

1. Создаем в корне сайта папку templates

2. Пути указваем так
/templates/
/templates/{template_name}/
/templates/{template_name}/images/
/templates/{template_name}/css/
/templates/{template_name}/js/
/templates/{template_name}/xslt/ или
/templates/{template_name}/tpls/ в зависимости от типа шаблонизатора
/templates/{template_name}/classes/modules/{module_name}/index.php (кастомы по модулям)
где {template_name} название папки самого шаблона

3.  В саму папку templates нужно скопировать папки
css
images
js
tpls или xsltTpls - в зависимости от шаблонизатора
umaps

4. Прописываем в настройках модуля Структура наш шаблон
Название: Re:Шаблонизатор в UMI CMS 2.8.5
Отправлено: grave от 13 Декабря 2011, 22:26:38
4. Прописываем в настройках модуля Структура наш шаблон
как именно прописываем?
/templates/{template_name}/xslt/{name}.xsl ?
Название: Re:Шаблонизатор в UMI CMS 2.8.5
Отправлено: korogan от 13 Декабря 2011, 22:39:06
Нет
За место {template_name} название папки шаблона
Остальное как обычно

Это в самих файлах

В модуле пишем как обычно index.tpl
сохраняем Потом жмем изменить.
Там уведите
Название: Re:Шаблонизатор в UMI CMS 2.8.5
Отправлено: admin от 14 Декабря 2011, 06:51:38
ну и не забываем про config.ini, опцию use-old-templater подробнее читаем тут Новый формат хранения шаблонов (http://help-dev.umi-cms.ru/chapter.newTemplates.html)
Название: Re:Шаблонизатор в UMI CMS 2.8.5
Отправлено: Vladimir от 14 Декабря 2011, 09:37:39
А кто-то уже пробовал так распределять кастомные макросы? Интересно, можно ли перезагрузить системные методы своими?
Название: Re:Шаблонизатор в UMI CMS 2.8.5
Отправлено: admin от 14 Декабря 2011, 10:05:42
еще не пробовал)
Название: Re:Шаблонизатор в UMI CMS 2.8.5
Отправлено: korogan от 28 Декабря 2011, 09:52:38
После того как скопировал папку  вылазит ошибка

use-old-templater = "0" - изменил

Fatal error: Cannot redeclare class content in /templates/nz-music/classes/modules/content/class.php on line 437

Папка с шаблоном содержит
classes/modules
css
images
js
tpls
umaps
usels

Как бороться?
Как только скопировал папку classes/modules вылезла ошибка
Название: Re:Шаблонизатор в UMI CMS 2.8.5
Отправлено: studiarim от 15 Февраля 2012, 00:20:20
Решил попробовать новый метод . Скопировал все по инструкции. 
classes/modules
css
images
js
tpls
umaps
usels

use-old-templater = "0" - изменил

В настройках прописал имя шаблона - имяпапки в templates

к сожалению даже ошибки не выдает .. просто белый лист . Кто подскажет , что я мог сделать не так .
система пока в куплена - 45 дней осталось , может из за этого?
заметил так же что если я переименовываю templates - например в !templates  .. то система автоматом загружает шаблон по старой схеме , даже при use-old-templater = "0"  ..   Подскажите пожалуйста ???? Очень удобно будет при такой схеме , много переспектив открывается.
Название: Re:Шаблонизатор в UMI CMS 2.8.5
Отправлено: korogan от 15 Февраля 2012, 10:01:48
classes/modules - удали
и поставь на use-old-templater = "1"

Пока сам не разобрался но при копировании папки classes/modules и когда стоит use-old-templater = "0"  - шаблон не работает.

Попробуй, должно заработать.
Название: Re:Шаблонизатор в UMI CMS 2.8.5
Отправлено: BaceH от 15 Февраля 2012, 11:18:22
classes/modules удалять совсем не обязательно, важно чтоб они были пустые, если быть точнее то в них размещаются бывшие кастомные макросы по новой структуре. http://api.umi-cms.ru/module_dev.newTemplates.html
а наличие use-old-templater с каким либо параметром или полное отсутствие данного параметра никак на шаблон не влияет.
кстати, при новой структуре старые кастомные файлы работают.
Название: Re:Шаблонизатор в UMI CMS 2.8.5
Отправлено: studiarim от 16 Февраля 2012, 03:06:05
Спасибо за ответы .  выходит что если используешь стандартный функционал , то classes/modules копировать не обязательно ..
У меня система шаблон нашла, но возникла не стыковка. Мне кажется стоит это обсудить . Шаблон потерял относительные ссылки.  Заработал только после добавления конструкции http://%domain%/templates/{имя шаблона}  и далее css и js  // может где то что то просто нужно в настройках поменять или в ini ?

use-old-templater = "0" стоит 0
Название: Re:Шаблонизатор в UMI CMS 2.8.5
Отправлено: ivan23 от 07 Марта 2012, 00:34:35
Что то нифига не получается чтобы в папке templates шаблон открывался
показывает чистый лист.
версия 2.8.5 localpack - охотницы, шаблоны tpl

Пишу пути в http://localhost/admin/content/config/
http://localhost/admin/content/tpl_edit/1/?domain=localhost
имя файла /templates/testoviyshablon/tpls/content/index.tpl
в config.ini поставил use-old-templater = "0"
ставил и 1
все папки скопировал в соответствии с описанием выше
classes/modules (пустые папки)
css
images
js
tpls
umaps
usels

- больт!
что не так делаю???
Название: Re:Шаблонизатор в UMI CMS 2.8.5
Отправлено: Vladimir от 30 Марта 2012, 11:46:26
Увы, оказалось, что переопределить системные методы нельзя(
Даже если я дублирую content::menu все равно вызывается оригинальная версия.
А вызов %content_custom menu()%  проваливается.

Жжжаль( я так надеялся
Название: Re:Шаблонизатор в UMI CMS 2.8.5
Отправлено: Vladimir от 30 Марта 2012, 13:18:00
Вот и еще одна неприятность.
В старом варианте было удобно запрашивать аяксом данные в виде:
public function loadContent() {
    def_module::flush('555');
}

т.о. при обращении по урлу /content/loadContent/ дается ответ '555'.
Теперь - фиг. Сперва отрабатывает основной шаблон домена! Зачем???
Название: Re:Шаблонизатор в UMI CMS 2.8.5
Отправлено: admin от 30 Марта 2012, 13:24:37
скоро уже должен появиться следующий релиз, думается мне, что там будут пофиксены все эти неприятные моменты связанные с новым шаблонизатором
Название: Re:Шаблонизатор в UMI CMS 2.8.5
Отправлено: Vladimir от 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
Название: Re:Шаблонизатор в UMI CMS 2.8.5
Отправлено: admin от 02 Апреля 2012, 09:51:18
не знаю поможет ли это проблемам которые описывались выше, но добавлю что при работе с ajax полезно отключать строчку о генерации страницы и сколько времени это заняло. Для этого идем в /config.ini и там в секции [kernel] находим и меняем (или создаем если не нашли) строчку show-generate-time = "0"
Название: Re:Шаблонизатор в UMI CMS 2.8.5
Отправлено: Vladimir от 02 Апреля 2012, 11:42:56
Вот что интересно, за всю жизнь ни разу не сталкивался с такой проблемой.
Может быть, если у кого будет время, приведите пример как вы действуете, что впечатывается время генерации? Мне для сравнения, может, я что-то не так делаю и есть более простой способ?

+ исправил предыдущее свое сообщение
Название: Re:Шаблонизатор в UMI CMS 2.8.5
Отправлено: admin от 02 Апреля 2012, 16:52:49
это если делать ajax запрос через udata протокол и сразу его преобразовывать Например, чтобы получить список подразделов бокового меню состоящего из разделов каталога "/udata/catalog/getCategoryList/?transform=modules/catalog/left-menu.xsl"
Название: Re:Шаблонизатор в UMI CMS 2.8.5
Отправлено: Vladimir от 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

Мда...  такое впечатление, что на юми в реальности никто ничего, кроме нескольких человек, не разрабатывает. Не верю, что до меня никому не требовалось работать с модулем пользователи!
Название: Re:Шаблонизатор в UMI CMS 2.8.5
Отправлено: admin от 27 Июня 2012, 12:09:40
красивая картина, а что именно писалось и куда?
Название: Re:Шаблонизатор в UMI CMS 2.8.5
Отправлено: Vladimir от 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)))))

Название: Re:Шаблонизатор в UMI CMS 2.8.5
Отправлено: Vladimir от 27 Июня 2012, 17:52:59
Не верьте написанному в документации
<?php
$permissions['content'][] = 'testMenu';
?>

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