Додайте JavaScript у певний тип вмісту


9

Я хотів би знати, який найкращий спосіб додати файл JavaScript на певну сторінку на основі типу вмісту. Наприклад, я хочу додати це:

<script type='text/javascript' src='http://maps.google.com/maps/api/js?sensor=false'></script>

Поки що я зробив, використовуючи цей спосіб, щоб додати до мого конкретного типу вмісту. Для типу вмісту map_page я додаю нижче два рядки коду на сторінці - map_page.tpl.php.

drupal_add_js("http://maps.google.com/maps/api/js?sensor=false", 'external');
$scripts = drupal_get_js();

Чи є ще якийсь кращий спосіб? якщо можливо, можна навести приклад, на даний момент не дуже добре розумію ...

Відповіді:


6

Я не можу коментувати належний еквівалент Drupal 7, але на сайтах Drupal 6 я це роблю в шаблоні_препроцесу_сторінки .

У мене буде певна логіка, щоб прийняти рішення (на основі панелей arg()або page_manager_get_current_page()з них), а потім $vars["scripts"]передбачити зовнішній скрипт. Я передчуваю, щоб я не зіткнувся з проблемою залежності з будь-якими локальними сценаріями.

Я також інколи встановлюватиму новий регіон, закликаний $global_scriptsдо думок, як Google API та SWFObject, які я хочу завантажити з CDN, і це буде надруковано раніше $scriptsв шаблоні сторінки.

Якщо чесно, хоча у мене зазвичай всі JS на всіх сторінках, щоб файли були кешовані.


6

Оскільки Drupal не дозволить вам переосмислитись template_preprocess_node(оскільки це вже визначено в node.module), я додав функцію препроцесора у свій спеціальний модуль:

function mymodule_preprocess_node(&$vars) {
  if ($vars['type'] == 'my-node-type') {
    drupal_add_js(drupal_get_path('module', 'mymodule') . '/myjs.js');
  }
}

Я preprocess_nodeскоріше використовував , ніж preprocess_pageтому, що легше дістатися до типу вузла. Якщо ви дійсно посилаєтесь на файл javascript, він буде автоматично кешований ( див. Розділ Параметри ).


2

ви також можете використовувати гачку_node_view перевірити тип вмісту, а потім додати js так, як ви це вже робите.

АБО

Якщо у вас є поле, яке виводить інформацію, яка використовуватиме JS, використовуйте там препроцесор для додавання js, тож включення js залежить від поля, що відображає карту, а не типу вмісту.


0

Просте рішення - просто розмістити add_js:

  drupal_add_js('drupal_get_path('module', 'mymodule') . '/myjs.js');

на сторінці / вузол template.php.

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