По умолчанию, друпал использует jQuery, который то появляется то нет в хеадере страницы в зависимости от того, нужны ли скрипты или нет. Так? При апомощи jq можно сделать много всего красивого. Это треюует чтобы скрипты были подключенны на каждой странице. Плюс имеются зваимозависимости скриптов, то есть я не могу кого-то подключить "грубо" в шаблоне. Вопросы:
1. Как это сделать? Чтобы по, например, меньшей мере jquery.js... был на каждой странице.
2. Как это сделать "павильно", по друпальски
Комментарии
Частично ответы нашёл здесь
http://drupal.org/node/89005
но ветка остаётся актуальной для меня: может кто чё добавит полезного
Пока не могу понять как друпал соблюдает зависимости скриптов.
Мои эксперименты с новой системой довавление js через функцию
drupal_add_js()
показали, что там все как-то черезчур интелектуально. Т.к код "высокого полета".Мне на сайте также нужна была постоянная фунциональность библиотеки JQ.
Посмотрев правила отключения\подключения js сделал так.
$js = drupal_add_js(path_to_theme()."/js/jquery-1.1.1.js", "core", "header");
echo drupal_get_js("header", $js);
Запуск показал, что на этапе drupal_get_js(), а может и ранее все-равно происходит анализ - нужна библиотека, али нет.
Посему сделал жестко
<script type="text/javascript" src="/misc/jquery.js"></script>
// php
unset($js["core"]["misc/jquery.js"]);
// ВАЖНО Эта строка должна быть последней перед выводом js. Любой другой unset - приводит снова к анализу необходимости
// включения jquery
echo drupal_get_js("header", $js);
Работатет нормально, накладок с двоением-отсутствием нет
---------
Мой сайт на drupal5 www.traveldaily.ru
>Работатет нормально, накладок с двоением-отсутствием нет
Этосамое главное Спасибо.
Спасибо! Очень ценный материал.
jquery.js включается при первом осмысленном вызове drupal_add_js(). т.е. всё, что нужно, это добавить ваш скрипт в код "правильно, по друпальски". я делаю в phptemplate-теме в template.php функцию:
<?php
function mytheme_page($content) {
drupal_add_js('myscript.js', 'theme');
// ... остальное, всё что надо сделать
return phptemplate_page($content);
}
?>