Score:1

ลากและวางเพื่อจัดเรียงน้ำหนักอนุกรมวิธานในมุมมอง

ธง cn

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

misterdidi avatar
de flag
ดูเหมือนจะเป็นปัญหาที่ทราบแล้วของ Drupal8/9 ทางออกที่ดีที่สุดดูเหมือนจะแทนที่เส้นทางภาพรวม ดูตัวอย่างนี้ (เว็บไซต์เป็นภาษาฝรั่งเศสแต่โค้ดเป็นตัวอธิบาย) https://kgaut.net/snippets/2020/drupal-8-surcharger-la-page-de-liste-des-termes-de-taxonomie.html หรือกระทู้นี้ https://www.drupal.org/project/drupal/issues/2975863#comment-12805681
Score:1
ธง cn

เราลงเอยด้วยการสร้างโมดูลแบบกำหนดเองที่แทนที่แบบฟอร์มภาพรวมอนุกรมวิธาน ฉันวางรหัสของเราไว้ที่นี่ เผื่อจะช่วยคนอื่นได้ ในกรณีของเรา เราจำเป็นต้องเพิ่มฟิลด์ชื่อตัวย่อ ฟิลด์ชื่อประเภท และเรายังเพิ่มสถานะด้วย คุณสามารถปรับเปลี่ยนได้ตามต้องการ โมดูลที่กำหนดเองของเราเรียกว่า mc_taxonomy และอยู่ในไฟล์ mc_taxonomy.module

<?php

ใช้ Drupal\field\FieldConfigInterface;

/**
 * ใช้ hook_form_FORM_ID_alter()
 *
 * เพิ่มสถานะ field_acronym และ field_type ในหน้าภาพรวม
 */

ฟังก์ชัน mc_taxonomy_form_taxonomy_overview_terms_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
  // รับคำศัพท์จากแบบฟอร์มเพื่ออ่านข้อมูลการกำหนดค่าฟิลด์
  $vocab = $form_state->get(['อนุกรมวิธาน', 'คำศัพท์']);
  $fields = \Drupal::service('entity_field.manager')->getFieldDefinitions('taxonomy_term', $vocab->id());

  // แทรกฟิลด์ถ้ามี
  mc_taxonomy_overview_insert_field($form, 'status', 'Status', 1, function ($value) {
    คืนค่า $ ? 'เผยแพร่แล้ว' : 'ยังไม่ได้เผยแพร่';
  });

  ถ้า (isset($fields['field_type'])) {
    mc_taxonomy_overview_insert_field($form, $fields['field_type']);
  }

  ถ้า (isset($fields['field_acronym'])) {
    mc_taxonomy_overview_insert_field($form, $fields['field_acronym']);
  }

}

ฟังก์ชัน mc_taxonomy_overview_insert_field(&$form, $field, $label = null, $index = 1, $valueFunction = null) {
  ถ้า (ดัชนี $ <= 0) {
    // TODO อนุญาตดัชนี == 0
    // TODO ตรวจสอบขอบเขตบน
    โยนข้อยกเว้นใหม่ ('ดัชนีต้องเป็น >= 1.');
  }
  // แยกข้อมูลจาก $field หากเป็นประเภทที่ถูกต้อง
  ถ้า ($ ฟิลด์อินสแตนซ์ของ FieldConfigInterface) {
    ถ้า (! $label) {
      $label = $field->label();
    }
    $fieldName = $field->getName();
  } อื่น {
    $fieldName = $ฟิลด์;
  }
  // เพิ่มฟิลด์ในส่วนหัว
  $form['terms']['#header'] = array_merge(
    array_slice($form['terms']['#header'], $index - 1, $index, TRUE),
    [$ฉลาก],
    array_slice($form['terms']['#header'], $index, NULL, TRUE)
  );
  foreach ($form['terms'] เป็น &$term) {
    // ค้นหาเงื่อนไขภายในอาร์เรย์เรนเดอร์
    ถ้า (is_array($term) && !empty($term['#term'])) {
      // เพิ่มฟิลด์ให้กับคำศัพท์สำหรับเนื้อหา
      $fieldValue = $term['#term']->get($fieldName)->value;
      $term = array_merge(
        array_slice($term, $index - 1, $index, TRUE),
        [
          $fieldName => [
            '#markup' => $valueFunction ? $valueFunction($fieldValue) : $fieldValue,
            '#type' => 'รายการ',
          ]
        ]
        array_slice($term,$index,NULL,TRUE)
      );
    }
  }
}

โพสต์คำตอบ

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