Puncte:1

De ce biblioteca Highcharts, definită dintr-un modul personalizat, nu este încărcată în fiecare pagină?

drapel ae

Rulez Drupal 9.1.7 pe lando pe un Mac. Scriu un modul personalizat și vreau să includ biblioteca Highcharts. Fișierul .libraries.yml arată astfel.

stats_degrees:
  js:
    https://code.highcharts.com/highcharts.js: { tip: extern, minimizat: fals }
  dependențe:
    - core/jquery

După citirea documentației, cred că ar trebui să văd biblioteca Highcharts în partea de jos a fiecărei pagini când văd sursa, dar nu o văd nicăieri.

Am pierdut ceva?

Am validat deja conținutul YAML. Am instalat și modulul Charts, dacă asta face vreo diferență.

Puncte:2
drapel in

Definirea bibliotecii este doar jumătate din proces. Bibliotecile nu sunt încărcate implicit pe fiecare pagină - trebuie să spuneți Drupal când ar trebui să includă biblioteca dvs.

Pentru detalii complete, consultați Atașarea unei biblioteci la pagini secțiunea Adăugarea foilor de stil (CSS) și JavaScript (JS) la un modul Drupal documentație pe drupal.org.

Pun pariu că vrei atașați biblioteca la o matrice de randare:

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

Sau atașați biblioteca într-un șablon de crenguță (șablonul care produce marcajul pentru diagramă):

{{ attach_library('your_module/library_name') }}
Dorian Winterfeld avatar
drapel ae
Da! Încerc să-l atașez la o matrice de randare astfel: `$chart['#attached']['library'][] = 'stats_degrees/highcharts';` `$chart['#type'] = 'diagrama';` `$chart['#chart_type'] = 'linie';` `$chart['#chart_library'] = 'highcharts';` etc. Dar când returnez matricea: `return render($chart);` este întotdeauna nul și nu există Highcharts JS când văd sursa. Această abordare a funcționat în D7, dar D7 a gestionat bibliotecile JS în mod diferit și drupal_render() a fost înlocuit cu render().
sonfd avatar
drapel in
De obicei, nu ar trebui să redați o matrice de randare apelând randamentul, ar trebui doar să o returnați. Acesta este primul lucru pe care l-aș încerca. Vedeți https://www.drupal.org/docs/theming-drupal/twig-in-drupal/twig-best-practices-preprocess-functions-and-templates
Dorian Winterfeld avatar
drapel ae
O fac pentru depanare în PHP Storm, `$rendered = \Drupal::service('renderer')->renderPlain($chart);`. Când analizez instrumentul de depanare, văd că Renderer::executeInRenderContext() returnează null. Trebuie să fie ceva în neregulă cu matricea mea de randare... poate ar trebui să închidem acest thread și voi deschide unul nou după ce fac mai multă depanare.
sonfd avatar
drapel in
Da, pare o idee bună. Se pare că știi cum să atașezi corect biblioteca, dar există o problemă cu matricea ta de randare.
Dorian Winterfeld avatar
drapel ae
Am instalat biblioteca highcharts folosind composer. L-a instalat sub /libraries. Are sens. Cum fac referire la asta în fișierul meu .libraries.yml? Am încercat să-l fac relativ la modulul meu `../../../libraries/highcharts/highcharts.js: { }` dar tot nu îl văd în sursa paginii. Am încercat să-l atașez la matricea mea de randare și într-un șablon twig ca acesta: `{{ attach_library('stats_degrees/highcharts') }}`, dar tot nu îl văd.

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.