Необходимо вывести элементы каталога без раздела — списком. Реализовал через bitrix:news.list.
Элементы вывел без проблем, списком, но детальный просмотр элементов не работает, выдает 404.
Настройки URL инфоблока —
spoiler
Код компонента —
spoiler
<?$APPLICATION->IncludeComponent(
«bitrix:news.list»,
«template1»,
array(
«ACTIVE_DATE_FORMAT» => «d.m.Y»,
«ADD_SECTIONS_CHAIN» => «Y»,
«AJAX_MODE» => «N»,
«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» => «A»,
«CHECK_DATES» => «Y»,
«COMPONENT_TEMPLATE» => «template1»,
«DETAIL_URL» => «/uslugi/#ELEMENT_CODE#/»,
«DISPLAY_BOTTOM_PAGER» => «Y»,
«DISPLAY_DATE» => «Y»,
«DISPLAY_NAME» => «Y»,
«DISPLAY_PICTURE» => «Y»,
«DISPLAY_PREVIEW_TEXT» => «Y»,
«DISPLAY_TOP_PAGER» => «N»,
«FIELD_CODE» => array(
0 => «»,
1 => «»,
),
«FILTER_NAME» => «»,
«HIDE_LINK_WHEN_NO_DETAIL» => «N»,
«IBLOCK_ID» => «8»,
«IBLOCK_TYPE» => «gs_news»,
«INCLUDE_IBLOCK_INTO_CHAIN» => «N»,
«INCLUDE_SUBSECTIONS» => «Y»,
«MESSAGE_404» => «»,
«NEWS_COUNT» => «20»,
«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» => «.default»,
«PAGER_TITLE» => «Новости»,
«PARENT_SECTION» => «»,
«PARENT_SECTION_CODE» => «»,
«PREVIEW_TRUNCATE_LEN» => «»,
«PROPERTY_CODE» => array(
0 => «»,
1 => «»,
),
«SET_BROWSER_TITLE» => «Y»,
«SET_LAST_MODIFIED» => «N»,
«SET_META_DESCRIPTION» => «Y»,
«SET_META_KEYWORDS» => «Y»,
«SET_STATUS_404» => «N»,
«SET_TITLE» => «Y»,
«SHOW_404» => «N»,
«SORT_BY1» => «ACTIVE_FROM»,
«SORT_BY2» => «SORT»,
«SORT_ORDER1» => «DESC»,
«SORT_ORDER2» => «ASC»,
«STRICT_SECTION_CHECK» => «N»
),
false
);?>
- ID – по идентификатору;
- NAME – по заголовку;
- ACTIVE_FROM – по дате начала активности;
- SORT – по индексу сортировки;
- TIMESTAMP_X – по дате последнего изменения.
Выбрав пункт (другое)->, можно сформировать свой вариант поля для первой сортировки новостей.
- ASC – По возрастанию;
- DESC – По убыванию.
- ID – по идентификатору;
- NAME – по заголовку;
- ACTIVE_FROM – по дате начала активности;
- SORT – по индексу сортировки;
- TIMESTAMP_X – по дате последнего изменения.
Выбрав пункт (другое)->, можно сформировать свой вариант поля для второй сортировки новостей.
- ASC – По возрастанию;
- DESC – По убыванию.
Array("NAME","PREVIEW_TEXT","PREVIEW_PICTURE","DETAIL_TEXT",""),
При выборе пункта (не выбрано)-> и без указания вычисления полей в строках ниже (т.е. если задан пустой массив), на странице списка будут выведены поля по умолчанию.
- A — Авто + Управляемое: автоматически обновляет кеш компонентов в течение заданного времени или при изменении данных;
- Y — Кешировать: для кеширования необходимо определить время кеширования;
- N — Не кешировать: кеширования нет в любом случае.
дополнительные поля.
Дополнительные поля:
Url для построения ссылок (по умолчанию — автоматически) | PAGER_BASE_LINK | Задается адрес для построения ссылок. Если в параметре ничего не указывать, то адрес будет построен автоматически. |
Имя массива с переменными для построения ссылок в постраничной навигации | PAGER_PARAMS_NAME | Задается имя переменной, в которой передается массив с переменными для построения ссылок компонентом постраничной навигации. |
специальная страница
Станет активным поле:
Страница для показа (по умолчанию /404.php) | FILE_404 | Задается адрес страницы, которая будет отображаться при возникновении ошибки 404. |
в случае возникновения ошибки 404, в противном случае — будет отображено
специальное сообщение.
Станет активным поле:
Сообщение для показа (по умолчанию из компонента) | MESSAGE_404 | Задается сообщение, которое будет показано в случае возникновения ошибки 404. Если ничего не указывать, то будет использоваться стандартное сообщение из компонента. |
Внимание! При передаче символьного кода раздела (SECTION_CODE) выполняется дополнительная проверка на принадлежность раздела к инфоблоку, указанному в параметре IBLOCK_ID и активность с учетом вышележащих разделов. При передаче идентификатора раздела (SECTION_ID) такая проверка не производится.
Осваиваю Битрикс. Столкнулся со следующей проблемой. Создал новостной инфлоблок. Анонсы новостей выводятся как положено, но при попытке перейти на детальный просмотр новости выводится ошибка «404 Not Found». Объясните почему и как это решить.
Мой файл urlewrite.php содержит следующий код:
<?php
$arUrlRewrite=array (
0 =>
array (
'CONDITION' => '#^\\/?\\/mobileapp/jn\\/(.*)\\/.*#',
'RULE' => 'componentName=$1',
'ID' => NULL,
'PATH' => '/bitrix/services/mobileapp/jn.php',
'SORT' => 100,
),
1 =>
array (
'CONDITION' => '#^/rest/#',
'RULE' => '',
'ID' => NULL,
'PATH' => '/bitrix/services/rest/index.php',
'SORT' => 100,
),
2 =>
array (
'CONDITION' => '#^/news/#',
'RULE' => '',
'ID' => 'bitrix:news',
'PATH' => '/news/index.php',
'SORT' => 100,
),
);
Настройки инфоблока следующие
Одна из проблем, которая возникает при настройке 404 ошибки для Битрикс: движок наотрез отказывается отдавать 404 ошибку, если секция (раздел) не существует. Вместо 404 мы видим список всех элементов. Например:
Существующий адрес /news/about/
выводит новости только раздела about, а не существующий адрес /news/blablabla/
выдаст абсолютно все элементы из всех категорий. Причем параметры для вывода ошибки установлены верно:
"SET_STATUS_404" => "Y", "SHOW_404" => "Y",
Как оказалось, сообщения об этом баге можно встретить на форуме еще в 2009 году. А исправить ошибку достаточно просто: просто добавьте параметр "STRICT_SECTION_CHECK" => "Y",
в компонент news.list.
Например, если этот баг встречается в компоненте bitrix:news, то переходим в шаблон, находим файл section.php, который отвечает за вывод раздела и в параметрах компонента news.list добавляем «STRICT_SECTION_CHECK» => «Y». Все, страница с неверным адресом будет отдавать ошибку.
Самое забавное, что такой параметр даже не описывается в документации, что крайне прискорбно.
It is necessary to display the elements of the catalog without a section — as a list. Implemented via bitrix: news.list.
The elements were displayed without problems, as a list, but the detailed view of the elements does not work, it gives 404.
Infoblock URL settings —
Component code — <? $ APPLICATION-> IncludeComponent (
«bitrix: news.list»,
«template1»,
array (
«ACTIVE_DATE_FORMAT» => «d.m.Y»,
«ADD_SECTIONS_CHAIN» => «Y»,
«AJAX_MODE» => «N»,
«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» => «A»,
«CHECK_DATES» => «Y»,
«COMPONENT_TEMPLATE» => «template1»,
«DETAIL_URL» => «/ uslugi / # ELEMENT_CODE # /»,
«DISPLAY_BOTTOM_PAGER» => «Y»,
«DISPLAY_DATE» => «Y»,
«DISPLAY_NAME» => «Y»,
«DISPLAY_PICTURE» => «Y»,
«DISPLAY_PREVIEW_TEXT» => «Y»,
«DISPLAY_TOP_PAGER» => «N»,
«FIELD_CODE» => array (
0 => «»,
1 => «»,
),
«FILTER_NAME» => «»,
«HIDE_LINK_WHEN_NO_DETAIL» => «N»,
«IBLOCK_ID» => «8»,
«IBLOCK_TYPE» => «gs_news»,
«INCLUDE_IBLOCK_INTO_CHAIN» => «N»,
«INCLUDE_SUBSECTIONS» => «Y»,
«MESSAGE_404» => «»,
«NEWS_COUNT» => «20»,
«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» => «.default»,
«PAGER_TITLE» => «News»,
«PARENT_SECTION» => «»,
«PARENT_SECTION_CODE» => «»,
«PREVIEW_TRUNCATE_LEN» => «»,
«PROPERTY_CODE» => array (
0 => «»,
1 => «»,
),
«SET_BROWSER_TITLE» => «Y»,
«SET_LAST_MODIFIED» => «N»,
«SET_META_DESCRIPTION» => «Y»,
«SET_META_KEYWORDS» => «Y»,
«SET_STATUS_404» => «N»,
«SET_TITLE» => «Y»,
«SHOW_404» => «N»,
«SORT_BY1» => «ACTIVE_FROM»,
«SORT_BY2» => «SORT»,
«SORT_ORDER1» => «DESC»,
«SORT_ORDER2» => «ASC»,
«STRICT_SECTION_CHECK» => «N»
),
false
) ;?>