Puncte:0

how to add javascript to an article?

drapel 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
drapel in
Îl adăugați într-unul dintre modurile descrise în documentație. Lipirea acestuia într-un WYSIWYG (presupus din captură de ecran) nu este sfătuită și descurajată de filtrarea de intrare de bază Drupal.
drapel cn
@Kevin descris în documentație unde? Văd câteva articole despre cum să adăugați javascript la module sau despre cum să adăugați javascript la teme, dar nu văd nimic despre cum să le adăugați la articole. Bănuiesc că aș putea să fac niște hackeri, ala „a face un modul dedicat doar pentru acest articol”, sau ceva de genul ăsta, dar nu am văzut nicio documentație despre cum să adaugi javascript la articole în mod specific..?
Kevin avatar
drapel in
https://www.drupal.org/docs/creating-custom-modules/adding-stylesheets-css-and-javascript-js-to-a-drupal-module
Kevin avatar
drapel in
Articolele sunt doar tipuri de conținut. Puteți implementa un cârlig într-un modul sau o temă care ar atașa Javascript dintr-o bibliotecă definită la acel tip de nod. https://drupal.stackexchange.com/questions/226861/how-to-attach-a-library-to-a-specific-content-type
hotwebmatter avatar
drapel nr
Observ că acest lucru a fost votat negativ și votat pozitiv. Cred că este o întrebare valabilă pentru acest forum. Dezvoltatorii vin la Drupal din tot felul de medii, iar cineva a cărui experiență este în principal cu JavaScript poate să nu înțeleagă imediat motivul pentru care editorul WYSIWIG de la Drupal se află într-o blocare atât de strânsă.
Puncte:2
drapel nr

La fel de @Kevin menționat în comentariile de mai sus, abordezi asta dintr-un unghi greșit.

Prin proiectare, nucleul Drupal (din cel puțin Drupal 5) folosește filtre de text și formate de intrare pentru a dezinfecta HTML adăugat de utilizatori în editorii WYSIWIG, cum ar fi CKEditor implicit.

Versiunile anterioare ale Drupal au fost mai permisive în această privință, dar ani de patch-uri de securitate pentru diverse exploatații de scripting între site-uri au făcut într-adevăr foarte dificilă inserarea JS inline în acest mod -- și din motive întemeiate.

Cu Drupal, nu spui doar „Am încredere că voi adăuga JS la acest articol”, ci spui „Am încredere în toți utilizatorii ale căror roluri le acordă permisiunea de a folosi acest filtru de text”. Nu mai este ușor să creezi un filtru de text nesigur. Dacă ați făcut-o, ați dori să restricționați utilizarea acestuia numai la utilizatorii de încredere cu roluri de administrator.

Pentru un drupalist cu experiență, nu este mare lucru să atașeze un activ JavaScript la o matrice de randare. Activele CSS și JS sunt gestionate în Drupal prin creare biblioteci care poate fi atașat la matricele de randare ale Drupal într-o varietate de moduri, folosind fie un modul personalizat, fie o temă personalizată, fie prin cod PHP, fie prin șabloane Twig.

(Dacă creați un site Drupal fără o temă personalizată, poate doriți să o reconsiderați. Puteți face rapid o subtemă indiferent de tema dvs. curentă, astfel încât să puteți modifica cu ușurință lucruri precum bibliotecile JS și șabloanele Twig.)

Cu toate acestea, înțeleg reticența dvs. de a învăța modul personalizat sau dezvoltarea temei doar pentru a adăuga puțin JavaScript.

Acest forum ar trebui să fie folosit pentru a răspunde la întrebări despre core Drupal, nu pentru a recomanda module de contrib. Cu toate acestea, există un modul relativ nou care s-ar putea adapta nevoilor dvs.:

Componentă

Din pagina Proiect a modulului Componentă:

Adăugarea componentelor JS pe site-ul dvs. Drupal a devenit mult mai ușoară. Doar combinați componentele dvs. JS (orice tip) cu un *.component.yml și puneți-l în modulul sau tema dvs. Acum, componenta ta va fi disponibilă în Drupal ca bloc - automat!

Desigur, acest lucru nu este la fel de ușor ca să lipiți ceva într-un câmp WYSIWYG, dar oricum nu avea să funcționeze niciodată (din cauza securității). Va trebui totuși să începeți prin a crea un modul personalizat, o temă sau o subtemă, astfel încât să puteți adăuga componentele dvs. JS la component.yml fişier. Dar dacă veniți dintr-o mentalitate de dezvoltator JS, această abordare vă va permite să scrieți JS-ul și să-l lipiți într-un bloc pe pagină.

Nota de securitate obligatorie:

Acest proiect nu este acoperit de politica de consiliere de securitate. Folosiți pe propria răspundere! Este posibil să fi dezvăluit public vulnerabilități.

Dar având în vedere că întreaga ta întrebare este despre înfrângerea măsurilor de securitate încorporate ale Drupal împotriva exploit-urilor XSS, nu îmi pot imagina că acest avertisment te va descuraja!

URMARE: JavaScript inline este permis în editorul Gutenberg de la WordPress și de aceea @brown-paul recomandă utilizarea Gutenberg editor în Drupal, ceea ce ar putea fi chiar mai ușor pentru dvs. dacă veniți dintr-un fundal WordPress.

drapel cn
Mulțumiri! verificarea modulului Component. btw ```Desigur, acest lucru nu este la fel de ușor ca să lipiți ceva într-un câmp WYSIWYG, dar oricum nu avea să funcționeze niciodată (din cauza securității.)``` - o comparație interesantă, WYSIWYG de la WordPress permite acest lucru, are ceva numit ` Blocuri HTML personalizate, unde puteți insera orice HTML doriți, inclusiv javascript
hotwebmatter avatar
drapel nr
Da, este o altă filozofie. Cu Drupal, nu spui doar „Am încredere că voi adăuga JS la acest articol”, ci spui „Am încredere în toți utilizatorii ale căror roluri le acordă permisiunea de a folosi acest filtru de text”. Acest lucru _este_ permis în Gutenberg și de aceea @brown-paul recomandă utilizarea [editorul Gutenberg](https://www.drupal.org/project/gutenberg) în Drupal, ceea ce ar putea fi chiar mai ușor pentru dvs. dacă sunteți provenind dintr-un fundal WP.
hotwebmatter avatar
drapel nr
@hanshenrik Ai făcut asta să funcționeze? Dacă da, ce abordare ați folosit?
drapel cn
am fost cu editorul Gutenberg; poți adăuga o mențiune despre Gutenberg la răspunsul tău?
hotwebmatter avatar
drapel nr
Sigur! În mod normal, nu aș face asta pentru că un alt utilizator mi-a sugerat-o mai întâi și nu aș vrea să fur acea karma de la @brown-paul -- dar din moment ce se pare că și-a șters răspunsul, pot și eu! :)
hotwebmatter avatar
drapel nr
@hanshenrik Mi-am actualizat răspunsul pentru a include un link către modulul Gutenberg :)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.