@MasterMike

Как сделать уникальный ЧПУ на уровне раздела?

Всем привет!

Вопрос справедлив для версии битрикса > 18.
Собственно, в чем вопрос: есть инфоблок, в инфоблоке есть разделы, в каталоге стоит проверка уникальности ЧПУ.

Но по умолчанию "проверка уникальности" проверяет ЧПУ для всего ифноблока целиком, т.е. два разных раздела не могут иметь два разных товара с одним и тем же ЧПУ.
Т.е. физическое расположение этих товаров разное (в разных разделах), однако система представляет их как одинаковые (и если один товар в одном разделе с этим ЧПУ уже есть, то с созданием вторым в другом разделе - и его отображением - наступает облом).

Вопрос: что и как надо сделать, что и как в каком файле поменять, чтобы проверка уникальности ЧПУ осуществлялась на уровне раздела?
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ответы на вопрос 1
winer
@winer
занимаюсь разработкой сайтов на 1c-bitrix
  • Отключаете стандартную проверку на уникальность символьного кода в настройках ИБ.
  • Пишите собственную функцию проверки символьного кода на уникальность в рамках раздела (например checkElementXmlId($xmlId, $sectionId)). Проверку выполняйте с помощью CIblockElement::GetList
  • Пишите собственные обработчики событий OnBeforeIBlockElementAdd и OnBeforeIBlockElementUpdate. В этих событиях проверяйте XML_ID элемента с помощью ранее написанного метода checkElementXmlId. Примеры обработчиков событий можете по ссылка на страницах с документацией.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы