Как сделать разводящую страницу с разделами инфоблока - techart/bitrix.tao GitHub Wiki
Наши котики - породистые. Поэтому мы хотим, чтобы на странице /cats/ выводилась разводящая страница со списком пород. Для этого наш инфоблок делится на разделы (sections).
Способ 1: через автоматический механизм
В init.php пишем такой маршрут:
\TAO::addRoute('{^/cats/$}', array(
'sections_of' => 'cats',
));
И все - разводящая страница готова. На ней - описание инфоблока (если заполнено) и древовидный рубрикатор в виде ненумерованного ul/li. Если нужен нумерованный список (ol), то пишем так:
\TAO::addRoute('{^/cats/$}', array(
'sections_of' => 'cats',
'sections_list_type' => 'ol',
));
Каждый отдельный пункт списка отображается стандартным шаблоном section-teaser.phtml, который представляет собой простую текстовую ссылку. Можно переопределить у себя этот шаблон или же создать другой, например section-image.phtml, и указать его:
\TAO::addRoute('{^/cats/$}', array(
'sections_of' => 'cats',
'section_mode' => 'image',
));
Если нужна более сложная страница или нужный вид страницы нельзя сделать средствами CSS, то можно переопределить шаблон, скопировав к себе файл sections-page.phtml. Или создать другой и указать его имя:
\TAO::addRoute('{^/cats/$}', array(
'sections_of' => 'cats',
'page_mode' => 'my-sections-page',
));
Способ 2: через страницу
Создайте любый угодным способом страницу и выводите список секций как вам угодно. Например, так:
print \TAO::infoblock('cats')->renderSectionsList(array(
'section_mode' => 'image',
'type' => 'ol',
));
Или так:
$sections = \TAO::infoblock('cats')->getSectionsTree();
foreach($sections as $section) {
// .....
}
Способ 3: через контроллер
Ну, вы поняли...