Создание компонента Страница в LS 2.0
Здравствуйте! Сегодня решил создать отдельную страничку для вывода превью топиков на главной. Создал папку topic_masonry в папке шаблона components а внутрь поместил два файла component.json с содержимым
и topic_masonry.tpl с содержимым из файла components/topic/topic.tpl
в конфиге шаблона settings/config/config.php прописывал имя компонента в опции components:
Далее в файле components/topic/topic-list.tpl изменил строчку
на
и теперь за вывод на главной страничке превью топиков у меня отвечает файл topic_masonry.tpl, а за вывод самой статьи topic.tpl
Вопрос: Правильно ли я сделал данную манипуляцию? Так то все работает!
{ "name": "topic_masonry", "version": "1.0", "templates": { "topic_masonry": "topic_masonry.tpl" } }
и topic_masonry.tpl с содержимым из файла components/topic/topic.tpl
в конфиге шаблона settings/config/config.php прописывал имя компонента в опции components:
$config['components'] = array( // Дефолтный список компонентов ... // Наш компонент 'topic_masonry' );
Далее в файле components/topic/topic-list.tpl изменил строчку
{foreach $topics as $topic} {component 'topic' template='topic' topic=$topic isList=true} {/foreach}
на
{foreach $topics as $topic} {component 'topic_masonry' template='topic_masonry' topic=$topic isList=true} {/foreach}
и теперь за вывод на главной страничке превью топиков у меня отвечает файл topic_masonry.tpl, а за вывод самой статьи topic.tpl
Вопрос: Правильно ли я сделал данную манипуляцию? Так то все работает!
9 комментариев
Если сильно упрощенно, то компоненты это кирпичики из которых собирается шаблон. Раньше кнопки, формы, навигации и проч. было в куче, теперь каждый элемент в отдельной папке со своим набором стилей, скриптов и проч.
В Вашем же случае с топиками смотрите как еще можно было бы сделать: не лезть в компонент топик и менять там подключение, а на его основе сделать свой, с нужным Вам выводом миниатюры топика и сетки. Потом в папке лэйаутов добавить свой по примеру того же layout.topics.tpl, только в нем вместо компонента topic.list вывести свой.
В итоге у Вас получится следующее: появиться такая вещь, как миниатюра, которую можно использовать где угодно по сайту (вывод тех же похожих топиков, например) и лэйаут с Вашей сеткой, который можно использовать для разных экшенов. Так, например, надо чтобы на главной странице выводилась Ваша сетка, топаете в ЭкшенИндекс и прописываете там вместо указанного свой лэйаут и т.д.