Где ошибка в выводе элементов каталога через catalog.section и catalog.element?

Здравствуйте. Надо вывести элементы каталога.
Структура: Инфоблок -> Элементы инфоблока
Настройки ИБ:
URL страницы информационного блока: /podobrat-dver/
URL страницы детального просмотра: /podobrat-dver/#ELEMENT_CODE#/

<?$APPLICATION->IncludeComponent(
	"bitrix:catalog.section", 
	"catalog_list", 
	array(
                 ....
		"DETAIL_URL" => "/podobrat-dver/#ELEMENT_CODE#/",
		"SECTION_CODE" => $_REQUEST["SECTION_CODE"],
		"SECTION_ID" => "",
		"SECTION_ID_VARIABLE" => "ELEMENT_CODE",
		"SECTION_URL" => "",
		"SHOW_ALL_WO_SECTION" => "Y",
                 ....
	),
	false
);?>

<?$APPLICATION->IncludeComponent(
	"bitrix:catalog.element", 
	"detail",
	array(
		.....
		"IBLOCK_ID" => "30",
		"ELEMENT_ID" => "",
		"ELEMENT_CODE" => $_REQUEST["ELEMENT_CODE"],
		"SECTION_ID" => "",
		"SECTION_CODE" => $_REQUEST["SECTION_CODE"],
		"SECTION_URL" => "",
		"DETAIL_URL" => "/podobrat-dver/#ELEMENT_CODE#/",
		"SECTION_ID_VARIABLE" => "ELEMENT_CODE",
		"SECTION_CODE_PATH" => ""
                 .....
	),
	false
);?>

Прописал UrlRewrite:
"CONDITION" => "#^/podobrat-dver/([a-z0-9\-]+)/(\?.*|)$#",
        "RULE" => "CODE=$1",
        "ID" => "",
        "PATH" => "/podobrat-dver/detail.php",


В итоге, на странице списка URL строится верно, происходит переход на детальную страницу, но пишет, что элемент не найдет. В чем может быть ошибка?
  • Вопрос задан
  • 1156 просмотров
Решения вопроса 1
gromdron
@gromdron
Работаю с Bitrix24
bitrix:catalog.element - выводит карточку товара
bitrix:catalog.section - содержимое раздела.

Соответственно, у Вас должно быть два правила в urlrewrite.php
// Для элемента
array(
	"CONDITION" => "#^/podobrat-dver/([a-z0-9\-]+)/([^/\?]*)(.*)$#",
	"RULE" => "SECION_CODE=\$1&ELEMENT_CODE=\$2&$3",
	"PATH" => "/podobrat-dver/detail.php",
)
// Для раздела
array(
	"CONDITION" => "#^/podobrat-dver/([a-z0-9\-]+)/(.*)$#",
	"RULE" => "SECION_CODE=$1&$2",
	"PATH" => "/podobrat-dver/section.php",
)


Соответственно на странице detail.php у вас должен быть вызов одного компонента:
<?$APPLICATION->IncludeComponent(
  "bitrix:catalog.element", 
  "detail",
  array(
    .....
    "IBLOCK_ID" => "30",
    "ELEMENT_ID" => "",
    "ELEMENT_CODE" => $_REQUEST["ELEMENT_CODE"],
    "SECTION_ID" => "",
    "SECTION_CODE" => $_REQUEST["SECION_CODE"],
    "SECTION_URL" => "",
    "DETAIL_URL" => "/podobrat-dver/#ELEMENT_CODE#/",
    "SECTION_ID_VARIABLE" => "ELEMENT_CODE",
    "SECTION_CODE_PATH" => ""
                 .....
  ),
  false
);?>


А на странице section.php у вас должен быть вызов одного компонента:
<?$APPLICATION->IncludeComponent(
  "bitrix:catalog.section", 
  "catalog_list", 
  array(
                 ....
    "DETAIL_URL" => "/podobrat-dver/#ELEMENT_CODE#/",
    "SECTION_CODE" => $_REQUEST["SECTION_CODE"],
    "SECTION_ID" => "",
    "SECTION_URL" => "",
    "SHOW_ALL_WO_SECTION" => "Y",
                 ....
  ),
  false
);?>


За регулярки не ручаюсь (писал навскидку, без тестирования)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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