getResources вывод документов за сегодняшнее число

Добрый день.

Нужно вывести через getResources документы, в котором через TV параметр задана определённая дата. Примерно как тут, только нужно именно за текущую дату, а не за прошлые от текущей или будущие от текущей.



Мой сниппет today выглядит так:
<?php
return date('Y-m-d');
т.е. он выводит чистую дату, без времени.

А вот в tv date данные лежат вместе со временем, по этому они и не равны.

Но, даже если генерировать today с часами и минутами, то они всё равно не совпадают. Как быть?
Nixon
17 января 2013, 22:45
modx.pro
1
3 119
0

Комментарии: 16

Denys Butenko
18 января 2013, 04:22
0
Распарсить данные из tv date, чтобы осталось только Y-m-d
    Nixon
    18 января 2013, 04:25
    0
    Ок, я могу через substr забрать первые 10 символов из tv date, но как правильно всё это совместить?..
      Denys Butenko
      18 января 2013, 04:40
      0
      &where=`{"[[*TV_DATE]]:=":"[[!today]]"}`
      Примерно, вот так.
    Василий Наумкин
    18 января 2013, 07:00
    1
    0
    Вот тебе сниппет getTodayIds, который присоединяет таблицу с ТВ и выбирает по ней подходящие id.
    Нужно указать id ТВ с датой
    <?php
    $tvid = 1; // id ТВ с датой
    $date = date('Y-m-d'); // Сегодня
    
    $q = $modx->newQuery('modResource');
    $q->leftJoin('modTemplateVarResource', 'TV', 'modResource.id = TV.contentid AND TV.tmplvarid = '.$tvid);
    $q->select('modResource.id');
    $q->where('DATE(TV.value) = "'.$date.'"');
    
    if ($q->prepare() && $q->stmt->execute()) {
    	$ids = $q->stmt->fetchAll(PDO::FETCH_COLUMN);
    	return implode(',', $ids);
    }

    Вызываем в getPage:
    [[!getPage?
    	&element=`getResources`
    	&resources=`[[!getTodayIds]]`
    ]]
      Denys Butenko
      18 января 2013, 07:33
      0
      Как вариант еще можно:
      $q->where(DAY(TV.value) = DAY(CURDATE()));
        Василий Наумкин
        18 января 2013, 08:30
        0
        По задаче нужно сегодня, а не за один день месяца по всем годам и месяцам.
          Denys Butenko
          18 января 2013, 08:32
          0
          Верно, немного сам додумал
        Nixon
        19 января 2013, 02:08
        0
        Василий, спасибо, но не работает.

        Просто выводит все документы из подпапки. Понятно, что getPage установлен, id TV поменял на нужный, к вызову добавлял нужные опции. Результат — просто все документы.
          Andrey Grachov
          19 января 2013, 02:43
          0
          Проблема в том, что когда ресурсов с требуемой датой нет, параметр resources будет содержать пустую строку и соотв. будут выбираться все ресурсы. Один из вариантов решения — можно указать parents=`-1` в вызове getPage.
            Nixon
            19 января 2013, 02:54
            0
            Андрей, спасибо!
            Теперь работает )

            Остаётся вопрос — как можно увзяать это всё с eventsCalendar2?
              Василий Наумкин
              19 января 2013, 07:34
              0
              Почитай документацию — он и так выбирает даты из ТВ.

              Нужно всего-лишь указать его имя в параметре &dateSource=`` и контейнеры для выборки в &parents=``.
                Nixon
                19 января 2013, 13:47
                0
                Спасибо, помогло.

                Но я имел ввиду несколько другое: есть возможность что бы не только по хуверу на дату выводился список, но и по клику на дате формировалась новая страница с нужными ресурсами?

                И &lang больше не поддерживается. Как можно тогда переключить язык? Редактированием шаблонов?
                  Василий Наумкин
                  19 января 2013, 16:10
                  0
                  Формирование страницы с записями не входит в задачи календаря событий.

                  Язык календаря зависит от языка контекста, в котором его вызывают.
                    Nixon
                    19 января 2013, 17:01
                    0
                    Ок, понятно.

                    Но всё равно спасибо большое за помощь! )
        Іван Клімчук
        18 января 2013, 10:01
        0
        В комментах уже ответили, как решить проблему, только зачем дату пихать в TV, если в таблице с ресурсами хватает полей для дат? Опишите ваш кейс (частный случай), пожалуйста.
          Nixon
          18 января 2013, 23:34
          0
          Кейс простой: необходимо создать расписание мероприятий.

          Что делаю. Создаю документ с очередным событием, через TV устанавливаю дату, когда оно должно состоятся. Ну и через getResources вывожу все события за сегодня на страницу текущих мероприятий.

          Вот такой кейс. Да, было бы неплохо это всё связать с eventsCalendar2, что бы по клику на дате выводился список мероприятий за выбранную дату.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          16