Я делаю сайт с большим количеством JS, и мне интересно, где я должен разместить код JS. Оптимально я хотел бы сохранить JS с каждым модулем, а не слой темы. Некоторый контент может быть представлен как блоки и т. Д.
Но у меня есть некоторые проблемы с кешем. В моем примере мне нужно добавить JS & CSS в форму редактирования узла. Я использовал hook_block_view, но он кэшируется. Поэтому, если в форме редактирования узла есть ошибка, функции drupal_add_js & drupal_add_css не вызываются. То же самое можно сказать и о hook_node_prepare.
Где бы вы вводили слой JS & CSS? и есть ли хуки, вызываемые get, даже если в форме редактирования узла есть ошибка?
#attached
рекомендуется почти в любом случае. Более того, drupal_add_js / css будет устаревшим в Drupal 8.Вы должны использовать свойство #attached, чтобы гарантировать, что JS / CSS всегда загружается правильно вместе с другим элементом рендеринга.
источник
#attached
и, возможно, некоторая дополнительная информация о проблеме, которую вы избегаете.Я чувствовал, что эти ответы и комментарии крайне нуждались в примере кода, особенно в @AyeshK и @Letharion. Это слишком долго для комментария, поэтому, пожалуйста, прости ответ. Если это полезно для вас, пожалуйста, проголосуйте за ответ Сумет или Летарион. Кроме того, следующий пример, очевидно, добавляет CSS, но будет почти идентичен для добавления JavaScript.
Использование ответа @ Sumeet, но с использованием
#attached
свойства вместоdrupal_add_css
выглядит следующим образом:Наконец, об осуждении
drupal_add_css
можно узнать в этом посте . Это может быть новостью для многих, для которых drupal_add_xxx работал просто отлично, как это было для меня.источник
#after_build
том, что, насколько мне известно, ерунда, и ее следует просто удалить. (Существует аналогичный комментарий к ответу, обеспечивающему#after_build
решение). Я думаю, что это само по себе объясняет, почему мой краткий ответ хорош. Если вы просто посмотрите на ссылку, которую я предоставил, вы найдете тот же код, но без лишних битов.Для Drupal 8 я бы посоветовал вам взглянуть на эту статью
источник