Drupal 8 Webサイトにノードが存在する場合、JSONからのデータを使用して新しいノードを作成するか、既存のフィールドを更新します。そのため、メソッドを使用してノードを更新する場合、配列に保存する必要があります更新されたノードのノードID、およびこのノードで値が変更されたフィールドのキー。
更新が完了した後、このコンテンツタイプのすべてのノードを含むテーブルを印刷する必要があります。更新されたノードのフィールドは異なるスタイル(色、背景など)を持つ必要があります。
したがって、古いノードに_body = "body1"
_と_description = "description 1"
_があり、新しいノードに_body = "body2"
_と_description = "description 1"
_がある場合、更新が完了した後、次のような出力を取得する必要があります。
次に例を示します。
_$node = \Drupal\node\Entity\Node::load($nid);
$node->set("body", 'New body text');
$node->set("description", 'New value');
$node->save();
_
なにか提案を?
注:$node->save();
を使用した場合、すべての更新された値が同じであれば何も変更されません(管理パネルのコンテンツのノードの日付は同じです)更新前と同じですが、値が異なる場合は、変更されたフィールドのノードID、キー、値のみを配列に格納する必要があります。
ステータスを設定するには、 setPublished() メソッドを使用できます。
public function Node :: setPublished
ノードの公開ステータスを設定します。
パラメータ
bool $ published:[〜#〜] true [ 〜#〜]このノードを公開に設定するには、[〜#〜] false [〜#〜]に非公開に設定します。
あなたの場合:
$node = \Drupal\node\Entity\Node::load($nid);
$node->set("body", 'New body text');
$node->set("field_name", 'New value');
$node->setPublished(TRUE);
更新されたノードの新しいリビジョンを保存しますか?たぶん、diffモジュールを使用して、現在のノードと以前のノードの間の変更を確認できますか?これは詳細なソリューションではありませんが、おそらくあなたにとって有用な指針になるでしょう。
Node-> save()を忘れないでください。ノードの変更は無視されます。
$node = \Drupal\node\Entity\Node::load($nid);
$node->set("body", 'New body text');
$node->set("field_name", 'New value');
$node->setPublished(TRUE);
$node->save();