Puncte:2

Cum public în mod programatic cea mai recentă revizuire?

drapel us
  1. Fluxul meu de lucru este redactarea și publicarea.
  2. Creez și public o pagină.
  3. Creez o schiță a paginii.

Acum există pagina publicată, dar cea mai recentă revizuire este proiectul.

Cum pot seta în mod programatic cea mai recentă revizuire publicată?

Acest cod publică nodul.

$nod = Nod::load(nid);
// Publicați și salvați nodul.
if ($node->hasField('stare_moderare')) {
  $nod->set('stare_moderare', 'publicat');
}
$nod->setPublished();
$nod->salvare();

Nodul este deja publicat. Doresc să public schița/ultimea revizuire a nodului.

Această interogare are câteva posibilități.

// Publicați schița unui nod.
$interogare = \Drupal::database()->select('content_moderation_state_field_revision', 'cm');
// $query->fields('cm', ['stare_moderare']);
$query->fields('cm');
$query->condition('cm.content_entity_id', $node->id());
$query->condition('cm.moderation_state', 'draft');
$rezultat = $interogare->execute();
$record = $rezultat->fetchAssoc();
print_r($record);

Deoarece nodurile pot avea mai mult de o schiță, aș putea adăuga o LIMITĂ și un ORDER BY la interogare. Simpla schimbare a stării_moderării din tabelul content_moderation_state_field_revision și reconstruirea memoriei cache nu publică cea mai recentă revizuire.

Acest cod, ușor modificat de la EntityModerationForm.php, a funcționat o dată, dar apoi nu a mai funcționat.

/** @var \Drupal\Core\Entity\ContentEntityStorageInterface $storage */
$storage = \Drupal::entityTypeManager()->getStorage($node->getEntityTypeId());
$entity = $storage->createRevision($node, $node->isDefaultRevision());

$new_state = 'publicat';

$entity->set('stare_moderare', $stare_noua);

if ($entity instanceof RevisionLogInterface) {
  $entity->setRevisionCreationTime(\Drupal::time()->getRequestTime());
  $entity->setRevisionLogMessage('Ciornă creată automat');
  $entity->setRevisionUserId(\Drupal::currentUser()->id());
}
// $nod->setNewRevision(FALSE);
$entity->salvare();




Puncte:3
drapel ua
  // obțineți cel mai recent ID de revizuire
  $latest_vid = \Drupal::entityTypeManager()
    ->getStorage('nodul')
    ->getLatestRevisionId($nid);

  // încărcați cea mai recentă versiune
  $latest_revision = \Drupal::entityTypeManager()
    ->getStorage('nodul')
    ->loadRevision($latest_vid);

  // setează cea mai recentă revizuire la publicată dacă este schiță
  $is_draft = $latest_revision->moderation_state->value == 'draft';
  if ($is_draft) {
    $latest_revision->set('stare_moderare', 'publicat')
      ->salvare();
  }
drapel us
perfect. Mulțumesc.

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.