Điểm:0

how to add javascript to an article?

lá cờ cn

just installed a stock Drupal 9.2.2 core, trying to create an article with the /node/add/article editor, how do i add javascript to the article? enter image description here

Kevin avatar
lá cờ in
Bạn thêm nó theo một trong những cách được mô tả trong tài liệu. Việc dán nó vào WYSIWYG (giả định từ ảnh chụp màn hình) không được khuyên dùng và không được khuyến khích bởi bộ lọc đầu vào lõi Drupal.
lá cờ cn
@Kevin được mô tả trong tài liệu ở đâu? tôi thấy một số bài viết về cách thêm javascript vào mô-đun hoặc cách thêm javascript vào chủ đề, nhưng không thấy bất kỳ điều gì về cách thêm chúng vào bài viết. đoán rằng tôi có thể thực hiện một số thao tác hack ala "tạo một mô-đun dành riêng cho bài viết này" hoặc đại loại như vậy, nhưng tôi chưa thấy bất kỳ tài liệu nào về cách thêm javascript vào bài viết một cách cụ thể..?
Kevin avatar
lá cờ in
https://www.drupal.org/docs/creating-custom-modules/adding-stylesheets-css-and-javascript-js-to-a-drupal-module
Kevin avatar
lá cờ in
Bài viết chỉ là loại nội dung. Bạn có thể triển khai hook trong mô-đun hoặc chủ đề sẽ đính kèm Javascript từ thư viện đã xác định vào loại nút đó. https://drupal.stackexchange.com/questions/226861/how-to-attach-a-library-to-a-specific-content-type
hotwebmatter avatar
lá cờ nr
Tôi nhận thấy điều này đã được hạ cấp và nâng cấp. Tôi nghĩ rằng đó là một câu hỏi hợp lệ cho diễn đàn này. Các nhà phát triển đến với Drupal từ đủ mọi nền tảng và những người có kinh nghiệm chủ yếu với JavaScript có thể không hiểu ngay lý do tại sao trình soạn thảo WYSIWIG của Drupal lại bị khóa chặt như vậy.
Điểm:2
lá cờ nr

Như @Kevin được đề cập trong các nhận xét ở trên, bạn đang tiếp cận vấn đề này từ một góc độ sai.

Theo thiết kế, lõi Drupal (kể từ ít nhất là Drupal 5) sử dụng bộ lọc văn bản và định dạng đầu vào để làm sạch HTML do người dùng thêm vào trong trình chỉnh sửa WYSIWIG như CKEditor mặc định.

Các phiên bản trước của Drupal dễ dãi hơn về vấn đề này, nhưng các bản vá bảo mật trong nhiều năm cho các khai thác tập lệnh chéo trang khác nhau đã khiến việc chèn JS nội tuyến theo cách này thực sự rất khó khăn -- và vì lý do chính đáng.

Với Drupal, bạn không chỉ nói "Tôi tin tưởng bản thân mình để thêm JS vào một Bài báo này", mà bạn đang nói "Tôi tin tưởng tất cả người dùng có Vai trò cấp cho họ quyền sử dụng bộ lọc văn bản này." Không dễ để tạo bộ lọc văn bản không an toàn nữa. Nếu bạn đã làm như vậy, bạn sẽ muốn hạn chế việc sử dụng nó chỉ cho những người dùng đáng tin cậy có vai trò Quản trị viên.

Đối với một Drupalist có kinh nghiệm, việc đính kèm nội dung JavaScript vào mảng kết xuất không phải là vấn đề lớn. Nội dung CSS và JS được quản lý trong Drupal bằng cách tạo thư viện có thể được gắn vào mảng kết xuất của Drupal theo nhiều cách khác nhau, sử dụng mô-đun tùy chỉnh hoặc chủ đề tùy chỉnh, thông qua mã PHP hoặc mẫu Twig.

(Nếu bạn đang thiết lập một trang web Drupal không có một chủ đề tùy chỉnh, bạn có thể muốn xem xét lại. Bạn có thể nhanh chóng thực hiện một Chủ đề phụ bất kể chủ đề hiện tại của bạn là gì, để bạn có thể dễ dàng sửa đổi những thứ như thư viện JS và mẫu Twig.)

Tuy nhiên, tôi hiểu sự miễn cưỡng của bạn khi tìm hiểu phát triển mô-đun hoặc chủ đề tùy chỉnh chỉ để thêm một chút JavaScript.

