Вы здесь

Как правильно подключить js и css файлы в шаблоне страницы page.tpl.php в Drupal 6?

0

Коллеги помогите, столкнулся с тривиальной задачей, с которой легко справлюсь в Drupal 7. Хочу делать это аналогично и в шестой версии. Нужно элементарно сделать так, чтобы скрипт слайдера работал на одной конкретной странице и не подключался на других, для этого в шаблоне нужной страницы (например page-front.tpl.php) надо сначала подключить его, а затем активировать и задать параметры.

Как я понял на основании Drupal API (http://api.drupal.ru/api/function/drupal_add_js) добавить скрипт на страницу в шестой версии можно вот так:

 drupal_add_js(drupal_get_path('theme', 'my_theme') . 'js/my_slider.js');

My theme - это название моей темы, разумеется.

Далее мне нужно вызвать в шаблоне кусок js-кода, который будет активировать этот слайдер и задавать определённые параметры, такие как скорость слайдов и всё такое прочее, я думаю на основании прочитанного выводить это надо так:

drupal_add_js('
$(document).ready(function(){
            $("#myController").jFlow({
                controller: ".jFlowControl",
                slideWrapper : "#jFlowSlider",
                slides: "#mySlides",
                selectedWrapper: "jFlowSelected",
                width: "100%",
                height: "400px",
                duration: 300,
                prev: ".jFlowPrev",
                next: ".jFlowNext",
                auto: true  
        });
    });', 'inline');

Я не пробовал использовать данный код, поскольку в нём есть строка "$(document).ready", которая меня и смущает. Получается она же не будет работать эта функция, если мы скрипт таким образом добавляем через php? Как вообще правильно добавить не скрипт, а именно кусок скрипта в head в Drupal6? И если то что выше - правильно, то что тогда такое за конструкции вида:

<?php drupal_set_html_head('<script type="text/javascript" src="/sites/all/themes/chgakitheme/js/jquery.montage.min.js"></script>'); ?>
<?php drupal_set_html_head('<script type="text/javascript">var $cjQuery = jQuery.noConflict(true);</script>'); ?>

Как я понял они то же самое делают? В чём разница? В чём подвох?))

Версия Drupal: 
6.x
Категория: 
JavascriptTheming
Вопрос задан 29.07.2015 - 21:20

Ответы

0

Подключить js на определённых страницах можно так:

function phptemplate_preprocess_page(&$variables) {
  if (страница) {
    drupal_add_js(path_to_theme() . '/script.js');
    $variables['scripts'] = drupal_get_js();
  }
}

Инициализацию слайдера лучше вынести в отдельный js и подключить способом выше. В самом файле вместо $(document).ready пользоваться Behaviors.

Ответ дан 29.07.2015 - 22:16
Аватар пользователя xandeadx
xandeadx
1542

Спасибо, это в page.tpl.php прописать, не в template.php?

Комментарий оставлен 29.07.2015 - 22:27

Да точно, туплю, мат. части много) Сайт этот в закладках

Комментарий оставлен 29.07.2015 - 23:04