По умолчанию при создании информационного путь к страницам раздела и детального просмотра задается в виде ссылок на физические файлы которые должны содержать соответствующие компоненты.
Наша задача добиться чтобы ссылки на страницы раздела и страницы детального просмотра имели вид ЧПУ, т. е.: корневой раздел/название раздела/название статьи.
Для этого в настройках инфоблока необходимо внести адреса
URL страницы информационного блока: /#SITE_DIR#/poleznaya-informatsiya
URL страницы раздела: /#SITE_DIR#/poleznaya-informatsiya/#CODE#
RL страницы детального просмотра: /#SITE_DIR#/poleznaya-informatsiya/#SECTION_CODE#/#CODE#
где:
#SITE_DIR# - коневая папка сайта
poleznaya-informatsiya — физическая папка с файлом index.php и компонентой «Список новостей»
#SECTION_CODE# - символический код раздела
#CODE# - символический код элемента
В настройках полей элементов инфоблока указать обязательным «Символьный код» включить «Если код задан, то проверять на уникальность», «Транслитерировать из названия при добавлении элемента.», «Удалять лишние символы замены.».
Так как мы используем инфоблок с разделами то и в настройках полей разделов инфоблока задать соотвествующие параметры как и для элементов.
Теперь создадим соответствующие разделы и статьи для нашего инфоблока
Все первоначальные этапы по созданию инфоблока у нас созданы теперь необходимо позаботится о выводи информации на сайте, для этих целей у нас существует компоненты: «Список новостей» и «Новость детально».
Настройка и вывод списка статей
Создадим в нашей физической папке «poleznaya-informatsiya» файл index.php и добавим в него компоненту «Список новостей», выбираем соответствующий информационный блок, в нашем случае это «Статьи». Для того что бы наша компонента отображала только статьи принадлежащие разделу в дополнительным настройках компоненты необходимо указать переменным глобально массива $_REQUEST который будет содержать символический код, а именно ={$_REQUEST["SECTION_CODE"]}
<?$APPLICATION->IncludeComponent(
"bitrix:news.list",
"bar",
array(
"ACTIVE_DATE_FORMAT" => "d.m.Y",
"ADD_SECTIONS_CHAIN" => "N",
"AJAX_MODE" => "Y",
"AJAX_OPTION_ADDITIONAL" => "",
"AJAX_OPTION_HISTORY" => "N",
"AJAX_OPTION_JUMP" => "N",
"AJAX_OPTION_STYLE" => "Y",
"CACHE_FILTER" => "N",
"CACHE_GROUPS" => "Y",
"CACHE_TIME" => "36000000",
"CACHE_TYPE" => "N",
"CHECK_DATES" => "Y",
"COMPONENT_TEMPLATE" => "bar",
"DETAIL_URL" => "",
"DISPLAY_BOTTOM_PAGER" => "N",
"DISPLAY_DATE" => "Y",
"DISPLAY_NAME" => "Y",
"DISPLAY_PICTURE" => "Y",
"DISPLAY_PREVIEW_TEXT" => "N",
"DISPLAY_TOP_PAGER" => "N",
"FIELD_CODE" => array(
0 => "",
1 => "",
),
"FILE_404" => "",
"FILTER_NAME" => "",
"HIDE_LINK_WHEN_NO_DETAIL" => "N",
"IBLOCK_ID" => "4",
"IBLOCK_TYPE" => "ARTICLES",
"INCLUDE_IBLOCK_INTO_CHAIN" => "N",
"INCLUDE_SUBSECTIONS" => "N",
"MESSAGE_404" => "",
"NEWS_COUNT" => "3",
"PAGER_BASE_LINK_ENABLE" => "N",
"PAGER_DESC_NUMBERING" => "N",
"PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",
"PAGER_SHOW_ALL" => "N",
"PAGER_SHOW_ALWAYS" => "N",
"PAGER_TEMPLATE" => "all",
"PAGER_TITLE" => "",
"PARENT_SECTION" => $_REQUEST["SECTION_ID"],
"PARENT_SECTION_CODE" => $_REQUEST["SECTION_CODE"],
"PREVIEW_TRUNCATE_LEN" => "",
"PROPERTY_CODE" => array(
0 => "",
1 => "",
),
"SET_BROWSER_TITLE" => "N",
"SET_LAST_MODIFIED" => "N",
"SET_META_DESCRIPTION" => "N",
"SET_META_KEYWORDS" => "N",
"SET_STATUS_404" => "Y",
"SET_TITLE" => "N",
"SHOW_404" => "N",
"SORT_BY1" => "RAND",
"SORT_BY2" => "RAND",
"SORT_ORDER1" => "RAND",
"SORT_ORDER2" => "RAND"
),
false
);?>
Теперь для работы нашей ссылки необходимо настроить «Правило обработки адресов»
Условие: #^/poleznaya-informatsiya/([a-z-0-9_]+)#
Файл: /poleznaya-informatsiya/index.php
Правило: SECTION_CODE=$1
Настройка и вывод детальной информации статьи
Создадим в нашей физической папке «poleznaya-informatsiya» файл detail.php и добавим в него компоненту «Новость детально», выбираем соответствующий информационный блок, в нашем случае это «Статьи». для того что бы наша компонента отображала нужную нас статью в основных параметрах компоненты необходимо указать переменные глобально массива $_REQUEST который будет содержать символический код, а именно ={$_REQUEST["CODE"]}
$APPLICATION->IncludeComponent(
"bitrix:news.detail",
"",
Array(
"ACTIVE_DATE_FORMAT" => "d.m.Y",
"ADD_ELEMENT_CHAIN" => "N",
"ADD_SECTIONS_CHAIN" => "Y",
"AJAX_MODE" => "N",
"AJAX_OPTION_ADDITIONAL" => "",
"AJAX_OPTION_HISTORY" => "N",
"AJAX_OPTION_JUMP" => "N",
"AJAX_OPTION_STYLE" => "Y",
"BROWSER_TITLE" => "-",
"CACHE_GROUPS" => "Y",
"CACHE_TIME" => "36000000",
"CACHE_TYPE" => "A",
"CHECK_DATES" => "Y",
"DETAIL_URL" => "",
"DISPLAY_BOTTOM_PAGER" => "Y",
"DISPLAY_DATE" => "N",
"DISPLAY_NAME" => "Y",
"DISPLAY_PICTURE" => "Y",
"DISPLAY_PREVIEW_TEXT" => "Y",
"DISPLAY_TOP_PAGER" => "N",
"ELEMENT_CODE" => $_REQUEST["CODE"],
"ELEMENT_ID" => $_REQUEST["ID"],
"FIELD_CODE" => array("",""),
"IBLOCK_ID" => "2",
"IBLOCK_TYPE" => "info",
"IBLOCK_URL" => "",
"INCLUDE_IBLOCK_INTO_CHAIN" => "Y",
"MESSAGE_404" => "",
"META_DESCRIPTION" => "-",
"META_KEYWORDS" => "-",
"PAGER_BASE_LINK_ENABLE" => "N",
"PAGER_SHOW_ALL" => "N",
"PAGER_TEMPLATE" => ".default",
"PAGER_TITLE" => "Страница",
"PROPERTY_CODE" => array("",""),
"SET_BROWSER_TITLE" => "Y",
"SET_CANONICAL_URL" => "N",
"SET_LAST_MODIFIED" => "N",
"SET_META_DESCRIPTION" => "Y",
"SET_META_KEYWORDS" => "Y",
"SET_STATUS_404" => "N",
"SET_TITLE" => "Y",
"SHARE_HANDLERS" => array("delicious","facebook","lj","mailru","twitter","vk"),
"SHARE_HIDE" => "N",
"SHARE_SHORTEN_URL_KEY" => "",
"SHARE_SHORTEN_URL_LOGIN" => "",
"SHARE_TEMPLATE" => "",
"SHOW_404" => "N",
"STRICT_SECTION_CHECK" => "N",
"USE_PERMISSIONS" => "N",
"USE_SHARE" => "N"
)
);
Настройка правила аналогична так же как и для страницы «Списка новостей»
Условие: #^/poleznaya-informatsiya/([a-z-0-9_]+)/([a-z-0-9_]+)#
Файл: /poleznaya-informatsiya/detail.php
Правило: SECTION_CODE=$1&CODE=$2
В этой статьи были рассмотренный настройки вывода списка статей и страницы детально, для вывода списка разделов и настройки ЧПУ ссылок мы рассмотрим в следующей статье. Если у вас что не не получилось то мы с радостью готовы вам помочь в вопросе разработки или доработки сайта на CMS 1C-Bitrix.