Как сделать детальную страницу элемента инфоблока - techart/bitrix.tao GitHub Wiki

Итак, список котиков мы вывели. В настройках инфоблока в поле "URL страницы детального просмотра&"; указано "/cats/#ELEMENT_ID#/";. Но при переходе на эту страницу по ссылке из тизера получаем унылое 404. Нам нужно, чтобы показывалась страница с детальным описанием котика.

Способ 1: через автоматический механизм

Как и для списка, создаем маршрут:

\TAO::addRoute('{^/cats/(\d+)/$}', array(
    'element_of' => 'cats', 
    'id' => '{1}',
));

По умолчанию для показа котика берется шаблон full.phtml. Но можно создать, например, detail.phtml и указать его имя:

\TAO::addRoute('{^/cats/(\d+)/$}', array(
    'element_of' => 'cats', 
    'id' => '{1}',
    'mode' => 'detail',
));

Таким способом можно создавать несколько станиц для одного элемента. Например, одна выводит биографию, а другая - фотогалерею:

\TAO::addRoute('{^/cats/(\d+)/$}', array(
    'element_of' => 'cats', 
    'id' => '{1}',
    'mode' => 'detail',
));
\TAO::addRoute('{^/cats/(\d+)/gallery/$}', array(
    'element_of' => 'cats', 
    'id' => '{1}',
    'mode' => 'gallery',
));

Можно запрашивать страницу не по числовому идентификатору, а по символьному коду:

\TAO::addRoute('{^/cats/([^/]+)/$}', array(
    'element_of' => 'cats', 
    'code' => '{1}',
));

или комбинированно:

\TAO::addRoute('{^/cats/([^/]+)/$}', array(
    'element_of' => 'cats', 
    'id_or_code' => '{1}',
));

Способ 2: через специально созданную страницу

Это возможно, но сей способ больше подходит для людей, желающих странного. Поэтому описывать я его не стану. Если вдруг другие способы вам не нравятся, то подходите - поговорим.

Способ 3: через контроллер

Это очень обширная тема, не для этой статьи.