Как сделать разводящую страницу с разделами инфоблока - 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: через контроллер

Ну, вы поняли...