Làm cách nào để tạo một chủ đề yêu cầu Jquery (đối với người dùng ẩn danh)?


7

Tôi đang tạo một chủ đề cho D8 có tên là 'herchel'. Tôi đang cố gắng lấy chủ đề này để yêu cầu jquery trên tất cả các trang (D8 không tải Jquery cho người dùng ẩn danh theo mặc định)

Nhìn qua những tài liệu nhỏ mà tôi có thể tìm thấy ngoài các chủ đề cốt lõi, tôi đã tạo ra một tệp có tên herchel.lologists.yml

Tôi đã thử những điều sau đây ... tất cả đều không có may mắn:

drupal.herchel:
version: VERSION
  dependencies:
    - core/jquery

-

drupal:
version: VERSION
  dependencies:
    - core/jquery

-

herchel:
version: VERSION
  dependencies:
    - core/jquery

Có ai có bất kỳ ý tưởng về những gì tôi cần phải đưa vào này?


Điều thứ ba là đúng, tôi nghĩ vấn đề chỉ là khoảng trắng - hãy thử thụt dòng với versionkhớpdependencies
Clive

Câu trả lời:


11

Tôi đã tham gia nâng cấp một trong những chủ đề đóng góp của mình lên Drupal 8 vì tôi muốn jquery.once cho người dùng ẩn danh. Đây là những gì tôi đã làm mà làm việc tuyệt vời:

Trong herchel.lologists.yml

herchel-corescripts:
  version: VERSION
  js:
    js/scripts.js: {}
  dependencies:
    - core/jquery
    - core/drupal.ajax
    - core/drupal
    - core/drupalSettings
    - core/jquery.once

Sau đó, trong tập tin herchel.theme của chủ đề của bạn .

function herchel_preprocess_page(&$vars, $hook) {
  // Render the library as laid out in herchel.libraries.yml
  $libraries['#attached']['library'][] = 'herchel/herchel-corescripts';
  \Drupal::service('renderer')->renderRoot($libraries);
}

Hãy chú ý đến việc thụt lề cũng như mã YML. Mặc dù nó chưa thực sự được ghi nhận rõ ràng, nhưng bạn có thể xem xét vấn đề này và nhật ký thay đổi của nó.

Thay thế tệp hook_l Library_info () bằng tệp * .lologists.yml

Lưu ý rằng bạn cũng thấy tệp "scripts.js" của chủ đề lý thuyết trong mã ở trên nhưng bạn có thể không cần đến nó. Trong chủ đề của tôi, đó là những gì sử dụng jquery để gọi mã tùy chỉnh.

này có lẽ cũng là một tài liệu tham khảo tốt cho các bit YML. Lưu ý rằng trong cả hai trường hợp versionđều ở cùng cấp độ với dependencies.

Tôi cũng đã lập danh sách 8 vấn đề Drupal mà tôi gặp phải và tham gia nâng cấp D8.

Cập nhật:

Tôi đã sửa mã, chúng tôi gặp phải vấn đề này: Thay thế các giá trị mảng thư viện #attached bằng các chuỗi được đặt tên nhà cung cấp

Lưu ý điều này:

 $libraries['#attached']['library'][] = array('herchel', 'herchel-corescripts');

so với

$libraries['#attached']['library'][] = 'herchel/herchel-corescripts';

Tôi đã thử nghiệm và các lỗi đã biến mất. :)


Danny, anh thật tuyệt vời! Nhưng, tôi đang nhận được một số lỗi PHP. Cảnh báo: explode () dự kiến ​​tham số 2 sẽ là chuỗi, mảng được đưa ra trong _drupal_add_l Library () (dòng 2676 của core \ gồm \ common.inc). Cảnh báo: explode () dự kiến ​​tham số 2 sẽ là chuỗi, mảng được đưa ra trong drupal_get_l Library () (dòng 2741 của core \ gồm \ common.inc). Các lỗi này xuất hiện bất kể những gì trong tệp herchel.lologists.yml. Tôi đã cố gắng làm việc xung quanh nó một chút không có may mắn. Tôi cũng đã thử mã của bạn từ Gratis nhưng có vẻ như trước khi vấn đề 8507583 được cam kết
mherchel

1
$ page ['# Đính kèm'] ['library'] [] = 'libraryprovider / libraryname';

Mike, mã mới trong Gratis chỉ ở phiên bản dev ( drupalcode.org/project/gratis.git/tree/refs/heads/8.x-1.x ) và tôi đã thử nghiệm nó và nó hoạt động với Alpha mới nhất của D8. Hôm nay tôi khá thất vọng về một dự án nhưng tôi có thể giúp đỡ vào cuối tuần này. Phiên bản D8 nào bạn đang sử dụng?
Daniel Englander

Làm thế nào có thể đạt được điều này mà không cần sử dụng chức năng tiền xử lý?
itdarrylnorris

11

Trong chủ đề của bạn tạo tập tin thư viện herchel.libraries.yml. Trong tập tin này đặt:

libname:
  version: 1.x
  js:
    js/scripts.js: {}
  css:
    theme:
      css/styles.css: {}
  dependencies:
    - core/jquery

Trong herchel.info.ymlđặt:

libraries:
  - herchel/libname

Có một vấn đề về điều này và nó đã được khắc phục tại Drupal Developer Days ở Szeged.
Dragan Eror

Tôi đã cập nhật và kiểm tra mã trong câu trả lời của mình, nhiều khả năng đây là sự cố chúng tôi gặp phải dựa trên thông báo lỗi. drupal.org/node/2203407
Danny Englander

Có lẽ điều này cũng sẽ giúp ... Trang tài liệu về triển khai thư viện drupal.org/node/2216195
Dragan Eror

0

Có thể bạn đã thêm khoảng trắng trước "phụ thuộc:"

đây là sự thật

google-maps:
  version: VERSION
  js:
    vendor/gmap3.js: {cope: footer}
    //maps.google.com/maps/api/js?key=000000: { type: external, cope: footer}
  dependencies:
    - core/jquery
    - core/drupal
    - core/drupalSettings

ví dụ điều này là sai:

google-maps:
  version: VERSION
  js:
    vendor/gmap3.js: {cope: footer}
    //maps.google.com/maps/api/js?key=000000: { type: external, cope: footer}
    dependencies:
      - core/jquery
      - core/drupal
      - core/drupalSettings
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.