We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 21854
    • 58 Posts
    Brezhnev Ivan Reply #11, 16 years ago
    Quote from: wowkas at Oct 17, 2010, 04:10 PM

    Попробуйте почистить кеш, и проверте весь код в Дитто в форме и в снипетах.
    Попробуйте воспользоваться функцией &debug в Дитто, что бы посмотреть по каким критериям работают фильтра
    За кэш ты наверное пошутил? А насчет &debug попробую...
      Working with MODX Revo|Evo, Laravel Framework. My website http://vanchelo.pp.ua
      • 21854
      • 58 Posts
      Brezhnev Ivan Reply #12, 16 years ago
      Ниче не получается, вот что пишет
      Parse error: syntax error, unexpected '[' in \assets\snippets\ditto\classes\ditto.class.inc.php(566) : eval()'d code on line 1

      В debug ниче странного не нашел, пишет
      Когда указываю sortDir=[!sorting!] (кавчки опустил, лень копировать):
      Сортировать по (sortBy): xxx
      Порядок сортировки (sortDir): [!SORTING!]

      Когда указываю sortDir=[[sorting]]:
      Сортировать по (sortBy): xxx
      Порядок сортировки (sortDir): [[SORTIN (странно почему обрезается последние 3 символа "G]]")
        Working with MODX Revo|Evo, Laravel Framework. My website http://vanchelo.pp.ua
        • 21854
        • 58 Posts
        Brezhnev Ivan Reply #13, 16 years ago
        Сделал методом проб и ошибок, (через GET) т.к. я не программер, с помощью дополнения которое идет вместе с ditto - request, и сниппета [!isselected!]:
        Форма на странице для выбора сортировки
        <form>
         <select name="ditto_sortDir" onchange="submit()">
          <option value="ASC" [!isselected? &name=`ditto_sortDir` &value=`ASC`!]>По возрастанию</option>
          <option value="DESC" [!isselected? &name=`ditto_sortDir` &value=`DESC`!]>По убыванию</option>
         </select>
        </form>
        


        Вызов ditto на странице
        [!Ditto? &parents=1 &display=1 &tpl=xxx &paginate=1 &paginateAlwaysShowLinks=1 &sortBy=`price` &sortDir=ASC &extenders=`request` !]


        Сниппет [!isselected!]:
        <?php
        if (isset ($_GET[$name])&& $_GET[$name]==$value) 
        return 'selected="selected"';
        else 
        return '';
        ?>
        


        Может кто-то предложит что-то получше
          Working with MODX Revo|Evo, Laravel Framework. My website http://vanchelo.pp.ua
          • 21854
          • 58 Posts
          Brezhnev Ivan Reply #14, 16 years ago
          Сделал методом проб и ошибок, (через POST) т.к. я не программер, с помощью сниппета [!isselected!] - для запоминания состояния сортировки <select> и дополнения ditto &extenders=`request`:
          Форма на странице для выбора сортировки
          <form method="POST">
           <select name="ditto_sortDir" onchange="submit()">
            <option value="ASC" [!isselected? &name=`ditto_sortDir` &value=`ASC`!]>По возрастанию</option>
            <option value="DESC" [!isselected? &name=`ditto_sortDir` &value=`DESC`!]>По убыванию</option>
           </select>
          </form>
          


          Вызов ditto на странице
          [!Ditto? &parents=1 &display=1 &tpl=xxx &paginate=1 &paginateAlwaysShowLinks=1 &sortBy=`price` &sortDir=ASC &extenders=`request` !]


          Сниппет [!isselected!]:
          <?php
          if (isset ($_POST[$name])&& $_POST[$name]==$value) 
          return 'selected="selected"';
          else 
          return '';
          ?>
          


          Может кто-то предложит что-то получше
            Working with MODX Revo|Evo, Laravel Framework. My website http://vanchelo.pp.ua
            • 21854
            • 58 Posts
            Brezhnev Ivan Reply #15, 16 years ago
            Еще добавил сортировку по названию и по цене вместе:
            <form method="POST">
            <select name="ditto_sortDir">
            <option value="ASC" [!isselected? &name=`ditto_sortDir` &value=`ASC`!]>По возрастанию</option>
            <option value="DESC" [!isselected? &name=`ditto_sortDir` &value=`DESC`!]>По убыванию</option>
            </select>
            <select name="ditto_sortBy">
            <option value="pagetitle" [!isselected? &name=`ditto_sortBy` &value=`pagetitle`!]>По Названию</option>
            <option value="price" [!isselected? &name=`ditto_sortBy` &value=`price`!]>По Цене</option>
            </select>
            <input type="submit" value="OK" />
            </form>
              Working with MODX Revo|Evo, Laravel Framework. My website http://vanchelo.pp.ua
              • 32672
              • 38 Posts
              Слушай только я не совсем понимаю как ты собираешься передавать значение ASC или DESC в &sortDir=, как без снипета его передать я ума не приложу.

              Всё бы хорошо, всё бы отлично но возник ещё один вопрос, как заставить Ditto выводить доки если в форме ещё нечего не задано, у меня стоят такие фильтра
              &filter=`product,@EVAL return $_POST['product'];,7|category,@EVAL return $_POST['category'];,7`


              я пытался к ним подставить
              &filter=`product,mufta,2|product,@EVAL return $_POST['product'];,7|category,@EVAL return $_POST['category'];,7`


              Но нечего не показывает, так как фильтра то работают, и они ждут переменных с формы, а коль их нет, то и нечего не будут показывать.
              Можно это как-то обойтись без хирургического вмешательства в снипеты, тобишь без подмены ditto ?
                • 9085
                • 630 Posts
                как-то так:
                @EVAL return isset($_POST['category'])?$_POST['category']:'ASC';
                

                (вместо ’ASC’ подставить значение по умолчанию)

                Удачи!

                ps. Может пора HTML PHP подтянуть? Вопросы типа "как выбрать select" и "как, вывести если POST не установлен" мягко намекают, что базовых знаний не хватает... Без них дальше сложнее будет... Хотя, будет лучше, если ошибаюсь.
                  Правильно заданный вопрос повышает вероятность получения нужного ответа.
                  Что-то не работает? Загляните в лог ошибок!
                  Есть проблема? "Локализуйте" её!
                  Ответы на большинство вопросов по MODx | MODx RTFM | API Evo Revo | галопом по Европам Азиям smiley wikibooks(ru) Ditto(en) | Wayfinder e-book | Заметки и о MODx
                  • 21854
                  • 58 Posts
                  Brezhnev Ivan Reply #18, 16 years ago
                  Quote from: npobolka at Oct 18, 2010, 08:06 AM

                  Еще добавил сортировку по названию и по цене вместе:
                  <form method="POST">
                  <select name="ditto_sortDir">
                  <option value="ASC" [!isselected? &name=`ditto_sortDir` &value=`ASC`!]>По возрастанию</option>
                  <option value="DESC" [!isselected? &name=`ditto_sortDir` &value=`DESC`!]>По убыванию</option>
                  </select>
                  <select name="ditto_sortBy">
                  <option value="pagetitle" [!isselected? &name=`ditto_sortBy` &value=`pagetitle`!]>По Названию</option>
                  <option value="price" [!isselected? &name=`ditto_sortBy` &value=`price`!]>По Цене</option>
                  </select>
                  <input type="submit" value="OK" />
                  </form>

                  Quote from: wowkas at Oct 18, 2010, 06:05 PM

                  Слушай только я не совсем понимаю как ты собираешься передавать значение ASC или DESC в &sortDir=, как без снипета его передать я ума не приложу.

                  Всё бы хорошо, всё бы отлично но возник ещё один вопрос, как заставить Ditto выводить доки если в форме ещё нечего не задано, у меня стоят такие фильтра
                  &filter=`product,@EVAL return $_POST['product'];,7|category,@EVAL return $_POST['category'];,7`


                  я пытался к ним подставить
                  &filter=`product,mufta,2|product,@EVAL return $_POST['product'];,7|category,@EVAL return $_POST['category'];,7`


                  Но нечего не показывает, так как фильтра то работают, и они ждут переменных с формы, а коль их нет, то и нечего не будут показывать.
                  Можно это как-то обойтись без хирургического вмешательства в снипеты, тобишь без подмены ditto ?
                  &filter=xxx - не использовал ранее и пока нет необходимости, а данные передаются с помощью стандартного дополнения ditto &extendert=request - и все дела, я все подробно описал в постах выше, читай внимательно и все получится, без доп. спиппентов

                  А какую функцию у тебя фильтра выполняют, зачем ты ими пользуешься в данном случае можешь объяснить?
                    Working with MODX Revo|Evo, Laravel Framework. My website http://vanchelo.pp.ua
                    • 32672
                    • 38 Posts
                    Они выполняют ту функцию что делают фильтр по многим TV параметрам, у меня есть три производителя, в каждом есть около 7-ми категорий которые тоже условно созданы через TV, и помимо всего этого есть фильтр который по материалу из которого изготовлена продукция. Я решил что больше всего мне подойдут именно фильтра.
                      • 21854
                      • 58 Posts
                      Brezhnev Ivan Reply #20, 16 years ago
                      У тебя весь товар лежит в одном контейнере? За материал согласен, а для производителя у меня отдельный контейнер
                      Конечно каждый организовывает так как ему удобнее или так как он это себе представляет, просто я бы сделал контейнер производителя в него категории в категории товар, либо контейнер с категориями если они одни для всех производителей а в производителей товар
                        Working with MODX Revo|Evo, Laravel Framework. My website http://vanchelo.pp.ua