Estoy haciendo un sitio con un montón de JS, y me pregunto dónde debería poner el código JS. De manera óptima, me gustaría mantener el JS con cada módulo y no con la capa de tema. Parte del contenido podría estar expuesto como bloques, etc.
Pero tengo algunos problemas con el caché. En mi ejemplo, necesito agregar JS y CSS al formulario de edición de nodos. He usado hook_block_view, pero está en caché. Por lo tanto, si hay un error en el formulario de edición de nodo, no se invocan las funciones drupal_add_js y drupal_add_css. Lo mismo parece ser cierto para hook_node_prepare.
¿Dónde ingresarías la capa JS y CSS? y hay ganchos que se llaman incluso si hay un error en el formulario de edición de nodos?
#attached
se recomienda su uso en casi cualquier caso. Además, drupal_add_js / css quedará obsoleto en Drupal 8.Debe usar la propiedad #attached para asegurarse de que JS / CSS siempre se cargue correctamente junto con otro elemento de representación.
fuente
#attached
, y tal vez alguna información adicional sobre el problema que está evitando.Sentí que estas respuestas y comentarios necesitaban desesperadamente código de ejemplo, particularmente los de @AyeshK y @Letharion. Esto es demasiado largo para un comentario, así que por favor, perdona la respuesta. Si es útil para usted, vote por la respuesta de Sumeet o Letharion. Además, el siguiente ejemplo obviamente agrega CSS, pero sería casi idéntico para agregar javascript.
Usando la respuesta de @ Sumeet, pero usando la
#attached
propiedad en lugar dedrupal_add_css
, se ve así:Finalmente, la depreciación de
drupal_add_css
se puede encontrar en esta publicación . Eso puede ser una novedad para muchos para quienes drupal_add_xxx funcionaba bien, como lo fue para mí.fuente
#after_build
bit es, a mi leal saber y entender, y simplemente debe eliminarse. (Hay un comentario similar sobre la respuesta que proporciona la#after_build
solución) Creo que esto en sí mismo explica por qué mi breve respuesta es buena. Si simplemente miraras el enlace que proporcioné, encontrarás el mismo código, pero sin los bits innecesarios.Para Drupal 8, le aconsejaría que lea este artículo
fuente