Estou criando um site com muitas JS e me pergunto onde devo colocar o código JS. Idealmente, gostaria de manter o JS em cada módulo e não na camada do tema. Algum conteúdo pode ser exposto como blocos, etc.
Mas estou tendo alguns problemas com o cache. No meu exemplo, preciso adicionar JS e CSS ao formulário de edição do nó. Eu usei hook_block_view, mas está em cache. Portanto, se houver um erro no formulário de edição do nó, as funções drupal_add_js & drupal_add_css não serão chamadas. O mesmo parece ser verdadeiro para hook_node_prepare.
Onde você inseriria a camada JS & CSS? e existem ganchos que são chamados mesmo se houver um erro no formulário de edição do nó?
#attached
é recomendado em quase todos os casos. Além disso, drupal_add_js / css será suspenso em Drupal 8.Você deve usar a propriedade #attached para garantir que o JS / CSS sempre seja carregado corretamente junto com outro elemento de renderização.
fonte
#attached
, e talvez algumas informações adicionais sobre o problema que você está evitando.Senti que essas respostas e comentários precisavam desesperadamente de código de exemplo, particularmente os de @AyeshK e @Letharion. Isso é muito longo para um comentário, então, perdoe a resposta. Se for útil para você, vote novamente na resposta de Sumeet ou Letharion. Além disso, o exemplo a seguir obviamente adiciona CSS, mas seria quase idêntico ao adicionar javascript.
Usar a resposta de @ Sumeet, mas usar a
#attached
propriedade em vez dedrupal_add_css
, fica assim:Por fim, a descontinuação de
drupal_add_css
pode ser encontrada neste post . Isso pode ser novidade para muitos para quem drupal_add_xxx estava funcionando bem, como foi para mim.fonte
#after_build
é, na melhor das hipóteses, um absurdo, e deve simplesmente ser removida. (Existe um comentário semelhante sobre a resposta que fornece a#after_build
solução) Acho que isso explica por que minha resposta breve é boa. Se você simplesmente olhasse para o link que forneci, encontraria o mesmo código, mas sem os bits desnecessários.Para o Drupal 8, aconselho você a ler este artigo
fonte