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

beliyadm

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

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

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

Вопрос в чем - никто не задавался вопросом, как в стандартном контенте сделать возможность шаблонизации откуда угодно (модуль, компонент, плагин) по одному единственному шаблону без размножения сущностей?
Переписывать все стандартные шаблоны (модели компонентов) и модули?
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

beliyadm

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

Пишем свою функцию 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
Все, шаблонов и модулей много, разметка везде одна. Единственное но - в передаваемом объекте везде должны содержаться соответствующие принимаемые на уровне функции значения.
Решение простое как валенок, правду говорят что горе от ума, если же его нет все еще хуже.
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться