Всем здравия!
Есть вопрос.
Мне нужно, чтобы при срабатывании крон удалялись страницы из моего узла. Вот код, он работает я проверила в тестовом режиме, страницы удаляются, но у меня не получается повесить это задание на выполнения крон. Пишу его в модуле темы и не работает, а почему не понимаю..
$nodes = \Drupal::entityQuery("node")
// $nodes = $this->entityQuery->get('id_num') // такой вариант с названием типа узла почему-то не работает
->condition('created', strtotime('-1 days'), '>=')
->condition('field_status', '1')
->execute();
$storage_handler = \Drupal::entityTypeManager()->getStorage("node");
if (!empty($nodes)) {
foreach ($nodes as $key => $value) {
$node = $storage_handler->load($value);
$node->delete($node);
}
}
}
Возможно идея поместить этот хук в модуль темы в корне неправильная, тогда где ему место?
Комментарии
а не надо всё подряд писать в тему, писать надо в модуль
тема только для оформления
я пробовала и в модуль писать.. не удаляет
Гугль-переводчиком пользовались? Я почти ничего не понял.
Всё верно. В смысле - в корне неправильно.
Хуки подобного типа должны определяться в кастомном модуле, а не в теме. Я напомню, что вызов hook_cron как правило инициализируется планировщиком/кронтабом линукса, который вообще не использует функции темы.
Не совсем так. По умолчанию его дёргает веб-крон при посещении страниц. Но на сложных сайтах просто делают, чтобы крон запускался через линуксовый планировщик.
Но я тоже соглашусь, что этому хуку не место в теме оформления
Тогда я тоже соглашусь, что правильнее написать:
Вызов hook_cron часто инициализируется планировщиком/кронтабом линукса, при этом вообще не затрагиваются функции темы.
А кто скажет, почему такой вариант не работает -
Получается, что код постоянно дергает перебором все ноды и делает фильтр по полю со статусом, а надо, чтобы только определенный тип нод проверял (entity_type) в чем там моя ошибка)
потому что он не правильный. Нет у ентитиквери метода get()
Используйте condition
https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Entity%21...
и правда)), благодарю!