We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 42672
    • 1 Posts
    Доброго времени суток, помогите разобраться с Ditto

    Задача такая:
    у нас имеется около 50 ресурсов, в которых через TV параметры заданы временные периоды (от 1 до 3х периодов в 1м ресурсе), пользователь вводит 2 даты, и нужно выдать через Ditto только те ресурсы, в которых хотя бы в 1м из периодов включался введенный пользователем промежуток времени.


    Вот часть сниппета для обработки введенных данных и вывода Ditto:
    (date_s_1, date_po_1 - TV параметры, $date_1, $date_2 - даты введенные пользователем)

     $filter =  'date_s_1,'.$date_1.',5|date_po_1,'.$date_2.',6';
    }
    
    $news = $modx->runSnippet('Ditto', array(
    	'parents'   => '25,26,31,32',
            'tpl'       => 'chank_to_ditto',
            'orderBy'   => 'pub_date ASC',
            'paginate'  => 1,
            'display'   => 5,
            'randomize' => 1,
            'filter'    => $filter
    


    Этот снмппет работает, но проблема в том что этот фильтр берет только 1 период из ресурса, мне нужно условие типа:

    $filter = '( (Запрос)И(Запрос) ) ИЛИ (if not empty( (Запрос)И(Запрос) ) ) ИЛИ (if not empty( (Запрос)И(Запрос) ) )';

    Помогите разобраться, сам не смог найти решение =(
    Заранее спасибо. [ed. note: novikoff_92 last edited this post 13 years, 8 months ago.]
      • 41656 ☆ A M B ☆
      • 11 Posts
      Можно использовать `where`

      $params = array(
          ...
          'sortBy'  => 'pub_date',
          'sortDir' => 'ASC',
          'where'    => 'date1 > value1 AND date2 < value2  OR date3 = value3',
          ...
      );
      $output = $modx->runSnippet('Ditto',$params);