Слава Богу, смастерил решение, хотя и не обошлось без добавления пары строк в ядро. Все работает, тему можете закрыть.
|
Небольшая добавка, после недолгого ковыряния файла component.php компонента, опытным путем установлено, что в обработку этому файлу скармливается массив с уже имеющейся выборкой из определенного количества элементов (если настройками пагинации задано 3, значит и будет их 3), потому мои попытки просто дополнить этот массив пройдясь повторно по нескольким кускам кода не увенчались успехом.
|
|
|
|
|
|
Итак, добрый вечер, уважаемые форумчане. Начну с самого начала, а именно с описательной лирики. В данный момент веду завершающие работы по сайту банкетных залов. Естественно в определенном месте (да что уж там, прямо на главной странице) есть этот самый список банкетных залов, а над ним для удобства поиска располагается фильтр оных (дабы более подходящий проще было найти). Как известно и вполне очевидно банкетные залы находятся внутри определенных заведений, потому я создал 2 типа инфоблоков: заведения и непосредственно банкетные залы. Характеристиками зала выступают такие вещи, как вместимость, цена с человека и разностные ништяки (разрешается ли курить в зале и т.д.). Естественно, для каждого зала необходимо знать, у какого метро он находится, в каком административном округе или же районе и дублировать подобные вещи на каждый банкетный зал из группы тех, что находятся в одном заведении — маразм истинный. Для того и был как раз создан тип инфоблока, а затем и сам инфоблок "Заведения", для которого подобные характеристики указываются. Затем, при добавлении нового зала, мы просто указываем в свойстве типа "Привязка к элементам" к какому заведению он относится.
Теперь вернемся непосредственно к фильтру. Отбирать залы по таким критериям как цена и прочим (одним словом, характеристикам именно ЗАЛА) не составило труда (славься документация Битрикса, аминь). Но вот отфильтровать залы по значениям свойств связанных элементов (читаем несколько раз, дабы понять предложение) — проблема. Я накопал немного схожую штуку, в параметры фильтров можно передать вот такое вот значение: PROPERTY_. - фильтр по значениям полей связанных элементов, но это даст мне фильтрацию именно по значениям ПОЛЕЙ, а нужно мне по значениям СВОЙСТВ (ссылка на документацию: ). Я пробовал накрутить эдакую "постфильтрацию", то есть, сначала в параметры вызова компонента передавать список тех характеристик, которые присущи только для залов, а потом уже в шаблоне вывода списка залов средствами API проводить фильтрацию по тем параметрам, которые характерны для ресторанов, в которых эти залы находятся. Работает, да, круто. Но сбивается пагинация, ведь в шаблон вывода передается выборка какого-то определенного размера, а я своими дерзкими и не хитрыми действиями часть выборки не вывожу. То есть, получаем, что залов должно быть на странице 10, а я показываю, например, 3. То есть тоже так себе вариант. Список банкетных залов выводится компонентом bitix.news-list (если быть совсем точным, то компонентом, созданным на его основе, полной, так скажем, основе). Повторю вопрос, дабы ни кому не пришлось перечитывать этот талмуд еще раз, чтобы его найти: каким образом можно реализовать фильтрацию по значениям свойств связанных элементов? Заранее большое спасибо. |
|
|
|
|
|
Доброе и бессонное утро соискателям приключений.
Столкнулся этой ночью я с такой казалось бы тривиальной задачей, которая немного подрезала мне крылья и подвернула ногу. Итак, допустим мой сайт посвящен тематике тортов и есть на нем страница "Заказать торт", на данной странице размещено 3 элемента , которые анонсят пользователю о том, что есть соответственно 5 разновидностей тортов - пускай будут "Вафельные", "Сахарные" и "Слоеные". Каждый подобный инфоблок представлен в виде записи в таблице и при клике на соответствующую запись, она раскрывается табличкой, в которой идет описание уже непосредственно конкретных тортов данного вида. Например, если кликнуть по "Вафельным" тортам, мы получим список "Причуда", "Вафельница" и тд. Ясное дело, что выводится еще и картинка для анонса и сделано все как надо и красиво. Допустим покупатель решил заказать себе торт "Причуда", тогда он переходит по тэгу и попадает на страницу с подробным описанием, а именно , где наблюдает этот торт с разных ракурсов и красочное к нему описание. Внизу таковой страницы красуется кнопка "Заказать", к которой уже неизбежно тянется его курсор и само собой кликается. Тут то он и попадает на страницу с элементом , в которой заполняет стандартную форму, то есть указывает свое ФИО и прочее, а так же в последний раз убеждается в том, что он хочет именно "Вафельный" торт и именно "Причуду". Необходимо, чтобы при переходе на данную страницу с формой в последних двух ComboBox-ах сразу же был указан тот самый ВИД и НАЗВАНИЕ торта, который он выбрал. С видом торта все было просто и гладко, но не с названием. Так как выбран вид торта "Вафельный", то в ComboBox-е не должно появляться тортов из других разделов, однако появляется и тебе слоеный "Наполеон" и все вместе с ним. Проблема, как вы верно заметили с фильтром, который заполняет мне тэг <select></select>. В данный момент проблемный фильтр выглядит вот так и сугубо для того, чтобы пока что костыльно получить только вафельные торты и ничего лишнего:
Однако, как видите, раз я сюда пишу, значит что то не так. В отчаянии пробовал IBLOCK_ID и некоторые другие критерии, однако все ни как. Вот как выглядит описание компонента : ![]() А вот так выглядит Array данного компонента:
|
|||||
|
|
|