Як отримати jquery, працюючи над Drupal 7 - для новачків


8

Я читав багато навчальних посібників в Інтернеті про те, як отримати jquery, працюючи над drupal 7. Хоча є багато рядків коду та прикладів, що я не можу знайти, який кусок коду поставити куди (можливо, це очевидно для більшості розробників)

Отже, що я роблю

1) Я створюю новий спеціальний блок

2) Там, з drupal UI, я пишу свій код

(function ($) {

  $(document).ready(function(){

    // jquery here

  });
})(jQuery);

3) Я показую блок, але jquery не завантажується.

Я читаю, що я повинен вводити цей код у файли шаблонів, файли тем, файли css, файли інформації, і я не знаю, що whatelse!

Мені незрозуміло, у який саме файл і в який шлях я повинен поставити вищезазначений код, щоб правильно працювати?

Будь-яка порада?

Дуже дякую!

Відповіді:


11

Кілька речей тут:

  1. Якщо ви можете уникнути введення javascript та PHP на сайт через інтерфейс, це, можливо, позбавить вас від проблем. Якщо у вас немає альтернатив, це нормально, але ось кілька причин, чому це не чудова ідея: https://drupal.stackexchange.com/a/2512/10729 (зауважте, що це спрямовано на PHP, а не на js, а більшість точки все ще стоять за js). Модуль прикладів має приклад створення користувацьких блоків.
  2. Якщо ви хочете приєднати js, ви хочете, щоб він був на всіх сторінках, ви можете додати його до інформаційного файлу теми. Якщо ви хочете лише в деяких місцях, краще використовувати drupal_add_js (), так що це потрібно лише на сторінках. Для прикріплення поведінки js до форм ви також можете використовувати атрибут #attached на елементах форми.
  3. Якщо ви використовуєте $ (document) .ready (), він запустить ваш javascript під час завантаження сторінки, однак якщо сторінка оновлюється через ajax, ваш javascript знову не запускатиметься, тому нова розмітка не впливатиме вашим javascript є. Для вирішення цих випадків слід використовувати поведінку друпалів, а не готовий документ.

Наприклад:

(function ($) {
  Drupal.behaviors.yourBehaviorName = {
    attach: function (context, settings) {
      // Do your thing here.
    }
  };
})(jQuery);

Рекомендую прочитати ці сторінки:
Керування JavaScript в Drupal 7
Робота з JavaScript та jQuery


7

У свій .js вставити такий код;

(function ($) {  

  Drupal.behaviors.themename = {

    attach: function (context, settings) {            

     // All our js code here
     alert('Hello jQuery');
     // end our js code

   }

 };})(jQuery);

У вашій темі template.php створіть гачок_preprocess_html та використовуючи drupal_add_js

function themename_preprocess_html(&$variables) {
  drupal_add_js(drupal_get_path('theme', 'themename') . '/js/your.js', array( 
    'scope' => 'footer', 
    'weight' => '15' 
  ));
}

Просто змініть ім'я теми


1
Зауважте, що це додасть JavaScript на кожну сторінку, що може бути або не бажано.
рубін

1
Так, це додасть JavaScript на кожну сторінку. Дозвольте @apdr спробувати це і перевірити його знання
sibiru

2
якщо ви хочете, щоб js завантажувався на кожну сторінку через тему, не було б більше сенсу просто перелічити файл у файлі .info теми?
Jimajamma

3

файл .js повинен виглядати так:

(function ($) {
    Drupal.behaviors.cdgi = {
        attach: function(context) {

        //your code

        }
    }
}(jQuery));

використовуйте drupal_add_js () у своєму модулі, щоб додати цей файл у Drupal. хороші посилання тут і тут .

очищати кеш часто;)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.