Điểm:0

Hiển thị liên kết cho tất cả các chế độ xem trong menu quản trị viên

lá cờ in

Với thanh công cụ quản trị được bật, một trong những điều tôi nhớ từ Drupal 7 là di chuột qua menu quản trị viên trên Cấu trúc >> Lượt xem và xem danh sách tất cả các chế độ xem và có thể nhấp vào một chế độ xem để chỉnh sửa.

Xem ảnh chụp màn hình này để biết hành vi hiện tại.

ảnh chụp màn hình

Có cách nào để cung cấp tính năng này từ mô-đun tùy chỉnh không? Tôi biết tôi có thể nhận danh sách tất cả các chế độ xem với Lượt xem::getAllViews() nhưng tôi không chắc làm thế nào để thêm chúng theo chương trình. Nếu tôi sử dụng một mô-đun tùy chỉnh và sử dụng hook_update_n() để thêm vào menu, điều gì sẽ xảy ra khi một chế độ xem mới được thêm vào? Nó sẽ tự động được cập nhật với chế độ xem đã thêm hay chỉ liệt kê những cái đã có khi mô-đun được cài đặt? Nếu không, làm thế nào điều này có thể được thực hiện để luôn hiển thị danh sách chế độ xem hiện tại?

Kevin avatar
lá cờ in
Tại sao không cài đặt mô-đun thanh công cụ quản trị?
Jaypan avatar
lá cờ de
Tôi không hiểu câu hỏi - khi tôi truy cập quản trị -> cấu trúc -> chế độ xem trên bản cài đặt Drupal vanilla, tôi thấy danh sách tất cả các chế độ xem.
pglatz avatar
lá cờ in
Tôi đã cài đặt thanh công cụ quản trị. Tôi vừa cài đặt vanilla 9.4 để xác minh. Khi tôi nhấp vào cấu trúc/lượt xem, tùy chọn duy nhất là "Thêm chế độ xem" - tôi đoán rằng tôi đã không làm rõ câu hỏi của mình; những gì tôi muốn làm là di chuột qua cấu trúc/chế độ xem và xem danh sách các chế độ xem dưới dạng liên kết chỉnh sửa mà không cần phải truy cập chính trang chế độ xem. Đó là cách mà 7 đã làm và nó giúp tôi tiết kiệm thời gian tải trang. Tôi luôn luôn thích nó.
pglatz avatar
lá cờ in
Vì vậy, câu hỏi của tôi là, làm cách nào để nối các liên kết này vào menu và yêu cầu chúng liệt kê bất kỳ chế độ xem nào mà tôi có thể đã tạo sau khi tôi cài đặt mã của mình để tạo liên kết menu? Nếu tôi sử dụng hook_install(), tôi đoán các liên kết sẽ chỉ là danh sách tại thời điểm tôi cài đặt nó. Tôi đoán nó sẽ cần phải tự động trên mỗi lần tải trang, nếu người dùng đã đăng nhập có quyền quản trị viên.
Jaypan avatar
lá cờ de
Mặc định trong Drupal 8/9 là hiển thị danh sách các chế độ xem tại quản trị viên/cấu trúc/lượt xem, như bạn mô tả.Nếu bạn không nhìn thấy nó, một số mô-đun hoặc thứ gì đó trên hệ thống của bạn đang phá vỡ điều đó.
Jaypan avatar
lá cờ de
Bạn đã cài đặt mô-đun Giao diện người dùng chưa? Đó là một phần của cốt lõi, nhưng được yêu cầu cung cấp trang quản trị -> cấu trúc -> lượt xem.
berliner avatar
lá cờ bd
Tôi có thể xác nhận những gì pglatz mô tả.Anh ấy thực sự đang nói về menu thả xuống của thanh công cụ quản trị, menu này chỉ hiển thị mục menu "Thêm chế độ xem" khi di chuột qua cấu trúc menu. Câu hỏi của anh ấy là **không** về chính trang liệt kê lượt xem.
Jaypan avatar
lá cờ de
Bây giờ tôi hiểu rồi, cảm ơn vì đã làm rõ.
Điểm:2
lá cờ de

Bạn có thể tự thêm chúng vào một mô-đun tùy chỉnh.

[MODULE].links.menu.yml:

[MODULE].views.list:
  trình dẫn xuất: 'Drupal\[MODULE]\Plugin\Derivative\ViewMenuLinks'

[MODULE]/src/Plugin/Derivative/ViewMenuLinks.php:

<?php

không gian tên Drupal\[MODULE]\Plugin\Derivative;

sử dụng Drupal\Thành phần\Plugin\Derivative\DeriverBase;
sử dụng Drupal\Core\Plugin\Discovery\ContainerDeriverInterface;
sử dụng Drupal\views\Views;
sử dụng Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Cung cấp các liên kết menu cho các chế độ xem riêng lẻ.
 */
class ViewMenuLinks extends DeriverBase implements ContainerDeriverInterface {

  /**
   * {@inheritdoc}
   */
  tạo hàm tĩnh công khai (ContainerInterface $container, $base_plugin_id) {
    trả về tĩnh mới();
  }

  /**
   * {@inheritdoc}
   */
  hàm công khai getDerivativeDefinitions($base_plugin_definition) {
    $this->derivatives = [];

    foreach (Lượt xem::getAllViews() dưới dạng $view_id => $view) {
      $url = $view->toUrl();
      $this->derivatives['views_ui.views.list.' . $view_id] = [
        'tên_đường' => $url->getRouteName(),
        'route_parameters' => $url->getRouteParameters(),
        'tiêu đề' => $view->nhãn(),
        'cha mẹ' => 'thực thể.view.collection',
      ];
    }

    foreach ($this->derivatives as &$entry) {
      $entry += $base_plugin_definition;
    }

    trả về $this->derivatives;
  }

}

Lưu ý rằng bạn sẽ cần thay thế tất cả các phiên bản của [MÔ-ĐUN] với tên mô-đun thực tế của mô-đun của bạn.

pglatz avatar
lá cờ in
Hoàn hảo - cảm ơn rất nhiều, Jaypan. Một giải pháp thanh lịch và đơn giản; Tôi vô cùng hài lòng.
Jaypan avatar
lá cờ de
Rất vui được giúp đỡ - bạn có thể vui lòng đánh dấu đây là câu trả lời được chấp nhận không?

Đă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.