суббота, 1 ноября 2014 г.

Дополнительные страницы каталога в комплексном компоненте

Однажды на проекте возникла задача следующего характера:
для детальных страниц товара требовались несколько вариантов отображения контента, например, у нас есть страница товара с вкладками - Описание, Характеристики, Отзывы по урлу /catalog/product_id.htm.
Изначально открыта вкладка "Описание" (дефолтная).

Требуется на клик по вкладкам  описание, характеристика, отзывы переходить на страницы с урлами:
/catalog/product_id.htm - дефолтная вкладка
/catalog/product_id/params- открыта вкладка "Характеристики"
/catalog/product_id/reviews - открыта вкладка "Отзывы"

Уточняю, это именно разные страницы (например, со своими SEO-тегами), никакой подгрузки аяксом, HistoryAPI и прочего.

Решение следующее:
в параметрах комплексного компонента bitrix:catalog урлы страниц каталога определяются параметром SEF_URL_TEMPLATES следующим образом:
'SEF_URL_TEMPLATES' => array(
    "section" => "#SECTION_CODE_PATH#/",
    "element" => "#ELEMENT_CODE#",
    "compare" => "compare/"
)


Модифицируем SEF_URL_TEMPLATES так:
'SEF_URL_TEMPLATES' => array(
    "section" => "#SECTION_CODE_PATH#/",
    "element" => "#ELEMENT_ID#.htm",
    "compare" => "compare/",
    "element_params" => "#ELEMENT_ID#/params",
    "element_reviews" => "#ELEMENT_ID#/reviews",
)


В шаблон компонента bitrix:catalog добавляем новые файлы - element_params.php и element_reviews.php.
Каждый из этих файлов будет подключаться при совпадении урла, то есть для урла /catalog/product_id/params будет загружен element_params.php, для /catalog/product_id/reviews - element_reviews.php, а для /catalog/product_id.htm - element.php.

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

Комментариев нет:

Отправить комментарий