Forums / National / Russian / Идеи / новый скин админки

Macik
#34480 2012-05-31 10:27
#34478 Sergey:

ключевая строка из page.main.php, строки 148, 149:

$mskin = cot_tplfile(array('page', $cat['tpl']));
$t = new XTemplate($mskin);

Этот участок, подбирает правильный шаблон с учетом структурного расположения страницы. Так, для каждой категории, можно установить свой шаблон. Ясно, что в одной категории экстрополе это может быть размер монитора, а другом дата осуществления услуги. Налицо противоречие, которое можно просто избежать, если ввести похожую диллему подбора своего набора экстра полей. Каждому темплейту категории свой вариант  ввода (обработки) данных из экстрополей. 

Тут, если я правильно понял, надо заводить соответствующее количество экстра полей для страниц, пример: razmer, data, ves. А в нужной категории в шаблоне page.cat.tpl использовать только актуальные для данной категории: {PAGE_RAZMER}, {PAGE_DATA}, {PAGE_VES}.

#34478 Sergey:

Как это пристыкывать я не знаю.

Другая проблема это образ данных и их отображение. Поясню. Некоторые страницы можно использовать как шаблон текста. Это своеобразный темплейт, но на уровне самих страниц. В таком варианте экстрополя выступают как переменные данные. Т.е. возникает ситуация подбора таких страниц и связка их с вариантом экстрополей.  Поясняю, у вас магазин сковородок. Глупо описывать каждый раз диаметр очередной сковородки. Проще брать какое-то универсальное описание. За счет автомата подбора шаблонов, легко эту ситуацию вроде разрегулировать, но проще это сделать на самой странице - шаблоне.

Все равно не понял зачем «использовать страницы как шаблон текста», если для этого и существуют непосредственно шаблоны. (Единственной причиной может быть удобство редактирования страниц через Web, перед редактированием шаблонов)

1. [Рассматриваем случай, когда нет возможности написать плагин под это дело, и обходимся только шаблонами. Т.е. то , что описано мной в первом абзаце].

Есть список товаров, разделенный по группам (пример: кастрюли, телевизоры). Каждый товар представлен собственной страницей, и хранит набор своих свойств в экстраполях: diameter - диаметр кастрюли, diagonal - диагональ экрана. Категория товара определяется том, в какой категории страниц находится товар (категории как обычно создаем через админку).  При создании страницы необходимые экстра поля заполняются. Тут даже можно создать отдельные шаблоны для создания страниц в каждой категории, тогда можно не отображать «ненужные» для данной категории поля свойств.

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

 

2. Вариант когда некий шаблон вывода данных мы хотим сохранять как страницу (и редактировать через Web). Тут без небольшого плагина не обойтись (назовем его условно pagetemplate).

Входные данные и структура сайта аналогичны предыдущему примеру. Экстраполя. Структура категорий. Структура товаров - пункт 1. Создаем отдельную подкатегорию tpl в категрии «system», где будут лажеть страницы-шаблоны (в таком случае простой пользователь не будет иметь к ним доступа) - пункт 2. 

Страница шаблон будет иметь формат данных аналогичный, используемому в строковых ресурсах. Т.е. это любой текст со вставками специальных тегов (типа {$size_value}), которые будут заменены на соответствующие значения. Псевдоним (alias) страницы будет соответствовать коду категории товара (для сопоставления шаблона нужной категории). В строке ключевых слов укажем через запятую названия дополнительных полей, которые хотим использовать в данной категории, например для телевизора «ves, razmer». Иллюстрация. Готовые шаблоны для разных категорий - илл.

Плагин будет работать просто - в шаблон отображения страниц ставим тэг {PAGE_TEMPLATE} илл. (прим.: на иллюстрации шаблон из темы HTMLKickstart), который плагином будет заменяться на соотв. кусок текста взятый из страницы-шаблона (выбранной по соответствию псевдонима коду категории). Перед применением страницы-шаблона, поменяем специальные теги на значения взятые из lang файла плагина и экстраполей страницы. 
Илл. (т.о. текст взят из страницы товара, а блок добавлен в соответствии с шаблоном). В другой категории будет использован свой шаблон.

Теперь поправим шаблоны добавления и редактирования страницы, добавив одинаковый тег {PAGE_TEMPLATE_EXTRAPARAMS} илл. (Прим. на иллюстрации шаблон из темы HTMLKickstart). Делаем это, чтобы при создании страницы в определенной категории, появлялись только определенные страницей-шаблоном (помните заполняли поле «keywords») для этой категории дополнительные поля. 
Т.е. (для примера) если мы создаем (редактируем) страницу в категории «Tv», то поля дополнительных параметров будут «razmer» и «ves», если в категории «phones», то параметрами будут «ves» и «color». илл.

Пример плагина качать здесь: http://www.cotonti.com/datas/users/pagetemplate_461.7z

Он проверялся под темой «HTMLKickstart», для другой темы оформления возможно потребуется немного изменить файл tpl/pagetemplate.tpl 
Ну и конечно это «пример на скорую руку». Так что никаких гарантий. :)

 
https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F

Dit bericht is bewerkt door Macik (2012-05-31 13:59, 12 jaren ago)