Вывод текущей даты с изменением

Здравствуйте, подскажите как можно реализовать вывод текущей даты, но с вычитанием значения дня недели например от 1 до 30 и чтобы выбор этого числа происходил рандомно, т.к. для разных ресурсов нужна разная дата?
dokreg
23 ноября 2020, 23:21
modx.pro
1 048
0

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

Андрей
24 ноября 2020, 01:06
0
Написать сниппет, где будет реализована необходимая логика вывода.
    dokreg
    24 ноября 2020, 12:57
    0
    Очень полезный совет)), сильно помог
      Евгений Webinmd
      24 ноября 2020, 22:10
      +1
      0) на входе имеем дату в формате:
      $date = 2020-11-05

      1) рандом:
      $randNumber = rand(1, 30);

      2) отнимаем дату:
      $newDate =date('Y-m-d',(strtotime ( '-'.$randNumber.' week' , strtotime ( $date) ) ));

      Все это собираете в сниппет

      Вот это вот выше заменяется использованием класса DateTime
      $date = new DateTime($date);
      $date->modify('+1 week');
        dokreg
        24 ноября 2020, 22:33
        0
        Извиняюсь за нубский вопрос, а эти строчки в сниппет не входят?
        $date = new DateTime($date);
        $date->modify('+1 week');
          Евгений Webinmd
          24 ноября 2020, 22:35
          +1
          ну тут либо либо, я привел 2 варианта кода, там уже на выбор
            dokreg
            25 ноября 2020, 09:31
            0
            не совсем то, что нужно, потому что так дата меняется каждый раз при обновлении на одной и той же странице, а мне нужно чтоб она была разной на разных ресурсах, но не менялась при обновлении страницы, просто была актуальной например не более чем на месяц назад, но все равно спасибо за помощь!
              Евгений Webinmd
              25 ноября 2020, 11:44
              0
              тогда лучшим вариантом будет при сохранении в плагине прописать новую дату и не нагружать вывод
                dokreg
                25 ноября 2020, 19:44
                0
                не понял в каком плагине?
                  Евгений Webinmd
                  25 ноября 2020, 21:16
                  +1
                  в модх есть система плагинов. Они срабатывают на определённые события
                  Вот пример плагина:
                  <?php
                  if ($modx->event->name=="OnDocFormSave") // Плагин срабатывает при сохранении ресурса
                  {     
                        // тут код для получения всей даты
                       $resource->set('createdon', $newDate);   
                  }
                    dokreg
                    25 ноября 2020, 23:34
                    0
                    Да, про плагины и события я в курсе, просто получается через месяц нужно будет заходить в ресурс и нажимать на кнопку сохранить, чтоб актуализировать дату, тогда можно и без плагина выводить стандартным плейсхолдером дату редактирования ресурса типо такого: [[*editedon:date=`%d %b %Y`]]
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    10