Отдельный URL у торговых предложений

3k
Алексей,

Опишу вариант создания отдельного урла для торговых предложений битрикс (почти стандартный). На примере: /catalog/code-section-1/code-section-2/code-element/12345/

Опишу вариант создания отдельного урла для торговых предложений битрикс (почти стандартный). На примере: /catalog/code-section-1/code-section-2/code-element/12345/

Первым делом идём в настройки инфоблока торговых предложений и заполняем "URL страницы детального просмотра" значением, например, #PRODUCT_URL#/#ID#/. Вместо #ID# можно попробовать использовать символьный код: #ELEMENT_CODE#, но тогда длина URL будет неадекватной :)

Пример заполненного 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#/. Сохраняем.

Пример заполненного URL в инфоблоке торговых предложений

Теперь страница СКУ перестанет отдавать 404 и будет открываться детальная страница товара. А в файле шаблона element.php станет доступна переменная $arResult["VARIABLES"]["OFFER_ID"], используя которую можно вывести необходимые данные в карточке товара.

Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.

Опубликовано 20 сентября 2022 | Обновлено 23 августа 2023
торговые предложения, разработчику, костыли, чпу
Поделиться
Комментарии
❮…❯
Авторизуйтесь чтобы получать уведомления об ответе
8 сен 2023
Доброго времени суток. Весьма интересный вариант, спасибо помогло! Но возник другой вопрос, а как сделать вывод торговых предложений если таковые имеются отдельными карточками в списке?
Алексей
16 окт 2023
Василина, добрый день, без разработчика никак. Возможно вам не нужны совсем торговые предложения и стоит от них отказаться? Сделать все товары простыми и не нужны будут данные костыли)
23 авг 2023
Добрый день! Закидываем компонент catalog в папку /local/components/bitrix/ и редактируем .parameters.php Находим раздел PARAMETERS => SEF_MODE и добавляем в него массив: Не нахожу куда разместить, подскажите пожалуйста?
Алексей
16 окт 2023
Иван, напиши мне на почту, постараюсь подсказать
26 окт 2022
Добрый день. Возникла проблема, ошибка что файл offer не существует. Скопировала element, вроде заработало, но теперь в url вместо id можно вписать что угодно и 404 ошибки не будет. Подскажите, пожалуйста, еще такой момент, как сделать чтобы выбранный offer отображался (по url)? Возможно глупый вопрос, но направьте, пожалуйста.
Алексей
26 окт 2022
Ирина, что бы компонент отдавал 404 страницу, необходимо делать проверку наличия торг. предложения по id $arResult["VARIABLES"]["OFFER_ID"]. Что бы по URL выводилось нужное торг. предложение, можно его ID передать через параметры компонента catalog.element, а внутри уже модифицировать вывод данных. Обратитесь к любому разработчику.
Опишу вариант создания отдельного урла для торговых предложений битрикс (почти стандартный). На примере: /catalog/code-section-1/code-section-2/code-element/12345/