Как настроить детальную страницу статьи в Bitrix через news.list и news.detail

Как настроить детальную страницу статьи в Bitrix через news.list и news.detail

Для чего нужна детальная страница

Детальная страница выводит полную информацию о каждой статье или новости на вашем сайте — это отдельная страница с заголовком, датой публикации, текстом и прочими данными.

Где должны лежать файлы

  • /public_html/blog/index.php — список статей (news.list).
  • /public_html/blog/detail.php — выводит одну статью (news.detail).

Шаблон компонента обычно располагается в:
/local/templates/ВАШ_ШАБЛОН/components/bitrix/news.detail/blog_detail/template.php

ЧПУ — красивые адреса

Чтобы адреса вида /blog/kod-stati/ открывали детальную страницу статьи, в .htaccess добавьте правило:

RewriteRule ^blog/([a-zA-Z0-9_-]+)/$ /blog/detail.php?ELEMENT_CODE=$1 [L]

Пример detail.php

<?php require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->IncludeComponent(
"bitrix:news.detail",
"blog_detail",
array(
"IBLOCK_TYPE" => "content",
"IBLOCK_ID" => "22",
"ELEMENT_CODE" => $_REQUEST["ELEMENT_CODE"],
// другие параметры при необходимости
),
false
);

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
?>

Параметр ELEMENT_CODE автоматически подтягивается из адреса.

Пример шаблона вывода (template.php)

Внутри вашего шаблона уже реализована нужная структура. Кратко, шаблон выглядит так:

<article class="article"> <h1 class="article__title"><?= htmlspecialcharsbx($arResult["NAME"]) ?></h1> <?php if ($arResult["DISPLAY_ACTIVE_FROM"]): ?> <div class="article__date"><?= FormatDate("d F Y", MakeTimeStamp($arResult["DISPLAY_ACTIVE_FROM"])) ?></div> <?php endif; ?> <?php if ($arResult["PREVIEW_TEXT"]): ?> <div class="article__intro"><?= $arResult["PREVIEW_TEXT"] ?></div> <?php endif; ?> <div class="article__content"><?= $arResult["DETAIL_TEXT"] ?></div> </article> 

Вывод <h2> для разделов статьи и все стили уже реализуются вашим шаблоном.

Как вставлять код с подсветкой

В шаблоне уже подключён Prism.js. Для вставки кода используйте так:

<pre><code class="language-php"> // Ваш PHP-код </code></pre> 

Полезные советы

  • Проверьте, чтобы у каждой статьи был заполнен "Символьный код".
  • Все стили и оформление берутся из вашего шаблона — ничего дополнительного в статью не добавляйте.
  • Для оглавления используйте <h2> — оно будет генерироваться автоматически.
  • Если что-то не работает — проверьте правило в .htaccess и правильность путей к файлам.

Всё готово: теперь каждая статья на вашем сайте открывается на детальной странице с аккуратной версткой, содержанием и подсветкой кода — всё это оформляется только вашим шаблоном.