Điểm:1

Tại sao thư viện Highcharts, được xác định từ mô-đun tùy chỉnh, không được tải trong mỗi trang?

lá cờ ae

Tôi đang chạy Drupal 9.1.7 trên Lando trên máy Mac. Tôi đang viết một mô-đun tùy chỉnh và tôi muốn đưa vào thư viện Highcharts. Tệp .libraries.yml trông như thế này.

thống kê_độ:
  js:
    https://code.highcharts.com/highcharts.js: { type: external, minified: false }
  phụ thuộc:
    - lõi/jquery

Từ việc đọc tài liệu, tôi tin rằng tôi sẽ thấy thư viện Highcharts ở cuối mỗi trang khi tôi xem nguồn, nhưng tôi không thấy nó ở đâu cả.

Tui bỏ lỡ điều gì vậy?

Tôi đã xác thực nội dung YAML. Tôi cũng đã cài đặt mô-đun Biểu đồ, nếu điều đó tạo ra bất kỳ sự khác biệt nào.

Điểm:2
lá cờ in

Xác định thư viện chỉ là một nửa của quá trình. Các thư viện không được tải trên mọi trang theo mặc định - bạn cần thông báo cho Drupal khi nào nên đưa thư viện của bạn vào.

Để biết chi tiết đầy đủ, xem Đính kèm thư viện vào (các) trang phần của Thêm biểu định kiểu (CSS) và JavaScript (JS) vào mô-đun Drupal tài liệu trên drupal.org.

tôi cá là bạn muốn đính kèm thư viện vào một mảng kết xuất:

$build['the_element_that_needs_asset_library']['#attached']['library'][] = 'your_module/library_name';

Hoặc đính kèm thư viện trong một mẫu twig (mẫu tạo đánh dấu biểu đồ của bạn):

{{ attachment_library('your_module/library_name') }}
Dorian Winterfeld avatar
lá cờ ae
Đúng! Tôi đang cố gắn nó vào một mảng kết xuất như sau: `$chart['#attached']['library'][] = 'stats_degrees/highcharts';` `$chart['#type'] = 'biểu đồ';` `$chart['#chart_type'] = 'dòng';` `$chart['#chart_library'] = 'highcharts';` vân vân. Nhưng khi tôi trả về mảng: `return render($chart);` nó luôn là null và không có Highcharts JS khi tôi xem nguồn. Cách tiếp cận này hoạt động trong D7 nhưng D7 xử lý các thư viện JS khác nhau và drupal_render() đã được thay thế bằng render().
sonfd avatar
lá cờ in
Bạn thường không nên kết xuất một mảng kết xuất bằng cách gọi kết xuất, bạn chỉ nên trả lại nó. Đó là điều đầu tiên mà tôi sẽ thử. Xem https://www.drupal.org/docs/theming-drupal/twig-in-drupal/twig-best-practices-pre process-functions-and-templates
Dorian Winterfeld avatar
lá cờ ae
Tôi đang làm điều đó để gỡ lỗi trong PHP Storm, `$rendered = \Drupal::service('renderer')->renderPlain($chart);`. Khi tôi đi sâu vào trình gỡ lỗi, tôi thấy rằng Renderer::executeInRenderContext() đang trả về giá trị rỗng. Phải có điều gì đó không ổn với mảng kết xuất của tôi... có lẽ chúng ta nên đóng chủ đề này và tôi sẽ mở một chủ đề mới sau khi tôi gỡ lỗi nhiều hơn.
sonfd avatar
lá cờ in
Vâng, đó có vẻ là một ý tưởng tốt. Có vẻ như bạn biết cách đính kèm thư viện đúng cách, nhưng có vấn đề với mảng kết xuất của bạn.
Dorian Winterfeld avatar
lá cờ ae
Tôi đã cài đặt thư viện highcharts bằng trình soạn thảo. Nó đã cài đặt nó trong /libraries. Có ý nghĩa. Làm cách nào để tôi tham chiếu điều này trong tệp .libraries.yml của mình? Tôi đã thử đặt nó tương ứng với mô-đun `../../../libraries/highcharts/highcharts.js: { }` nhưng tôi vẫn không thấy nó trong nguồn trang. Tôi đã thử đính kèm nó vào mảng kết xuất của mình và trong một mẫu twig như thế này: `{{ attachment_library('stats_degrees/highcharts') }}` nhưng tôi vẫn không thấy nó.

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