Please wait!
Please wait!

ALEXEYWORLD.COM

Сервисы Мои работы Контакты Друзья сайта О проекте
alexeyworld.com
Главная rss sitemap Контакты
Помощь проекту
Добавить в закладки

Формирование DETAIL_PAGE_URL в bitrix, когда товар в нескольких группах

bitrixРаботая с bitrix столкнулся с одной проблемой, точнее с тем, как формируется DETAIL_PAGE_URL у элементов. В целом все хорошо и работает. Но в случае, когда товар находится в нескольких группах, то может возникнуть проблема.

Итак, как же формируется DETAIL_PAGE_URL? Для формирования пути используется функция ReplaceDetailUrl, кторая находится в файле bitrix/modules/iblock/classes/general/iblock.php. Вторым параметром функция принимает элемент, для которого необходимо построить url. И в этом же элементе есть поле IBLOCK_SECTION_ID, по которому и получаем url раздела. Вся проблема в том, что товар в нескольких группах, то это поле всегда заполняется разделом с наименьшим ID. Я же столкнулся с задачей, когда для работающего проекта строились неверные url для товара из-за того, что первым разделом был тот, который указывать не нужно. Таково требование было. Как же быть в данной ситуации?

Варианта решения этой проблемы два: модифицировать функцию ReplaceDetailUrl или во всех местах вывода товара в файле result_modifier.php переписывать значение DETAIL_PAGE_URL.

В обоих случаях нужно будет получить списко разделов, в которых находится элемент, при помощи функции CIBlockElement::GetElementGroups, выбрать нужный раздел из списка и записать его в IBLOCK_SECTION_ID. Если мы это сделали в result_modifier.php, то теперь можем вызывать функцию ReplaceDetailUrl и присваивать полученное значение в поле DETAIL_PAGE_URL.

Если это было сделано в начала функции ReplaceDetailUrl, тобольше никаких действий делать не нужно.

Какой вариант является более приемлемым решать лично каждому.

просмотров: 2621 |



каталог mailru Правильный CSS!
© 2011, alexeyworld.com
Использование материалов только с разрешения администрации и обратной ссылки.