Форум русской поддержки Joomla!® CMS
04.12.2016, 01:51:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Шаблонизация, один вид item-а из разных мест

 (Прочитано 269 раз)
0 Пользователей и 1 Гость смотрят эту тему.
beliyadm
Профи
********

Репутация: +1566/-61
Offline Offline

Пол: Мужской
Сообщений: 8110


Севастополь == Россия


« : 04.03.2016, 21:25:14 »

Коллеги, вот такой дурной вопрос по шаблонизации материала\объекта.
К примеру есть блог материалов, в одном итеме отображаются: заголовок, картинка, текст. За все это отвечает один шаблон
Есть блог избранных, надо итем отображать аналогично - другой шаблон
Есть модуль последних новостей - третий шаблон
Хочу сделать копию блога материалов но содержимое итема оставить прежним - еще один шаблон.

Как это дело унифицировать? В некоторых собственных местах я просто выбираю в цикле нужные мне ID материалов\объектов и отдаю свою функцию, где она по ID выбирает нужные строки и делает нужную верстку.

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

Вопрос в чем - никто не задавался вопросом, как в стандартном контенте сделать возможность шаблонизации откуда угодно (модуль, компонент, плагин) по одному единственному шаблону без размножения сущностей?
Переписывать все стандартные шаблоны (модели компонентов) и модули?
Записан
beliyadm
Профи
********

Репутация: +1566/-61
Offline Offline

Пол: Мужской
Сообщений: 8110


Севастополь == Россия


« Ответ #1 : 16.10.2016, 14:06:21 »

В общем даже не знаю, зачем я столько времени тупил, ведь решение простое. Может кому и пригодится.
Итак, у нас есть шаблоны блога материалов, блога избранных материалов, пара модулей выводящих материалы. Нам нужно сделать у них одинаковый вывод блока материала. Пример в спойлере (хиты это блог избранных материалов, новые поступления - модуль последних). Писать каждый раз разметку и в случае изменений менять в трех местах нам не надо.
Показать текстовый блок

Пишем свою функцию function product_item($prod) в которой делаем всю нужную разметку.
На уровне вывода блога и хелпера модуля инклюдим файл с функцией и выводим ее в соответствующих файлах
\html\com_content\featured\default_item.php
\html\com_content\category\blog_item.php
\html\mod_articles_latest\default.php

В принимаемый параметр $prod функции передаем объект $this->item. Если нам нужны еще и условия из настроек меню - всегда можем добавить в функцию прием объекта параметров $params
Все, шаблонов и модулей много, разметка везде одна. Единственное но - в передаваемом объекте везде должны содержаться соответствующие принимаемые на уровне функции значения.
Решение простое как валенок, правду говорят что горе от ума, если же его нет все еще хуже.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet