We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 31413
    • 52 Posts
    Ну в общем в итоге я так и сделал. Думал просто обойтись одним чанком... Не вышло undecided
      • 13889
      • 39 Posts
      Помогите ... никак не пойму в чем тут дело ...
      Создал параметр TV под именем "vid" - вид матрасов ... вида всего 2а : пружинные, безпружинные и т.д.

      Все матрасы 20 штук лежат в каталоге с ID=106 я хочу на отдельных страницах выводить либо пружинные либо безпружинные матрасы

      стиль вывода тоже сделал "vid" (чанк) ... итак мой код :
      [[Ditto? &startID=`106` &summarize=`30` &hideFolders=`1` &tpl=`vid` &paginate=`1` &filter=`vid, ’Безпружинные’, 2`]]

      Вот при таком раскладе на страницу вываливаются все 20 матрасов - то есть фильтр не срабатывает .. в чем тут загвоздка huh?
      и посылать меня на другую страницу не нада - уже посылали ... там есть тока пример и без пояснений ... (((( в нем то я и не разберусь никак ...
        • 31022
        • 328 Posts
        vid, ’Безпружинные’, 2

        Уберите кавычки и пробелы. "Беспружинные" через "с". Должно заработать. Возможно, придется добавить vid в &hiddenFields, но вряд ли.
          • 13889
          • 39 Posts
          [[Ditto? &startID=`106` &summarize=`30` &hideFolders=`1` &tpl=`vid` &paginate=`1` &filter=`vid,Безпружинные,2`]] так huh

          а про беЗпружинные - тут дело не до грамматики ... тут в принципе работы нада разобраться ... я уже даже слова заменил на цифры ... то есть у меня: 1-пружинные, 2-безпружинные

          И все равно не работает:
          [[Ditto? &startID=`106` &summarize=`30` &hideFolders=`1` &tpl=`vid` &paginate=`1` &filter=`vid,1,2`]] - это сортировка по значению TV параметра = 1 ... все равно вываливает весь список, не отсекая товары с TV параметром =2 (((((
            • 31022
            • 328 Posts
            Тогда включите дебаг и посмотрите, захватывает ли Дитто значения вашей tv. &debug=`1` это. Если не захватывает -- допишите в вызов &hiddenFields=`vid`. Для дебага нужен некешированный вызов. Про фильтрацию такого не помню, но попробуйте.
              • 13889
              • 39 Posts
              Оказалось что я пытался это проделать со старой версией Дитто smiley 1.02 )))) вротмненоги
              Спасибо за помощь ... как всегда оказалось что у меня руки кривые )))
              Обновил Дитто и всю систему .... фильтр заработал но как то странно ... мне нужно выводить (например) только товары с значением TV 1 ... я пишу в TV каждого товара 1 и он мне выводит все другие 2,3,4 но только не 1 ... а для страницы с товарами 2 - выводит все кроме 2 +)))) что это такое ?

              ЗЫ Разобрался ... косяк был в том что фильтр нада немного не так писать , а именно: &filter=`class,1,1` - если задача стоит вывести товары с параметром 1 =) , товары с параметром 2 тогда так &filter=`class,2,1`

              Всем спасибо большое за помощь )))) никада не брошу МОДх за такое сообщество smileyи поддержку )))
                • 31413
                • 52 Posts
                Еще один вопрос к знатокам: реально ли в чанке шаблона списка документов с помощью Ditto подставлять разные значения некоего параметра в зависимости от значения TV документа. Если конкретно - то есть документы - один документ - один товар. У каждого товара есть TV цена и TV цена доставки. При выводе отдельного документа (странички товара) выполняется снипет, который выводит значение цены в зависимости от значения цены доставки. Вот так:
                $d_price = $modx->documentObject['delivery_price'];
                $price = $modx->documentObject['price'];
                $n_price = ceil($price[1]*0.95);
                if($d_price[1]==0)
                echo "одна цена";
                else echo "другая цена";
                


                Но вот при выводе списка всех этих документов (товаров) напротив каждого тоже должна присутствовать цена и причем также разная в зависимости от значения цены доставки. Т.е. надо как то в чанк шаблона вывода вставить снипет, который это будет делать. Но вот как в этом снипете получать значения TV не от того документа в котором выводиться список, а от каждого конкретного документа из этого списка?... И реально ли это вообще?
                  • 31136
                  • 72 Posts
                  Quote from: Veosys at Feb 27, 2009, 12:52 PM

                  Т.е. надо как то в чанк шаблона вывода вставить снипет, который это будет делать. Но вот как в этом снипете получать значения TV не от того документа в котором выводиться список, а от каждого конкретного документа из этого списка?... И реально ли это вообще?

                  Вам необходимо в Сниппет передавать ID документа каждого товара (через placeholder [+id+] в шаблоне например). Ваш нынешний сниппет работает только с текущим документом, и я думаю его следует сделать немного более универсальным:
                  if(isset($id)) $doc = $modx->getDocument($id);
                  else $doc = $modx->documentObject;
                  
                  $d_price = $doc['delivery_price'];
                  $price = $doc['price'];
                  
                  $n_price = ceil($price[1]*0.95);
                  if($d_price[1]==0)
                  echo "одна цена"; // Думаю, здесь (как и в др. сниппетах) правильнее использовать return вместо echo
                  else echo "другая цена";
                  

                  (пример не тестировал, привожу в качестве продолжения мысли)

                  Такой Cниппет можно вызывать из шаблона Ditto с параметром id:
                  [!PriceSnippet? &id=`[+id+]`!]

                  Без параметра id он должен работать как и прежде, сохранив обратную совместимость.

                    • 31413
                    • 52 Posts
                    Попробовал. Но возникла проблема - параметры типа pagetitle таким образом по айдишнику можно получить, а вот
                    $price = $doc['price'];
                    не работает. Т.е. получить TV почему то не выходит. В итоге пока решил вопрос таким вот вызовом снипета:
                     [!price? &id=`[+id+]`&price=`[+price+]` &delivery_price=`[+delivery_price+]`!]

                    Ну и соответственно в снипете в зависимости от существования переменной id так или иначе считается цена - для отдельной страницы товара и для списка. Может это и не совсем изящное решение, но работает.
                    Спасибо за помощь! Я почему то совсем забыл что снипет можно вызывать с параметрами smiley
                      • 31136
                      • 72 Posts
                      Quote from: Veosys at Mar 04, 2009, 03:34 PM

                      Я почему то совсем забыл что снипет можно вызывать с параметрами smiley

                      А я забыл, что функция $modx->getDocument() не возвращает значения TV документа.
                      Конечно же здесь нужно использовать функцию $modx->getTemplateVar() (она по ID документа возвращает массив значений TV). Пример писать не буду, уверен, разберетесь сами!