есть 2 нужных мне свойства: Коллекция и Второе свойство
На основе этого мне необходимо собрать массив вида Название коллекции => [список значений второго свойства, которое встречается с этой коллекцией]
Дело в том что товаров 190 тысяч. Я боюсь что если запущу такой скрипт, то сервер упадет. Можно ли это как то делать пошагово, если да, то как. Или может будут какие то ещё советы?
Спасибо
Массив собрать где и для чего?
Для того чтобы на основе этого массива перезаписать данные в соседнем инфоблоке с самими коллекциями, вписав в множественное свойство каждой коллекции возможные варианты значений этого же свойства в каталоге товаров для дальнейшей фильтрации
Изначально вижу какие-то странные манипуляции непонятно зачем. если запускать скрипт с постраничной обработкой сайт не упадёт. но я бы послушал ещё какую задачу хочется решить такими манипулциями. во-первых я не очень понял какие значения свойств куда требуется перезаписать, и зачем всё это. Пока звучит как попытка переизобрести хайлоад блок и свойство типа "справочник"
Максимально просто: Есть каталог товаров. У него есть строковые свойства. В одном свойстве хранится название коллекции. Другое свойство, ну, к примеру "Материал" содержит соответственно название материала. Мне нужно знать какие виды материалов содержит каждая из коллекций в каталоге товаров, для того чтобы дать такие же значения такому же свойству в инфоблоке с коллекциями. Для фильтрации. Структуру имеющихся данных мне менять нельзя, только лепить сверху.
а вы подумали что будет когда в товары добавится новая коллекция с новыми материалами? что будет с тем функционалом который вы сейчас обсуждаете?
да, поэтому это будет либо на крон событии либо на событии выгрузки каталога
звучит как костыль. ну если хочется - делайте. снизить нагрузку можно постраничным вызовом элементов. но не уверен что это сильно поможет решить задачу
1 свойство я привела в пример, но если этих свойств будет 40 например, то создавать хайлоады и доп. инфоблоки может стать проблемой
по описанию задачи (фильтр в разделе коллекций) можно ещё просто фильтр самостоятельно оформить чтобы не было дополнительных свойств. чтобы сам фильтр собирал эти значения и хранил где-то в кеше или отдельной бд, или json-файлике
знаю что звучит как костыль, это он и есть, я просто не вижу других вариантов в текущих условиях 😭 чтобы фильтр собирал эти значения и организовывается все, но что вы именно подразумеваете под "фильтр собирал" я не совсем поняла, мне нужно один раз оформить автоматизированный скрипт для дальнейшей его работы без моего участия
ну есть компонент битрикса - умный фильтр. у него есть шаблон. шаблон можно кастомизировать таким образом, чтобы при вызове компонента происходил запрос к этим свойствам, значения оформлялись в понятную и подходящую структуру, записывались в какой-то кеш, и далее, если не было изменений каталога/свойств, брал данные из этого кеша. и тогда в фильтре будут выводиться нужные строки свойств. но это на деле не так просто как выглядит на словах
инфоблоки никак не связаны друг с другом, значения просто строки, тогда надо и выгрузку корректировать для того чтобы хоть какая то привязка была
не понимаю при чём тут связь инфоблоков и выгрузка. вот возьмём для примера ламоду. вот слева фильтр. это выводится на страницу компонентом умный фильтр. его шаблон можно исправить и выводить по своему алгоритму параметры этого фильтра
ну, каким то образом работать со сгенерированными фасетными индексами вы предлагаете?
у инфоблока "коллекции" есть сейчас свойство материал?
Делаете пошаговку по инфоблоку коллекций. Ищите товары по колекции. Затем по их id подымаете нужно свойство товаров. Для поддержания актуальности есть события изменения значений свойств, вешайтесь на них.
звучит довольно гениально, спасибо большое ❤️❤️❤️
(голосом Шелдона) Сарказм?
интересно что будет если сделать группировку по элементам коллекция, материал :) вроде хватает тяжело для базы понятно... но может там делов то пару секунд запросу
в общем идея получить хеш таблицу в кеш (коллекция - материалы) и после просто сортировкой по ид пройтись по товарам пошаговым агентом например
попробуй группировку, скорее всего 3-10 секунд операция обновления займет... если коллекций не десятки тысяч
Обсуждают сегодня