Запретить друпалу загружать javascript другого модуля

У меня есть страница drupal, которую я использую способом, который сильно отличается от всех других страниц сайта.

У меня есть модуль, который загружает на эту страницу набор специализированных js. Я обнаружил, что мой JS плохо работает с js из других модулей или, возможно, с ядром drupal.

Как я могу запретить другим модулям выполнять drupal_add_js на этой конкретной странице.

Спасибо!


person Mark    schedule 03.03.2010    source источник


Ответы (1)


Невозможно предотвратить вызов drupal_add_js() другими модулями, за исключением взлома кода этих модулей.

Для «исключения для одной страницы» вы можете реализовать функцию myModule_preprocess_page() и заменить содержимое $variables['script'] с вашей собственной разметкой включения скрипта (возможно, вам также потребуется проверить $variables['closure']).

В качестве альтернативы вы можете реализовать конкретную версию page.tpl.php для этой страницы и просто заменить печать переменной $scripts своим собственным выводом.

Обратите внимание, что хотя оба предложения обходного пути могут быть действительными решениями для особых обстоятельств, я настоятельно рекомендую проверить, почему ваш JavaScript «не работает с js из других модулей». Конфликтующий JavaScript довольно часто является признаком ошибки/небрежного кода в одном или нескольких сценариях, поэтому ваше время может быть лучше потрачено на их поиск и исправление, чем на внедрение обходных путей, которые трудно поддерживать в долгосрочной перспективе.

person Henrik Opel    schedule 03.03.2010
comment
+1 Хорошее решение и дельный совет. Корень проблемы вполне может быть кастомным js. - person googletorp; 03.03.2010