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

Прислано: sas@drupal.org

пт, 06/02/2009 - 15:11

Другие статьи по теме:

Потребовалось по истечении 10 дней, после публикации материала автоматически снять материал с публикации (unpublish) и отправить об этом письма автору и администратору, модуль http://drupal.org/project/sched_act для 6 - не выпущен, написал небольшой свой.
Что делает ? С его помощью удалось по установленному значению таймера в действии переходить из одного состоянии документооборота (workflow) в другой и при этом выполняются нужные действия.
Требования:
Drupal 6;
модуль http://drupal.org/project/workflow;
регулярный запуск cron.php
Модуль в аттаче, описание примера в readme
Работает на "живом" сайте, замечания и пожелания приветствуются :)

Прикрепленный файлРазмер
workflow_timer.zip3.32 кб

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано Vladimir_VVV в сб, 07/02/2009 - 09:45.

Я использую http://drupal.org/project/rules - он не только для запуска по таймеру, он может вешать действие на любое событие, и легко конфигурируется.
Поддерживает выполнение произвольного php кода.


Опубликовано sas@drupal.org в сб, 07/02/2009 - 18:15.

"Vladimir_VVV" написал(а):

Я использую http://drupal.org/project/rules - он не только для запуска по таймеру, он может вешать действие на любое событие, и легко конфигурируется.
Поддерживает выполнение произвольного php кода.

Спасибо за интерсную информацию, читаю ...
The rules modules allows site administrators to define conditionally executed actions based on occurring events (ECA-rules). It's a replacement with more features for the trigger module in core and the successor of the workflow-ng module.

... замена trigger module ...
1) А как впечатления от использования на нагруженных проектах ?
2) Можно ли Выполнять действия в зависимости от значения полей в "материале" ?


Опубликовано Vladimir_VVV в вс, 08/02/2009 - 17:00.

"sas@drupal.org" написал(а):

2) Можно ли Выполнять действия в зависимости от значения полей в "материале" ?

Я этим модулем снимаю старые объявления с публикации по полю "Время публикации" но правда "своим" кодом на php.


Опубликовано Nikolas в пн, 06/09/2010 - 07:37.

"Vladimir_VVV" написал(а):

Я этим модулем снимаю старые объявления с публикации по полю "Время публикации" но правда "своим" кодом на php.

А не поделитесь кодом?


Опубликовано Vladimir_VVV в пн, 06/09/2010 - 19:46.

"Nikolas" написал(а):

А не поделитесь кодом?

Так это зависит от того как объявления сделаны, я делаю через

<?php
$node
=node_load($nid);
$node->status=0;// снимаем
node_save($node); // Сохранение
?>

а выборку по нодам обычным селектом и джойнами по полю срока размещения.


Опубликовано Nikolas в сб, 11/09/2010 - 19:51.

Да снять то с публикации - понятно, а вот как установить момент кагда нужно снимать я не разобрался чет...


Опубликовано Vladimir_VVV в вс, 12/09/2010 - 16:46.

создаем поле "срок публикации" с выбором неделя, месяц, три месяца
неделя - 604800 сек
месяц - 2592000 сек
три - 7776000 сек

действие в rule вешаем на крон.

делаем выборку нод определенного типа которые опубликованы

если время_модификации меньше чем текущее_время минус количество_секунд_поля_срока_публикации то снимаем.


Опубликовано Nikolas в пн, 13/09/2010 - 05:36.

ааа, у вас так...
А мне бы надо в конкретный момент снимать, то есть у каждого материала он свой...
Так чтобы указать дату и в этот день она снялась...


Опубликовано sashken в пн, 13/09/2010 - 08:21.

 node_expire[/module]
 auto_expire[/module]


Опубликовано Vladimir_VVV в пн, 13/09/2010 - 16:48.

"sashken" написал(а):

node_expire[/module]
auto_expire[/module]

Так дело в том что rules нужен почти всегда, а CCK уж точно всегда и с помощью этого можно реализовать функционал node_expire и auto_expire, если добавить поле cck с датой съема и rules снимать по крону.


Опубликовано Nikolas в чт, 16/09/2010 - 12:26.

"Vladimir_VVV" написал(а):

Так дело в том что rules нужен почти всегда, а CCK уж точно всегда и с помощью этого можно реализовать функционал node_expire и auto_expire, если добавить поле cck с датой съема и rules снимать по крону.

И как это реализовать?
Я как раз таки так и планировал, но что-то не вышло...

UPD:
Что-то залез еще раз в Rules и не обнаружил как можно по крону вообще взять какую-либо величину из ноды, то есть например взять поле с датой...


Опубликовано Vladimir_VVV в сб, 18/09/2010 - 14:41.

/admin/rules/trigger/add
заголовок:
Фускофф нода

Событие:
System
Cron maintenance tasks are performed

* Данное правило активно и выполняется при возникновении ассоциированного события.

Далее Rule elements

DO
"Добавить действие"
Выберите действие для добавления:
PHP
Execute custom PHP code

и ваш код, код подсказать не могу так как не знаю что у вас и как.


Опубликовано Nikolas в пн, 20/09/2010 - 12:55.

Решил вопрос при помощи этого - http://drupal.org/node/520012
Правда немного путанно работает с часовыми поясами...
надо разбираться...


Опубликовано aparfilov в вс, 22/05/2011 - 11:00.

"Nikolas" написал(а):

Решил вопрос при помощи этого - http://drupal.org/node/520012
Правда немного путанно работает с часовыми поясами...
надо разбираться...

Да, с часовыми поясами есть неприятный момент. Добавил поле CCK+Date, настроил. С триггером [node:field_deldate-date] - работает. НО! У меня часовой пояс GMT+6. Соответственно, если я ставлю дату снятия материала 23/05/2001, то в планировщике(/admin/rules/rule_sets/scheduling) это выглядит так: 23/05/2001 06:00:00. То есть автоматом прибавляет 6 часов.
Как сделать так, чтобы бралась введенная дата из соответствующего поля в материале и к ней прибавлялось столько времени, чтобы получилось действие ноды "включительно". То есть, если ставится дата 23/05/2011(время я не ставлю) то в планировщике будет стоять 24/05/2011 00:01:00


Опубликовано iNFerNo в чт, 16/06/2011 - 12:08.

а с главной как снять у всех нод???


Опубликовано sas@drupal.org в пт, 17/06/2011 - 05:24.

 rules


Новое на сайте

Ссылки партнёров