We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 9675
    • 63 Posts
    Здравствуйте.

    У документа есть потомки, с различным значением tv recipe. Хочется вывести их посредством Ditto, сгруппировав по значению этого поля (аналогично тому, как работает инструкция SQL GROUP BY; по сути — вывести лишь уникальные значения recipe). Как это сделать?

    Спасибо.
      • 9675
      • 63 Posts
      Э... Никто ничего не понял, или никто ничего не знает? smiley

      Попробую пояснить задачу. Есть дерево документов

      Пиво
      ---Светлое пиво (recipe=3, output=0,3 л, price=цена1)
      ---Светлое пиво (recipe=3, output=0,5 л, price=цена2)
      ---Светлое пиво (recipe=3, output=1,0 л, price=цена3)
      ---Светлое пиво (recipe=3, output=1,5 л, price=цена4)
      ---Темное пиво (recipe=4, output=0,3 л, price=цена5)
      ---Темное пиво (recipe=4, output=0,5 л, price=цена6)
      ---Темное пиво (recipe=4, output=1,0 л, price=цена7)
      ---Темное пиво (recipe=4, output=1,5 л, price=цена8)

      На страничке хочется видеть:

      Светлое пиво
      Это светлое пиво с каким-то там оттенком вкуса...
      бла-бля... здесь описание рецепта описание рецепта.
      -----------------------------------------
      0,3 л - цена1
      0,5 л - цена2
      1,0 л - цена3
      1,5 л - цена4

      Темное пиво
      Это темное пиво с каким-то там оттенком вкуса...
      бла-бля... здесь описание рецепта описание рецепта.
      -----------------------------------------
      0,3 л - цена5
      0,5 л - цена6
      1,0 л - цена7
      1,5 л - цена8
        • 19164
        • 1,215 Posts
          DirectResize 0.9 beta. PHPThumb, sets of configurations, configuration, binded to specific path. No backward compatibility. | DirectResize 0.9. PHPThumb, наборы параметров, параметры, привязанные к определенным путям. Без обратной совместимости.

          Unfortunately, DirectResize project is closed. If you want to continue development, PM me for access to project page on Google Code. К сожалению, проект DirectResize закрыт. Если вы желаете продолжить разработки, обращайтесь через ПМ для получения доступа к репозиторию на Google Code.

          [PLUGIN] DirectResize - as Maxigallery but for single images :: Download :: [url=http://modxcms.com/forums/index.php/topic,21490]
          • 9675
          • 63 Posts
          Я прочел документацию, спасибо.

          Вызов Ditto в шаблоне документа выглядит так
          [[Ditto? &tpl=`dishesList` &sortBy=`menuindex` &sortDir=`ASC` &depth=`2` &display=`all`]]

          Чанк dishesList выглядит так
          <li>
          	<h3>[+title+]</h3>
          	<img src="[[GetField? &docid=`[+recipe+]` &field=`preview`]]" alt="[+title+]" />
          	<div class="description">
          		[[GetField? &docid=`[+recipe+]` &field=`introtext`]]
          		<ul class="dishes">
          			[[Ditto? &tpl=`dish` &parents=`[+parent+]` &sortBy=`menuindex` &sortDir=`ASC` &display=`all` &filter=`recipe,[+recipe+],1`]]
          		</ul>
          	</div>
          </li>

          Чанк dish смотреть не интересно - это просто элемент списка.

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

          ЗЫ: Руки чешутся написать параметр &group для Ditto. Но таки надо проверить наличие стандартных средств, чтобы не иметь проблем с обновлениями.
            • 9675
            • 63 Posts
            В Ditto как-то, не очень пока понятно как, можно подключать собственные фильтры.
            Где-то тут, очевидно, и есть решение. Уважаемые коллеги, кто-то может объяснить, как подключить собственный фильтр?

            Для тех, у кого свербит.
            Добавте в базовые фильтры (snippets/ditto/classes/filter.class.inc.php; функция basicFilter()) девятым case следующий кот:
            case "unique" :
            case 9 :
            	if ($value[$this->array_key] == $this->filterValue) 
            		$unset = 0;
            	else
            		$this->filterValue = $value[$this->array_key];
            	break;

            В отфильтрованном результате, как видно из текста, будут только первые документы с указанным значением поля.
            Да. В качестве значения поля указывайте что-нибудь совсем невозможное в вашей ситуации smiley.
              • 1788
              • 1,103 Posts
              С фильтром ы Ditto у меня какие-то проблемы.
              Задаю TV с параметром для страницы с выбором из списка типа:
              Имя параметра: okrug
              Возможные значения: Центральный АО==cao||Северный АО==sao||Нет==obl

              Создаю отдельную страницу с псевдонимом=параметр TV (например cao) и вызовом дитто с фильтром типа
              [!Ditto? &parents=`3` &depth=`2` ... &filter=`okrug,[*alias*],2` !]

              Но всегда выводит ВСЕ страницы.

              Вопрос вдогонку. Как заставить выводить документы начиная только с 3 ветки, а не все? Т.е. Список документов без папок.