Задать вопрос
@darkersoul
web - программист

Как показать подразделы в компоненте bitrix:news?

Всю голову уже сломал. в папке site.ru/news/ стандартно прописан комплексный компонент bitrix:news.
Настройки инфоблока стандартные:
afc3fd0ebb.jpg
Настройки компонента стандартные:
<?$APPLICATION->IncludeComponent(
"bitrix:news",
"news",
array(
"ADD_ELEMENT_CHAIN" => "Y",
"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_FILTER" => "N",
"CACHE_GROUPS" => "Y",
"CACHE_TIME" => "36000000",
"CACHE_TYPE" => "A",
"CHECK_DATES" => "Y",
"COMPONENT_TEMPLATE" => "news",
"COMPOSITE_FRAME_MODE" => "A",
"COMPOSITE_FRAME_TYPE" => "AUTO",
"DETAIL_ACTIVE_DATE_FORMAT" => "d.m.Y",
"DETAIL_DISPLAY_BOTTOM_PAGER" => "Y",
"DETAIL_DISPLAY_TOP_PAGER" => "N",
"DETAIL_FIELD_CODE" => array(
0 => "",
1 => "",
),
"DETAIL_PAGER_SHOW_ALL" => "Y",
"DETAIL_PAGER_TEMPLATE" => "",
"DETAIL_PAGER_TITLE" => "Страница",
"DETAIL_PROPERTY_CODE" => array(
0 => "",
1 => "",
),
"DETAIL_SET_CANONICAL_URL" => "N",
"DISPLAY_BOTTOM_PAGER" => "Y",
"DISPLAY_DATE" => "Y",
"DISPLAY_NAME" => "Y",
"DISPLAY_PICTURE" => "Y",
"DISPLAY_PREVIEW_TEXT" => "Y",
"DISPLAY_TOP_PAGER" => "N",
"FILE_404" => "",
"HIDE_LINK_WHEN_NO_DETAIL" => "N",
"IBLOCK_ID" => "3",
"IBLOCK_TYPE" => "content",
"INCLUDE_IBLOCK_INTO_CHAIN" => "N",
"LIST_ACTIVE_DATE_FORMAT" => "d.m.Y",
"LIST_FIELD_CODE" => array(
0 => "",
1 => "",
),
"LIST_PROPERTY_CODE" => array(
0 => "",
1 => "",
),
"MESSAGE_404" => "",
"META_DESCRIPTION" => "-",
"META_KEYWORDS" => "-",
"NEWS_COUNT" => "12",
"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" => "modern_custom",
"PAGER_TITLE" => "Новости",
"PREVIEW_TRUNCATE_LEN" => "",
"SEF_FOLDER" => "/news/",
"SEF_MODE" => "Y",
"SET_LAST_MODIFIED" => "N",
"SET_STATUS_404" => "Y",
"SET_TITLE" => "Y",
"SHOW_404" => "Y",
"SORT_BY1" => "ACTIVE_FROM",
"SORT_BY2" => "SORT",
"SORT_ORDER1" => "DESC",
"SORT_ORDER2" => "ASC",
"STRICT_SECTION_CHECK" => "N",
"USE_CATEGORIES" => "N",
"USE_FILTER" => "N",
"USE_PERMISSIONS" => "N",
"USE_RATING" => "N",
"USE_RSS" => "N",
"USE_SEARCH" => "N",
"USE_SHARE" => "N",
"SEF_URL_TEMPLATES" => array(
"news" => "#SECTION_CODE_PATH#/",
"section" => "#SECTION_CODE#/",
"detail" => "#ELEMENT_CODE#/",
)
),
false
);?>

Все работает. Но не работает вывод разделов на странице news а так же url записей, расположенных в разделах, а не в корне - не меняются. Например есть раздел Тестовый с кодом testovyy в нем есть статья и она не отображается по адресу news/testovyy/name а остается по старому news/name хотя в хлебных крошках есть раздел Тестовый но по адресу news/testovyy просто грузится news присутствует... в urlrewrite.php написано так:
26 =>
array (
'CONDITION' => '#^/news/#',
'RULE' => '',
'ID' => 'bitrix:news',
'PATH' => '/news/index.php',
'SORT' => 100,
),

