На многих проектах построенных на Битрикс 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'] в соответствии с поставленной задачей