На многих проектах построенных на Битрикс CMS применяются торговые предложения и возникает задача создать прямую ссылку на конкретное предложение. Я поступил следующим образом
Ссылку формировал следующего формата /catalog/p/element_code/sku_code/ где /catalog/ - путь к каталогу товаров; element_code - код отдельного товара имеющего торговые предложения; sku_code - состоит из ИД товара и ИД торгового предложения разделенные символом '-'. В прочем, формат идентификатора торгового предложения зависит от конкретной задачи - при желании его можно изменить либо на ИД SKU, либо на строковый код предложения, либо на любой другой параметр, который позволит вам однозначно опознать отдельное предложение.
В первую очередь на странице подключения комплексного компонента каталога я разбираю текущий URL и результаты передаю в параметры компонента
$curDir = trim($APPLICATION->GetCurDir(),'/'); $arCur = explode('/',$curDir); $last = end($arCur); // strpos($curDir,'/f/') - исключает применение умного фильтра $tpl = (strpos($last,'-')===false || strpos($curDir,'/f/')) ? "p/#ELEMENT_CODE#/" : "p/#ELEMENT_CODE#/#PID#/"; IncludeComponent( "bitrix:catalog", "catalog", array( //... "SEF_URL_TEMPLATES" => array( "sections" => "", "section" => "#SECTION_CODE#/", "element" => $tpl, "compare" => "compare/", "smart_filter" => "#SECTION_CODE#/f/#SMART_FILTER_PATH#/", ) //... ) );
Далее в компоненте bitrix:catalog (в файле element.php) обрабатываю полученные данные:
IncludeComponent( "bitrix:catalog.element", "", array( 'SELECTED_SKU_ID' => (isset($arResult['VARIABLES']['PID']) ? $arResult['VARIABLES']['PID'] : ''), //... ) );Далее в шаблоне компонента остается обработать параметр $arParams['SELECTED_SKU_ID'] в соответствии с поставленной задачей