CIBlockElement::GetList - выводить все разделы элемента

Рейтинг: 2.8362  
Отложено
Предложил Пользователь 1102 01.12.2014 21:37:36

CIBlockElement::GetList - выводить все разделы элемента

Сейчас при выводе массива элементов выводится только один раздел к которому принадлежит элемент (минимальный SECTION_ID). Приходится либо ограничивать привязку элемента только к одному разделу, либо делать дополнительное обращение к БД (CIBlockElement::GetElementGroups).

Конечно, если это не притормозит GetList в целом.

Хм, присмотрелся внимательнее, думаю предложение можно удалить.

Рейтинг: 0.8902  
Пользователь 1102 02.12.2014 12:48:46
Пара мыслей вдогонку. Понятно, что при сегодняшней архитектуре в таблице хранится только один ID раздела, к которому "принадлежит" элемент и все уже наделали себе костылей, чтобы выводить привязку к множественным разделам. Но...

1. Я видел не один проект, в котором при необходимости обработки разделов элемента (как правило, вывод ID=>NAME + ссылка в дизайне), в цикле перебора элементов контрола news.list каждый раз вызывается CIBlockElement::GetElementGroups. Разве это нормально? Мало кто заранее один раз формирует массив разделов и дальше им пользуется (или делает отдельный контрол с кэшированием).

2. По мне так проще завести отдельный инфоблок-справочник, сделать свойство в исходном инфоблоке (привязку к элементам словаря) и дальше пользоваться GetList'ом, а многие новички думают, что завести десять разделов проще, далее см. п.1.

3. Может я ошибаюсь, но даже в случае единственного раздела элемента, по-умолчанию, нет его имени, шо опять базу дергать?!

В Битриксе реализованы гораздо более сложные вещи, а тут приходится городить костыли на ровном месте. Не по фен-шую получается.