Score:1

How to translate the layout builder blocks of a node programmatically?

ธง kr

I am translating the nodes programmatically. Everything works fine except the layout builder blocks.

When I try to translate it, it also changes on the source node.

I have created a node in language en. Now I am translating it to nl. Here is my code.

if ($node->hasTranslation($language)) {
  $translated_entity =  $node->getTranslation($language);
}
else {
  $translated_entity =  $entity->addTranslation($language);
}

$translated_layout = $node->get('layout_builder__layout')->getValue();

foreach ($translated_layout as $section) {
  /** @var \Drupal\layout_builder\Section $section */
  $section = reset($section);

  foreach ($section->getComponents() as $component) {
    $configuration = $component->get('configuration');

    $component->setConfiguration($translated_configurations);
  }
}

$translated_entity->set('layout_builder__layout', $translated_layout);
$translated_entity->save();
$node->save();

Is there any way to retain the original blocks as it is on the source node and the save function only added the changes to the translated node?

in flag
มีเหตุผลอะไรที่คุณทำการแปลนี้โดยทางโปรแกรม
Score:0
ธง kr

ฉันได้ทำมันด้วยตัวเอง. นี่คือทางออก

ก่อนอื่นคุณต้องคัดลอกเค้าโครงจากโหนดต้นทางไปยังโหนดที่แปลแล้ว

จากนั้นรับเค้าโครงของโหนดที่แปลแล้วแปล

ถ้า ($node->hasTranslation($language)) {
  $translated_entity = $node->getTranslation($ภาษา);
}
อื่น {
  $translated_entity = $entity->addTranslation($ภาษา);
}

$translated_entity->set('layout_builder__layout', $node->get('layout_builder__layout')->getValue());
$translated_entity->save();

$translated_layout = $translated_entity->get('layout_builder__layout')->getValue();

foreach ($translated_layout เป็น $section) {
  /** @var \Drupal\layout_builder\Section $section */
  $section = รีเซ็ต ($ ส่วน);

  foreach ($section->getComponents() เป็น $component) {
    $configuration = $component->get('การกำหนดค่า');

    $component->setConfiguration($translated_configurations);
  }
}

$translated_entity->set('layout_builder__layout', $translated_layout);     
$node->save();

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา