Рейтинг:0

Как обновить дату узла для всех узлов

флаг cn

Я импортировал несколько узлов в только что установленный Drupal 9. Позже стала важной дата создания исходного контента (с предыдущего веб-сайта).

У меня есть информация в соответствии с новыми идентификаторами узлов. Я не знаю, где обновить?

Я попытался обновить созданные и измененные столбцы в таблице node_field_data, но в списке содержимого я все еще вижу дату импорта... Где я должен искать? (конечно, я открыт для предложений с модулями, трюками в интерфейсе администрирования и т. д., я думал, что обновление таблиц sql будет проще).

Рейтинг:0
флаг in

Во-первых, я бы по возможности избегал прямых обновлений БД для сущностей. Сущностная модель Drupal 8+ тесно связана со своими уровнями абстракции, реализованными в виде хуков. Считается лучшей практикой всегда изменять сущности через API объекта. Это позволит Drupal синхронизировать все.

Теперь краткий ответ на ваш вопрос заключается в том, что очистка кеша вашего сайта, скорее всего, приведет к отображению новых значений.

Лучшим ответом было бы написать сценарий PHP, чтобы перебрать все узлы и обновить дату создания их контента через API сущности. Я часто использую Drush для выполнения таких операций. Ниже приведен пример, который должен соответствовать вашим потребностям, исходя из следующего предположения:

  • Вы загрузили значения node:date в массив с именем $new_node_dates, где ключи — это NID, а значения Временные метки Unix представляющие новые даты создания. Глянь сюда для примера чтения файла CSV в массив. Если даты не в формате временной метки Unix, вы можете использовать strtotime() преобразовать их.

Тогда заявление Друша будет таким:

drush eval '$node_storage = \Drupal::entityTypeManager()->getStorage("node"); foreach($new_node_dates as $nid => $creation_date) { $node = $node_storage->load($nid); $узел->созданный = $creation_date; $узел->сохранить(); }'

Удачи!

loker avatar
флаг cn
Спасибо за подробный и объясненный ответ. Сработало как шарм, а также у меня есть новый подход...

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.