Diễn đàn này được cho là được sử dụng để trả lời các câu hỏi về lõi Drupal, không đề xuất các mô-đun đóng góp. Tuy nhiên, có một mô-đun tương đối mới có thể phù hợp với nhu cầu của bạn:

Thành phần

Từ trang Dự án của mô-đun Thành phần:

Việc thêm các thành phần JS vào trang web Drupal của bạn trở nên dễ dàng hơn rất nhiều. Chỉ cần kết hợp các thành phần JS của bạn (bất kỳ loại nào) với một *.component.yml và đặt nó trong mô-đun hoặc chủ đề của bạn. Bây giờ, thành phần của bạn sẽ có sẵn trong Drupal dưới dạng một khối - một cách tự động!

Phải thừa nhận rằng việc này không dễ bằng việc dán nội dung nào đó vào trường WYSIWYG, nhưng dù sao thì cách đó sẽ không bao giờ hoạt động (vì tính bảo mật). Bạn vẫn cần phải bắt đầu bằng cách tạo một mô-đun, chủ đề hoặc chủ đề phụ tùy chỉnh để bạn có thể thêm các thành phần JS của bạn vào thành phần.yml tập tin. Nhưng nếu bạn đến từ tư duy của nhà phát triển JS, cách tiếp cận này sẽ cho phép bạn chỉ cần viết JS và dán nó vào một khối trên trang.

Lưu ý bảo mật bắt buộc:

Dự án này không nằm trong chính sách tư vấn bảo mật. Sử dụng có nguy cơ của riêng bạn! Nó có thể có các lỗ hổng được tiết lộ công khai.

Nhưng xem xét rằng toàn bộ câu hỏi của bạn là về việc đánh bại các biện pháp bảo mật tích hợp của Drupal chống lại khai thác XSS, tôi không thể tưởng tượng rằng cảnh báo này sẽ ngăn cản bạn!

THEO SÁT: JavaScript nội tuyến được phép trong trình chỉnh sửa Gutenberg từ WordPress và đó là lý do tại sao @brown-paul khuyên bạn nên sử dụng Trình chỉnh sửa Gutenberg trong Drupal, điều này có thể còn dễ dàng hơn cho bạn nếu bạn đến từ nền tảng WordPress.

lá cờ cn
Cảm ơn! kiểm tra mô-đun Thành phần. btw ```Phải thừa nhận rằng việc này không dễ dàng như việc dán nội dung nào đó vào trường WYSIWYG, nhưng dù sao thì cách đó sẽ không bao giờ hoạt động (vì tính bảo mật.)``` - một sự so sánh thú vị, WYSIWYG của WordPress cho phép điều này, nó có một thứ gọi là ` Các khối HTML tùy chỉnh` nơi bạn có thể chèn bất kỳ HTML nào bạn muốn, bao gồm cả javascript
hotwebmatter avatar
lá cờ nr
Vâng, đó là một triết lý khác. Với Drupal, bạn không chỉ nói "Tôi tin tưởng bản thân mình để thêm JS vào một Bài báo này", mà bạn đang nói "Tôi tin tưởng tất cả người dùng có Vai trò cấp cho họ quyền sử dụng bộ lọc văn bản này." _is_ này được cho phép trong Gutenberg và đó là lý do tại sao @brown-paul khuyên bạn nên sử dụng [trình chỉnh sửa Gutenberg](https://www.drupal.org/project/gutenberg) trong Drupal, điều này có thể còn dễ dàng hơn cho bạn nếu bạn là đến từ một nền tảng WP.
hotwebmatter avatar
lá cờ nr
@hanshenrik Bạn đã làm việc này chưa? Nếu vậy, bạn đã sử dụng phương pháp nào?
lá cờ cn
tôi đã sử dụng trình soạn thảo Gutenberg; bạn có thể thêm đề cập đến Gutenberg vào câu trả lời của mình không?
hotwebmatter avatar
lá cờ nr
Chắc chắn rồi! Thông thường tôi sẽ không làm điều đó bởi vì một người dùng khác đã đề xuất nó trước và tôi không muốn đánh cắp nghiệp chướng đó từ @ brown-paul - nhưng vì có vẻ như anh ấy đã xóa câu trả lời của mình nên tôi cũng có thể! :)
hotwebmatter avatar
lá cờ nr
@hanshenrik Tôi đã cập nhật câu trả lời của mình để bao gồm một liên kết đến mô-đun Gutenberg :)

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