We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 26709
    • 4 Posts
    Quote from: Temus at May 27, 2009, 06:38 PM

    А если развить предложенный выше "брутальный" вариант:
    1) Получить из базы список брендов. Один запрос к базе.
    2) В переменную вывести меню каталога продукции со всеми товарами и значениями tv с брендом (например title="[+brend+]"): $all=$modx->runSnippet(’Wayfinder’, array(...)); Таким образом Wayfinder выполняется только один раз.
    3) Для каждого бренда из списка циклом вывести его название + $all предварительно обработанный preg_replace, который удалит все лишние строки, ориентируясь на название бренда в пунктах меню. Думаю несколько вызовов preg_replace сервер потянет.

    Неплохая идея, но проблема в том, что как определить, какой документ удалить из меню. Ведь бренды присвоены только к товарам. А родительские папки вплоть до корня каталога не имеют бренда. Поэтому проблема именно в том, чтобы отсеять и родительские папки.
      • 29487
      • 385 Posts
      1. Сначала трогаем только те <li>, где прописан бренд. Либо удаляем, либо оставляем.
      2. Затем уже в самом конечном результате, перед выводом, ищем и удаляем <li>какой-нибудь текст<ul> </ul></li> Три раза, по числу родительских уровней. Итого ещё 3 вызова preg_replace.
        • 26709
        • 4 Posts
        Да, но товарs в одной категории могут быть разного производителя, вперемешку. Тут обычным удалением не обойтись sad
          • 29487
          • 385 Posts
          3) Для каждого бренда из списка циклом вывести его название + $all предварительно обработанный preg_replace, который удалит все лишние строки, ориентируясь на название бренда в пунктах меню.

          Там уже не останется товаров разных производителей. Для каждого бренда мы получили копию всего дерева, где удалены все пункты, где указан неверный бренд (пункты где вообще бренд не указан мы не трогаем)
            • 26709
            • 4 Posts
            Наконец, придумал способ решения. Написал сниппет. правда он делает очень много запросов к БД. Оптимизирую и выложу сюда.
              • 26709
              • 4 Posts
              Решил проблему, написав сниппет. Правда он специфический, поэтому не вижу смысла выкладывать его. При необходимости его можно легко сделать универсальным, получится довольно неплохой способ из дерева катаога любой вложенности сортировать документы по брендам или другим параметрам.

              Если кому понадобится, обращайтесь в личку или в аську.