Điểm:1

Kéo và thả để sắp xếp trọng số phân loại trong chế độ xem

lá cờ cn

Tôi cần tạo chế độ xem quản trị viên tùy chỉnh để thay thế trang danh sách thuật ngữ phân loại mặc định cho một từ vựng nhất định. Lý do là chúng tôi đã thêm các trường tùy chỉnh trên từ vựng và quản trị viên cần xem các trường đó trên trang danh sách thuật ngữ. Để rõ ràng, tôi không nói về trang thuật ngữ riêng lẻ hiển thị nội dung kèm theo thuật ngữ đó, mà là trang danh sách quản trị viên thực tế hiển thị tất cả các thuật ngữ cho một từ vựng nhất định. Rõ ràng, tôi có thể tạo một khung nhìn để làm điều này, nhưng tôi không thể tìm ra cách duy trì chức năng sắp xếp kéo và thả. Tôi đã xem mô-đun Chế độ xem có thể kéo mà tôi đã sử dụng trước đây, nhưng điều đó tạo ra trường trọng số riêng của nó và không sắp xếp theo trọng số thuật ngữ phân loại thực tế. Có cách nào tốt hơn để đi về điều này? Tôi chỉ muốn có thể sắp xếp trọng số phân loại trong chế độ xem HOẶC tốt hơn nữa sẽ là cách chỉ hiển thị các trường tùy chỉnh trong màn hình danh sách thuật ngữ phân loại mặc định mà tôi không thể tìm ra cách thực hiện. Tôi cho rằng đó chỉ là một chế độ xem mà tôi có thể chỉnh sửa giống như chế độ xem nội dung chính, nhưng tôi đoán là không phải vậy. Tôi không thể tìm ra cách hiển thị các trường tùy chỉnh trên trang danh sách phân loại quản trị viên mặc định đó.

misterdidi avatar
lá cờ de
Có vẻ như đây là sự cố đã biết với Drupal8/9. Giải pháp tốt nhất dường như ghi đè lên lộ trình tổng quan. Xem ví dụ này (trang web bằng tiếng Pháp nhưng mã dễ hiểu) https://kgaut.net/snippets/2020/drupal-8-charger-la-page-de-liste-des-termes-de-taxonomie.html hoặc chủ đề này https://www.drupal.org/project/drupal/issues/2975863#comment-12805681
Điểm:1
lá cờ cn

Cuối cùng, chúng tôi đã tạo một mô-đun tùy chỉnh ghi đè biểu mẫu tổng quan về phân loại. Tôi đã dán mã của chúng tôi ở đây trong trường hợp điều này giúp ích cho người khác. Trong trường hợp của chúng tôi, chúng tôi cần thêm một trường có tên Từ viết tắt, một trường có tên là Loại và chúng tôi cũng đã thêm Trạng thái. Bạn có thể điều chỉnh khi cần thiết. Mô-đun tùy chỉnh của chúng tôi được gọi là mc_taxonomy và mô-đun này nằm trong tệp mc_taxonomy.module.

<?php

sử dụng Drupal\field\FieldConfigInterface;

/**
 * Triển khai hook_form_FORM_ID_alter().
 *
 * Thêm trạng thái, field_acronym và field_type vào trang tổng quan.
 */

function mc_taxonomy_form_taxonomy_overview_terms_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
  // Lấy từ vựng từ biểu mẫu để đọc dữ liệu cấu hình trường của nó.
  $vocab = $form_state->get(['phân loại', 'từ vựng']);
  $fields = \Drupal::service('entity_field.manager')->getFieldDefinitions('taxonomy_term', $vocab->id());

  // Chèn các trường nếu chúng tồn tại.
  mc_taxonomy_overview_insert_field($form, 'status', 'Status', 1, function ($value) {
    trả lại giá trị $? 'Đã xuất bản' : 'Chưa xuất bản';
  });

  if (isset($fields['field_type'])) {
    mc_taxonomy_overview_insert_field($form, $fields['field_type']);
  }

  if (isset($fields['field_acronym'])) {
    mc_taxonomy_overview_insert_field($form, $fields['field_acronym']);
  }

}

function mc_taxonomy_overview_insert_field(&$form, $field, $label = null, $index = 1, $valueFunction = null) {
  nếu ($index <= 0) {
    // TODO Cho phép chỉ mục == 0.
    // TODO Kiểm tra giới hạn trên.
    ném Ngoại lệ mới ('chỉ mục phải> = 1.');
  }
  // Trích xuất dữ liệu từ $field nếu đúng loại.
  if ($field instanceof FieldConfigInterface) {
    nếu (!$nhãn) {
      $nhãn = $trường->nhãn();
    }
    $fieldName = $field->getName();
  } khác {
    $fieldName = $field;
  }
  // Thêm trường vào tiêu đề.
  $form['terms']['#header'] = array_merge(
    array_slice($form['terms']['#header'], $index - 1, $index, TRUE),
    [$nhãn],
    array_slice($form['terms']['#header'], $index, NULL, TRUE)
  );
  foreach ($form['terms'] as &$term) {
    // Tìm các số hạng trong mảng kết xuất.
    if (is_array($term) && !empty($term['#term'])) {
      // Thêm trường vào thuật ngữ cho phần thân.
      $fieldValue = $term['#term']->get($fieldName)->value;
      $term = array_merge(
        mảng_slice($term, $index - 1, $index, TRUE),
        [
          $fieldName => [
            '#markup' => $valueFunction ? $valueFunction($fieldValue) : $fieldValue,
            '#type' => 'mặt hàng',
          ]
        ],
        mảng_slice($term, $index, NULL, TRUE)
      );
    }
  }
}

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.