Нет, не выйдет. В поиск попадают не сами элементы, а айтомы поискового индекса, которые содержат привязки к элементам по id.
Что делает смарт фильтр? Он отбирает id в компоненте каталога. Но ведь результат поиска у вас выводится компонентом поиска и id там именно его айтомов.
Короче самый простой путь реализовать:
Скрыть компонент поиска вообще. Из него получать id товаров которые он нашел, эти id передавать на вход компонента каталога в обычном фильтре, и в нем уже использовать смартфильтр.
В первом случае скорее всего у вас компонент в кэшируемой области. Хотя и другие причины могут быть.
Это как раз один из главных недостатков битрикс - снаружи кажется что все сделать очень просто и везде отличные простые инструменты, но как только возникает малейшая проблема выясняется что надо знать все тонкости работы всех модулей, причем желательно сразу.
Вторая ситуация выглядит странной. Но тут не понятно что за модуль. Не хватает деталей.
В целом из своего опыта скажу, что много раз сталкивался с косяками ядра битрикс, но каждый раз они косались очень специальных вещей и при обычном использовании вряд ли взывали бы проблемы у обычных пользователей.
jcmvbkbc: так имелась ввиду эта видюшка? У меня дочь 9 летняя после нее разобралась. Так что если этим гуманитариям и после этого не понятно - только бить.
Да, этот метод может вернуть все свойства. И ксатит список элементов. Почитайте доки по ссылке.
Вам понадобится arSelect примерно такой array('ID', 'PROPERTY_BREND') если вы хотите получить ID элемента и свойство BREND и arFilter('ID' => $PRODUCT_ID) где $PRODUCT_ID - это id элемента инфоблока, чтобы получить список из одного элемента, нужного вам.
Ну вот видите. У вас производитель хранится в свойстве BREND, а CCatalogProduct:: будут извлеткать только значения свойств с кодом начинающимся с CML2_
Просто у вас у товаров два свойства Производитель - BREND и CML2_MANUFACTURER. И реально производителя 1C пихает в BREND, поэтому его и нет в результатах CCatalogProduct.
CCatalogProduct не работает с к элементов инфоблока - он работает с элементом каталога - это несколько другая абстракция, объединяющая поля элемента инфоблока, свойства CML2_MANUFACTURER и подобные, а так же ценовое предложение с которым связан элемент.
Обратите внимание такие вещи как цена например не являются свойствами элемента инфоблока. Цена это поле ценового предложения (иной сущности) которое связано с Элм.ИБ но его свойством не является. Как-то так.
блин, случайно отправил предущее.
Короче вот что хотел еще добавить: много раз замечал что то что ваяет InkScape потом гораздо лучше отображается во всех браузерах. Ну кроме ie - что там я просто не знаю, потому что вообще не ориентируюсь на него и у меня его нет, но имея ввиду "во всех" я еще и подразумеваю старую оперу на Presto
Первое я пытался запилить. Там правда было + еще несколько "простых" идей, отправки страниц до завершения генерирования частями, для чего использовался сервер gatling и т.п. подобных выкрутасов. Но чтобы совсем хардкорно я делал на Tcl+Redis. Но забросил так как по сути для работы оно мне не надо, а для just for fun стало жрать много сил и времени. Да и гатлинг умер. Забил короче.
А вот как реализовывать второе я даже не могу представить пока. Надо подумать...
Мне кажется именно то, что хочет реализовать ТС должно решаться с помощью ивентов. Вообще это очень хорошо если каждый значимый метод контроллера будет генерировать ивент. Более того - лучше пусть их будет два BeforeИмяМетода(аругментыМетода) и AfterИмяМетода(returnМетода).
Хотя и тут есть минусы.
А идеи давай - не то чтобы я хотел запилить свой велосипед с квадратными колесами, но иногда мне нравится размышлять о том, какой велосипед я бы хотел.
Что делает смарт фильтр? Он отбирает id в компоненте каталога. Но ведь результат поиска у вас выводится компонентом поиска и id там именно его айтомов.
Короче самый простой путь реализовать:
Скрыть компонент поиска вообще. Из него получать id товаров которые он нашел, эти id передавать на вход компонента каталога в обычном фильтре, и в нем уже использовать смартфильтр.