Автоматическое снятие материала с публикации

Аватар пользователя beerman beerman 30 июля 2008 в 17:04

Стоит задача автоматически снимать объявления с истекшим сроком действия с публикации.
модель node_expire конечно интересен, но его большим недостатком является наличие нескольких непонятных простому пользователю настроек.
Хотелось бы дать возможность пользователю использовать выпадающий список со значениями, к примеру, "1 день", "7 дней", "1 месяц" и т.д.

Какие решения может предложить сообщество?

Комментарии

Аватар пользователя demart demart 12 июня 2011 в 16:29

Может посмотреть на этот модуль похлопать глазами и написать то что пишет всегда - "поиск Вам в помощь". Обратите внимание что за 2 года Вам никто не ответил, я и сам наткнулся на этот пост потому что начал использовать этот модуль и мне необходимо увеличить число продления материала или сделать выборку как в Вашем случае.

Аватар пользователя vkapas vkapas 13 июня 2011 в 20:02

beerman, не утаивайте от общественности, напишите решение (если нашли), -- пригодится будущему поколению.

Аватар пользователя beerman beerman 14 июня 2011 в 5:25

Я расскажу лишь об основных ингредиентах этого блюда.

1. Берем за одну из основ, например, модуль email и по его подобию, со своими обработчиками делаем модуль/поле autounpublish типа селект (можно и дата попап, но селект гораздо проще для юзеров)
2. В обработчике поля при сохранении в ноду добавляем филд типа timestamp в который записываем дату по формуле time() + (60*60*24) * x, где Х это наше значение в выпадающем поле в днях.
3. пишем hook_cron и в ней делаем выборку тех нод, у которых закончился срок действия (наше поле). Можно задействовать вьюс для выбора нужных nid.
4. Пишем batch для снятия с публикации. batch нужен для того, чтоби избежать падение по таймауту при выполнении SQL запроса на анпаблиш большого числа нод. Обычно, в один проход я помещаю до 200 нод. Из крона дергаем batch, если есть чего снимать с публикации.
5. Радуемся.

ЗЫ. Было давно, мог в чем-то ошибиться. Но ход мысли верный.

Аватар пользователя demart demart 2 июля 2011 в 3:41

Да проще было бы его выложить для нуждающихся, кстати свою проблему решил модулем auto_expire, так как нужна была привязка к userpoints.

Аватар пользователя demart demart 2 июля 2011 в 3:43

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

1 день публикации материала стоит 1 кредит (возьмем за основу userpoints) хотелось бы модулек который давал бы возможность выбирать пользователю срок публикации но опираясь на его баланс, то есть у меня есть 23 кредита, я могу опубликовать материал на 23 дня, как то так.

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 2 июля 2011 в 3:51

"beerman" wrote:
4. Пишем batch для снятия с публикации. batch нужен для того, чтоби избежать падение по таймауту при выполнении SQL запроса на анпаблиш большого числа нод. Обычно, в один проход я помещаю до 200 нод. Из крона дергаем batch, если есть чего снимать с публикации.

Батч из крона? Интересный подход, притом что батч из браузера запускается

Аватар пользователя xom940k xom940k 2 июля 2011 в 10:26

"RxB" wrote:
Интересный подход,

Я не знаю что такое "Батч" - расшифруйте Smile
Но у меня при прочтении поста возникла 1ая мысль именно такая. Просто перегрузить хук крона, в котором будем шелестеть по нодам.
"Ahiles" wrote:
Для этого можно использовать scheduler

Справедливости ради, нужно отметить, что вы абсолютно правы. Я даже специально посмотрел дату первой версии для 6.х - февраль 2008. Т.е. на момент написания поста уже можно было использовать данное решение.
ЗЫ: хорошо, когда всплывают такие темы Smile

Аватар пользователя xom940k xom940k 2 июля 2011 в 10:28

Кстати хорошим тоном всегда считаю писать решение в своем посте, если нашел его сам. Т.е. если даже никто не ответил - потрудись помочь потенциальному гугло-искателю в своем вопросе...
Можно в теме поставить [РЕШЕНО] Smile