Вы здесь

Как сделать автоматическое удаление нод (старше 30 дней) по Cron в D8?

0

Добрый день.

Подскажите верный путь для удаления нод и всех прикрепленных файлов/картинок к ним (определённого типа материала), если время их создания больше 30 дней назад.

Лучше бы по друпаловскому Cron, чтобы в автомате было. Например, во время запуска, каждые 12 часов.

Заранее спасибо.

Версия Drupal: 
8.x
Вопрос задан 09.06.2016 - 13:10

Блин, такой хардкор ставить ради одной задачи... Может быть как-то через код/модуль можно, а потом на хостинге его в Crontab поставить на исполнение?

Комментарий оставлен 10.06.2016 - 16:06

Я вчера кидал ответ, потом подумал, что он для версии 8 может не работать, и попросил его убрать.

А может быть, всё-таки здесь поступить, как в Drupal 7 ?
hook_cron в версии 8, по идее, сохранился. Структура таблиц с нодами так же.

Комментарий оставлен 13.06.2016 - 15:13

Я вот пробую через hook_cron сделать, вот так:

function MYMODULE_cron() {
  $query = \Drupal::entityQuery('node')->condition('created', strtotime('-30 day'), '<=');
  $nids = $query->execute();
  foreach ($nids as $nid) {
    $node = node_load($nid);
    $node->delete();
  }
}

Но аттачи к нодам (фото) не удаляются из папки (путь: /sites/default/files/images/), только сами ноды из БД. Может быть кто поможет до ума довести?

Комментарий оставлен 13.06.2016 - 15:44

А что это за файлы ?
Это, к примеру, у Вас есть поле типа file и там приаттачены файлы ?
Или это файлы, которые добавлены через WYSIWYG-редактор ?

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

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

Комментарий оставлен 13.06.2016 - 15:53

Роман, это простые картинки (JPG, PNG), загружаемые в поле field_image у ноды. Только вот неясно: сколько ждать удаления, если всё так, как вы говорите? К примеру, уже минимум 10-12 запусков друпаловского Cron было. Ноды уже удалены, а картинки — на месте.

Комментарий оставлен 13.06.2016 - 16:01

Кстати, а ноды точно удалены ?
Я имею в виду записи в таблице, где хранятся ноды.
Пока не сталкивался с этим в D8, но знаю, что в некоторых CMS страницы при удалении просто помечаются как удаленные, физически оставаясь в базе. А физическое удаление делается из админки или еще как.

Комментарий оставлен 13.06.2016 - 16:51

Ответы