Отдельный URL у торговых предложений
Опишу вариант создания отдельного урла для торговых предложений битрикс (почти стандартный). На примере: /catalog/code-section-1/code-section-2/code-element/12345/
Первым делом идём в настройки инфоблока торговых предложений и заполняем "URL страницы детального просмотра" значением, например, #PRODUCT_URL#/#ID#/. Вместо #ID# можно попробовать использовать символьный код: #ELEMENT_CODE#, но тогда длина URL будет неадекватной :)
Всё, с этого момента, ссылки на предложения будут формироваться как отдельные. Но работать не будут, т.к. компонент каталога не умеет с ними работать. Научим. Закидываем компонент catalog в папку /local/components/bitrix/ и редактируем .parameters.php Находим массив PARAMETERS => SEF_MODE и добавляем в него массив:"offer" => array( "NAME" => 'Торговое предложение', "DEFAULT" => "#SECTION_CODE_PATH#/#ELEMENT_CODE#/#OFFER_ID#/", "VARIABLES" => array( "ELEMENT_ID", "ELEMENT_CODE", "SECTION_ID", "SECTION_CODE", "SECTION_CODE_PATH", "OFFER_ID" ), ),
Далее в component.php добавляем 2 строки после $componentPage = "section";:
if ($componentPage === "smart_filter") $componentPage = "section"; if ($componentPage === "offer") $componentPage = "element";
В настройках компонента появится новый параметр "Торговое предложение", которое будет заполнено дефолтным значением #SECTION_CODE_PATH#/#ELEMENT_CODE#/#OFFER_ID#/. Сохраняем.
Теперь страница СКУ перестанет отдавать 404 и будет открываться детальная страница товара. А в файле шаблона element.php станет доступна переменная $arResult["VARIABLES"]["OFFER_ID"], используя которую можно вывести необходимые данные в карточке товара.
Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.