фильтрация каталога по тегам

Рейтинг: 3.9881  
На голосовании
Предложил Пользователь 110733 22.05.2013 22:07:17

фильтрация каталога по тегам

Я хочу фильтровать каталог по тегам. Для чего мне это нужно напишу ниже, так вот, у меня есть теги "Евро" и "Европа". Мне нужно компонентом catalog.section (или хотя бы функцией CIBlockElement::GetList() ) получить список элементов, содержащих тег "Евро".

Я пытаюсь составить такой arrFilter: Array("?TAGS" => "Евро" )
Но в поиск по тегам происходит как по обычной строке и мне возвращается результаты и для элементов содержащих тег "Евро", так и для элементов "Европа".
Насколько я понимаю фильтровать именно по самим тегам, а не по подстроке составленной из тегов нельзя. Тогда у меня возникла мысль - теги идут через запятую, следовательно можно составить Array("?TAGS" => "Евро," ) ; Но тогда в поиске не будет учавствовать последний тег, ибо bitrix при сохранении элемента ИБ в строке тегов отрезает крайнюю запятую.

Для того, чтобы хоть как-то можно было отфильтровать каталог по тегам, я предлагаю изменить ядро и не отрезать крайнюю запятую, а наоборот, выставлять её автоматически, если она отсутствует.

Но если сделать вообще отдельный параметр фильтра с возможность фильтровать каталог по тегам, то будет ещё лучше.

--------------
Вопрос - кому надо фильтровать каталог по тегам? Ответ очень прост. У вас есть на сайте блок "похожие товары"? Выставлять каждому товару список "похожих" или связных товаров - это сложно. Проще задать товарам теги и строить блок похожих товаров просто фильтруя каталог по совпадающим тегам.

Рейтинг: 0  
Пользователь 2235817 08.12.2018 17:58:27
Можно сделать через конструкцию вида

$GLOBALS['arrTagsFilter'] = array("TAGS" => array('%, тест', 'тест,%', 'тест', '%, тест,%'));

Таким образом^

1.  'тест' - если единственный
2. 'тест,%' - в начале строки и есть еще
3. '%, тест,%' - в середине строки
4. '%, тест' - в конце строки