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

400
Алексей,

Опишу вариант создания отдельного урла для торговых предложений битрикс (почти стандартный). На примере: /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
торговые предложения, разработчику, костыли, чпу
Поделиться
Комментарии
Авторизуйтесь чтобы получать уведомления об ответе
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/