Ich erstelle eine Site mit viel JS und frage mich, wo ich den JS-Code ablegen soll. Optimalerweise möchte ich die JS bei jedem Modul und nicht bei der Themenebene behalten. Einige Inhalte können als Blöcke usw. angezeigt werden.
Aber ich habe einige Probleme mit dem Cache. In meinem Beispiel muss ich JS & CSS zum Knotenbearbeitungsformular hinzufügen. Ich habe hook_block_view verwendet, aber es wird zwischengespeichert. Wenn also im Knotenbearbeitungsformular ein Fehler auftritt, werden die Funktionen drupal_add_js & drupal_add_css nicht aufgerufen. Gleiches scheint für hook_node_prepare zu gelten.
Wo würden Sie die JS & CSS-Ebene eingeben? und gibt es Hooks, die aufgerufen werden, auch wenn im Knotenbearbeitungsformular ein Fehler vorliegt?
#attached
in fast jedem Fall empfohlen wird. Darüber hinaus wird drupal_add_js / css in Drupal 8 veraltet sein.Sie sollten die Eigenschaft #attached verwenden, um sicherzustellen, dass JS / CSS immer ordnungsgemäß zusammen mit einem anderen Renderelement geladen wird.
quelle
#attached
und möglicherweise einigen zusätzlichen Informationen zu dem Problem, das Sie vermeiden, profitieren würde .Ich hatte das Gefühl, dass diese Antworten und Kommentare dringend Beispielcode benötigten, insbesondere die von @AyeshK und @Letharion. Dies ist zu lang für einen Kommentar. Bitte verzeihen Sie die Antwort. Wenn es für Sie nützlich ist, stimmen Sie entweder die Antwort von Sumeet oder Letharion ab. Das folgende Beispiel fügt natürlich CSS hinzu, wäre jedoch für das Hinzufügen von Javascript nahezu identisch.
Die Verwendung der Antwort von @ Sumeet, aber die Verwendung der
#attached
Eigenschaft anstelle vondrupal_add_css
, sieht folgendermaßen aus:Schließlich kann die Abwertung von
drupal_add_css
in diesem Beitrag gefunden werden . Das mag für viele neu sein, für die drupal_add_xxx genauso gut funktioniert hat wie für mich.quelle
#after_build
bisschen ist nach meinem besten Wissen Unsinn und sollte einfach entfernt werden. (Es gibt einen ähnlichen Kommentar zu der Antwort, die die#after_build
Lösung liefert. ) Ich denke, dies erklärt an sich, warum meine kurze Antwort gut ist. Wenn Sie sich einfach den von mir bereitgestellten Link ansehen, finden Sie denselben Code, jedoch ohne die unnötigen Bits.Für Drupal 8 würde ich Ihnen raten, sich diesen Artikel anzusehen
quelle