Puncte:2

De ce nu funcționează Programmatic Node Unpublish?

drapel us

Am făcut recent upgrade la Drupal 9.3.0 folosind un aspect al fișierului Composer. Site-ul web rezultat funcționează corect și rulează acum în domeniul de publicare. Avem un set de utilitare pe care le rulăm ca scripturi Drush. Una dintre acestea anulează publicarea conținutului pe care nu vrem să îl găsească Google și alte motoare de căutare -- încă.

M-am mutat în directorul care conține composer.json -- un nivel deasupra webroot-ului. am fugit compozitorul necesită drush/drush care a adăugat "drush/drush": "^11.0", la composer.json și a actualizat directorul furnizorului în consecință. Apoi am creat un mic script php pentru a anula publicarea unui nod -- numit x.php:

<?php
  
utilizați Drupal\node\Entity\Node;

imprimați „Sus\n”;
  $node = Nod::load('1881');
  $nod->setPublished(FALSE);
  $nod->salvare();
imprimați „Bot\n”;

am fugit furnizor/drush/drush/drush scr x.php. Scriptul rulează fără eroare și imprimă „Top” și „Bot” așa cum era de așteptat. Cu toate acestea, rularea acestui comend Did Not unpublish nid = 1881. Am rulat comanda din nou cu -d comutator care mi-a dat o mulțime de rezultate -- dar nici un mesaj de eroare cu care să lucrez. Am verificat error_log pentru site - nimic. am adaugat un var_dump($nod); după $node = Nod::load('1881'); și poate vedea că nodul este încărcat.

Trebuie să anulez publicarea a peste 700 de noduri și nu vreau să fac asta manual. Ceva sugestii despre cum să procedați?

leymannx avatar
drapel ne
Nu vă cunoașteți configurația, dar probabil mai bine să implementați un cârlig post-actualizare sau un cârlig de implementare cu un proces de lot adecvat. Încărcarea și salvarea a 700 de noduri poate fi riscantă pentru a rămâne fără memorie.
leymannx avatar
drapel ne
De unde obțineți ID-urile nodurilor? Ai doar o listă cu ele sau le primești dintr-o interogare?
Greg Sims avatar
drapel us
Scriptul real este recursiv și folosește ID-uri de noduri care sunt stocate în noduri. De exemplu, toate nodurile frunză ale unei pagini de destinație stochează id-ul nodului paginii de destinație.
Puncte:4
drapel cn

În Drupal 9 setPublished(FALSE) nu mai funcționează, argumentul boolean este ignorat. Aceasta a fost împărțită în două metode:

// publică entitate
$entity->setPublished();

// anulează publicarea entității
$entity->setUnpublished();

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.