Как вы перенаправляете псевдоним в назначенное время?


Я использую Drupal 7(.40 или .41), и я пытаюсь добиться того, чтобы полностью изменить содержимое страниц в определенное время и дату (00:00:01 01/01/2016, если быть точным)

Поскольку изменение содержимого составляет около 90 % страницы, я предположил, что могу установить неопубликованный узел в 23:59:59 с псевдонимом, а затем опубликовать новый узел в 00:00:01 с тем же псевдонимом. Однако это вызывает используется псевдоним ошибка.

Там ничего нет очевидно, что в моей конфигурации псевдонима URL (/admin/config/search/path) это указывает на то, что это возможно, поэтому я, вероятно, смотрю на это неправильно, если не использовать другой URL.

Мысли и методы будут приветствоваться.

Author: kiamlaluno, 2015-12-29

2 answers

Я бы использовал для этого модуль Правила. Но вы не можете "полагаться" на планировщик правил в этом случае, если вы хотите, чтобы перенаправление начиналось с 00:00:01 01/01/2016 (sharp).

Перенаправление старого пути на новый путь

Вот правило, которое вам понадобится для этого (в формате экспорта правил просто используйте copy/past, чтобы импортировать его в свою собственную настройку):

{ "rules_redirect_an_alias_at_a_scheduled_time" : {
    "LABEL" : "Redirect an alias at a scheduled time",
    "PLUGIN" : "reaction rule",
    "ACTIVE" : false,
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ON" : { "init" : [] },
    "IF" : [
      { "AND" : [
          { "text_matches" : { "text" : [ "site:current-page:url" ], "match" : "the_old_path" } },
          { "data_is" : {
              "data" : [ "site:current-date" ],
              "op" : "\u003E",
              "value" : 1451602800
            }
          }
        ]
      }
    ],
    "DO" : [
      { "drupal_message" : { "message" : "Please note that the old path (= the_old_path) is no longer in use, you will be redirected automatically to its corresponding path (= the_new_path)" } },
      { "redirect" : { "url" : "the_new_path" } }
    ]
  }
}

Еще несколько настроек, чтобы это соответствовало вашему точному сценарию:

  • измените все случаи the_old_path на путь, который будет использоваться до 00:00:00 01/01/2016.
  • измените все вхождения the_new_path на путь, который будет использоваться , начиная с 00:00:01 01/01/2016.

Всякий раз, когда такое перенаправление действительно происходит, пользователь также получит информационное сообщение, подобное следующему:

Пожалуйста, обратите внимание, что старый путь (=/the_old_path) больше не используется, вы будете автоматически перенаправлены на соответствующий путь (= /the_new_path)

Если вы не хотите, чтобы такое сообщение появлялось, затем просто удалите строку, содержащую drupal_message в экспортированном правиле выше.

Внимание: в этом экспортированном правиле используется время UTC... если ваш вопрос касается другого часового пояса, не забудьте также изменить значение 1451602800 в соответствии с вашими потребностями.

Перенаправление нового пути на старый путь

Если вы не хотите, чтобы новый путь отображался еще ДО 00:00:01 01/01/2016, просто создайте аналогичное правило, подобное предыдущему, в котором вы меняете местами the_old_path и the_new_path, и отмените тест на site:current-date.

 3
Author: Pierre.Vriens, 2015-12-29 14:12:40

Вам нужно установить правила , которые запланируют публикацию узла в определенное время после запуска cron, он будет автоматически опубликован.

 0
Author: vgoradiya, 2015-12-29 09:46:47