все остальное выводится корректно. видимо надо еще что-то добавить куда-то?
  • Вопрос задан
  • 2662 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
scottparker
@scottparker
"SEF_URL_TEMPLATES" => array(
"news" => "",
"section" => "#SECTION_CODE#/",
"detail" => "#SECTION_CODE_PATH#/#ELEMENT_CODE#/",
)

в параметрах подключения компонента должно быть примерно так, аналогичное советую прописать и в настройках инфоблока, что ссылки в том же поиске корректно формировались
Ответ написан
Starina_js
@Starina_js
full-stack web dev
Допустим у нас есть раздел site.ru/news/

Мы хотим выводить новости, но без подразделов и допустим site.ru/news/news-name/
1. В настройках инфоблока:
URL страницы информационного блока: #SITE_DIR#/news/
URL страницы детального просмотра: #SITE_DIR#/news/#ELEMENT_CODE#/
2. В api компонента
"SEF_FOLDER" => "/news/",
"SEF_URL_TEMPLATES" => array(
      "news" => "",
      "section" => "",
      "detail" => "#ELEMENT_CODE#/",
)


Или, допустим, мы хотим выводить новости с подразделами site.ru/news/section/news-name/
1. В настройках инфоблока:
URL страницы информационного блока: #SITE_DIR#/news/
URL страницы раздела: #SITE_DIR#/news/#SECTION_CODE#/
URL страницы детального просмотра: #SITE_DIR#/news/#SECTION_CODE#/#ELEMENT_CODE#/
2. В api компонента
"SEF_FOLDER" => "/news/",
"SEF_URL_TEMPLATES" => array(
      "news" => "",
      "section" => "#SECTION_CODE#/",
      "detail" => "#SECTION_CODE#/#ELEMENT_CODE#/",
)


Или, допустим, мы хотим выводить новость в несколько разделов, но чтобы чпу у новости был не в подразделе.
К примеру новость отображалась в разделах site.ru/news/section1 и site.ru/news/section2 , но url самой новости был один для этих разделов (site.ru/news/detail/news-name/)

1. В настройках инфоблока:
URL страницы информационного блока: #SITE_DIR#/news/
URL страницы раздела: #SITE_DIR#/news/#SECTION_CODE_PATH#/ (хотя можно даже section_code не указывать)
URL страницы детального просмотра: #SITE_DIR#/news/#ELEMENT_CODE#/
2. В api компонента
"SEF_FOLDER" => "/news/",
"SEF_URL_TEMPLATES" => array(
      "news" => "",
      "section" => "#SECTION_CODE_PATH#/",
      "detail" => "#ELEMENT_CODE#/",
)


или еще так можно

1. В настройках инфоблока:
URL страницы информационного блока: #SITE_DIR#/news/
URL страницы раздела: #SITE_DIR#/news/#SECTION_CODE#/ (хотя можно даже section_code не указывать)
URL страницы детального просмотра: #SITE_DIR#/news/element/#ELEMENT_CODE#/
2. В api компонента
"SEF_FOLDER" => "/news/",
"SEF_URL_TEMPLATES" => array(
      "news" => "",
      "section" => "#SECTION_CODE#/",
      "detail" => "element/#ELEMENT_CODE#/",
)


Еще, в корне проекта есть файл urlrewrite.php - он отвечает за обработку адресов. Вообще он должен обновляться когда вы сохраняете компонент через редактор админа на фронте, либо через админку в обработке адресов.
Однако вы можете глянуть как там прописаны пути

0 => 
  array (
    'CONDITION' => '#^/news/#',
    'RULE' => '',
    'ID' => 'bitrix:news',
    'PATH' => '/news/index.php',
    'SORT' => 100,
  ),
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы