Есть ли какой нибудь модуль или другое доступное новичку решение которое может обновлять дату публикации (не обновление, а именно публикации)материала. Например, все что старше 3 лет - менять дату на сегодняшнюю. Желательно конечно чтобы обновление даты происходило без моего каждодневного участия.
PS. Как делать вручную заходя в каждый материал знаю.
Спасибо.
Массовое изменение даты публикации материала
Главные вкладки
Лучший ответ
1
Примерно так:
<?php
/**
* Implements hook_cron().
*/
function mymodule_cron() {
db_update('node')
->fields(array('created' => time()))
->condition('created', time() - 94608000, '<')
->execute();
}
?>
Комментарии
А какой в этом смысл?
Если вам это очень нужно, то это быстро и просто сделать с помощью sql запроса прямо в БД.
Так же с этим, возможно, могут помочь модули типа VBO (но это не точно)
хочется, чтобы старые, но еще актуальные материалы попали в rss
Я не знаю что такое RSS маленьким был когда это актуально было, но когда на некоторых сайтах настраивал подобное - делал вьюху, в которую выводил все что нужно сеонистам. А там уже сортировку, легко настроить. Можете это сделать?
Можно сделать событие по крону в связке Rules (+rules_conditional) и VBO. На 7-ке это хорошо работает, я так делаю именную рассылку пользователям, чьи объявления на сайте старше 30 дней. Без строчки кода.
Примерно так делаем:
1. Создаем Views с нужным фильтром. В данном случае ноды старше 3 лет (now -36 month). Подключаем к нему поле "Глобальные операции" (VBO).
2. Далее создаем правило в Rules с запуском по крону. В него делаем загрузку Views из предыдущего шага.
3. После чего в цикле обрабатываем каждый материал из Views и ставим текущую дату.
P.s. Но проще сделать модуль с парой строк кода, чтобы через запрос к базе обновлять все нужные ноды.
это для меня вообще недостижимо. с views знакома, но вот попытки последних пары дней освоить rules и vbo пока никуда не привели. буду двигаться дальше
Если будет желание - можете почитать статейки из этой подборки про VBO в связке с Rules.
спасибо за ответы! попытаюсь разобраться хоть в чем-то, теперь хотя бы общее направление движения понятно
Не за что.
Все же, лучше двигаться в сторону своего модуля.
В нем использовать: HOOK_cron В котором написать простой SQL запрос на обновление.
Это решение будет самым производительным.
С тем, какой должен быть запрос вроде разобралась. Если я его ввожу непосредственно на хостинге, он работает как надо. Вы не могли бы подсказать, как его правильно вставить в mymodule.module? Если я правильно понимаю, то надо сначала сделать так, чтобы модуль подключился к базе данных?
Примерно так:
<?php
/**
* Implements hook_cron().
*/
function mymodule_cron() {
db_update('node')
->fields(array('created' => time()))
->condition('created', time() - 94608000, '<')
->execute();
}
?>
Большое спасибо!!
Обращайтесь)
Вот инструкция как с views ленту сделать
https://yalesites.yale.edu/book/creating-rss-feed-views
порядок того, что выводится можно настроить через модуль weight либо проще: во вьюхе Критерий сортировки - Содержимое закреплено. И закрепляйте нужную ноду в начале вывода.
Как я понял ТС нужно именно обновлять даты у материалов, чтобы старые появлялись над новыми. Я сам в онлайн-журнале периодически обновляю даты создания.
Стандартными сортировками так не сделать.
Используйте дату обновления, списки можно сделать и настроить через views.
Спасибо, попробую
Гайд https://vaden-pro.ru/blog/drupal/rss-na-drupal-7