Рейтинг:2

Почему программная отмена публикации узла не работает?

флаг us

Недавно мы обновились до Drupal 9.3.0, используя формат файла Composer. Полученный веб-сайт работает правильно и теперь работает в домене публикации. У нас есть набор утилит, которые мы запускаем как скрипты Drush. Один из них отменяет публикацию контента, который мы не хотим, чтобы Google и другие поисковые системы находили — пока.

Я перешел в каталог, содержащий composer.json — на один уровень выше веб-корня. я побежал композитор требует драш/драш который добавил "дрош/дрош": "^11.0", в composer.json и соответствующим образом обновил каталог поставщика. Затем я создал небольшой php-скрипт для отмены публикации узла с именем x.php:

<?php
  
используйте Drupal\node\Entity\Node;

напечатать "Верх\n";
  $node = Node::load('1881');
  $node->setPublished(FALSE);
  $узел->сохранить();
напечатать "Бот\n";

я побежал поставщик/drush/drush/drush scr x.php. Скрипт работает без ошибок и выводит "Top" и "Bot", как и ожидалось. Однако запуск этой команды не отменил nid = 1881. Я снова запустил команду с переключатель, который дал мне много выходных данных, но никаких сообщений об ошибках, с которыми можно было бы работать. Я проверил error_log для веб-сайта - ничего. я добавил var_dump ($ узел); после $node = Node::load('1881'); и может видеть, что узел загружается.

Мне нужно отменить публикацию более 700 узлов, и я не хочу делать это вручную. Любые предложения о том, как действовать?

leymannx avatar
флаг ne
Не зная вашей настройки, но, вероятно, лучше реализовать хук после обновления или хук развертывания с правильным пакетным процессом. Загрузка и повторное сохранение 700 узлов может быть рискованным из-за нехватки памяти.
leymannx avatar
флаг ne
Откуда вы берете идентификаторы узлов? У вас просто есть их список или вы получаете их из запроса?
Greg Sims avatar
флаг us
Фактический сценарий является рекурсивным и использует идентификаторы узлов, хранящиеся в узлах. Например, все конечные узлы целевой страницы хранят идентификатор узла целевой страницы.
Рейтинг:4
флаг cn

В Друпал 9 setPublished (ЛОЖЬ) больше не работает, логический аргумент игнорируется. Это было разделено на два метода:

// опубликовать сущность
$entity->setPublished();

// отменить публикацию объекта
$entity->setUnpublished();

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

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