Score:0

ฉันได้พบสองวิธีที่ได้ผลแล้ว ซึ่งฉันจะโพสต์ในคำตอบเพื่อดึงดูดคำตอบที่ดีกว่าของฉัน!

ธง jp

การสร้างไฟล์จาก s3fs (S3 bucket) ทำให้การย้ายข้อมูลหยุดชะงัก

ฉันมีช่องอ้างอิงคำศัพท์สองช่อง: สีและแท็ก ฉันมีงาดำ มันมีแท็ก: สวย และสี: , สีแดง.

เขียว

ฉันต้องการ html เช่น:

ดอกไม้นี้คือ: เขียวสวยแดง

  • เช่น.

ฉันต้องการนำเงื่อนไขจากสองฟิลด์มารวมกันเป็นชุดเดียว

ฉันลองในทวิก:

ฉันเริ่มต้นในกิ่งไม้ ฉันสามารถรวมคำศัพท์ได้ แต่ฉันไม่สามารถเรียงลำดับได้
{% set alltags = content.field_tags['items']|merge(content.field_colours['items']|keys|map(i => content.field_colours[i])) %} 
{{ แท็กทั้งหมด }}

ฉันพยายามในกระบวนการก่อน จากนั้นฉันก็ย้ายไปที่ PHP ในไฟล์ mytheme_preprocess_node() การทำงาน. ฉันคิดว่าฉันแอบดูได้ไม่กี่อัน สี ข้อกำหนดภายใต้ แท็ก

 ฟิลด์... ดูเหมือนว่าจะเพิ่มลงในวัตถุตกลง แต่ไม่มีสีใดส่งออก
/** @var Drupal\Core\Field\EntityReferenceFieldItemList */
$coloursTags = $variables['content']['field_colours']['#items'] ?? โมฆะ;
ถ้า ($coloursTags && $coloursTags->count()) {
  $tags = $variables['content']['field_tags']['#items'];
  foreach ($coloursTags เป็น $item) {
    /** @var Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem $item */
    $tags->appendItem($item->getValue());
  }
}

Score:0
ธง jp

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

บล็อกรหัสทั้งสองอยู่ในไฟล์ mytheme_preprocess_node():

คำตอบ 1: สร้างตัวแปรใหม่ที่มีแท็กทั้งหมดอยู่ในนั้น:

<?php

  $allTags = [];
  $addTags = function($fieldName) ใช้ (&$allTags, $ตัวแปร) {
    ถ้า (isset($variables['content'][$fieldName])) {
      foreach (\Drupal\Core\Render\Element::children($variables['content'][$fieldName]) เป็น $i) {
        $allTags[]= $variables['content'][$fieldName][$i];
      }
    }
  };
  $addTags('field_colours');
  $addTags('field_tags');
  usort($allTags, ฟังก์ชัน ($a, $b) {
    $tagA = $a['#taxonomy_term']->ชื่อ->getValue()[0]['value'];
    $tagB = $b['#taxonomy_term']->ชื่อ->getValue()[0]['value'];
    ส่งคืน strcasecmp($tagA, $tagB);
  });
  $variables['content']['allTags'] = $allTags;

จากนั้นใน Twig สำหรับเทมเพลตโหนด: {{ แท็กทั้งหมด }}.

คำตอบ 2: ผสมแท็กจากฟิลด์สีลงในฟิลด์แท็กในอาร์เรย์เรนเดอร์

<?php

  $allTagsTemp = [];
  foreach (\Drupal\Core\Render\Element::children($variables['content']['field_tags']) เป็น $i) {
    $tag = $variables['content']['field_tags'][$i];
    unset($tag['#weight']);
    unset($variables['content']['field_tags'][$i]);
    $allTagsTemp[] = $แท็ก;
  }
  foreach (\Drupal\Core\Render\Element::children($variables['content']['field_colours']) เป็น $i) {
    $tag = $variables['content']['field_colours'][$i];
    unset($tag['#weight']);
    unset($variables['content']['field_colours'][$i]);
    $allTagsTemp[] = $แท็ก;
  }
  usort($allTagsTemp, ฟังก์ชัน ($a, $b) {
    $tagA = $a['#taxonomy_term']->ชื่อ->getValue()[0]['value'];
    $tagB = $b['#taxonomy_term']->ชื่อ->getValue()[0]['value'];
    ส่งคืน strcasecmp($tagA, $tagB);
  });
  $variables['content']['field_tags'] += $allTagsTemp;

จากนั้นในทวิก {{ field_tags }}.

cn flag
`$a['#taxonomy_term']->name->getValue()[0]['value']` สามารถย่อเป็น `$a['#taxonomy_term']->label()`
jp flag
@Clive ขอบคุณ ฉันคิดว่าต้องมีทางลัด!!

โพสต์คำตอบ

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