Есть ли простой способ реализовать плагин jQuery как часть узла контента Drupal? - PullRequest
1 голос
/ 07 января 2011

У меня есть плагин jQuery, который я создал и хочу, чтобы он был только на одном узле моего веб-сайта Drupal 6.У меня есть FTP и оболочка Linux, которую я могу использовать для загрузки файлов на сайт, но проблема заключается в их прикреплении к узлу.Помещение JavaScript в тело узла может быть довольно уродливым, особенно если тело представлено в редакторе WYSIWYG (отступ с сучьями, WYSIWYG пытается обернуть все мои теги тегами

и т. Д.)Есть ли какой-нибудь плагин Drupal или какой-нибудь обходной путь для облегчения такой интеграции?

Редактировать:

Я пробовал Code Per Node , что здороводля отделения JavaScript от тела, но мне действительно нужна опция для ссылки на отдельные файлы JavaScript (для этого плагина требуется несколько файлов поддержки).

Ответы [ 3 ]

2 голосов
/ 07 января 2011

Я сделал это в проекте, добавив текстовое поле CCK к типу контента под названием «Дополнительные ресурсы», который принимает несколько значений. Затем в этом узле я добавил несколько значений в это поле - пути к файлам CSS и JS, которые я хотел загрузить на этот узел. Затем в своей теме я добавил свою собственную функцию под названием themename_node_process_fields в template.php. Эта функция была первой, что была выполнена в node-content_type_name.tpl.php. Помимо всего прочего, он сделал это:

  // Loop through the additional resources and add them to the <head>.
  if (isset($node->field_additional_resources) && count($node->field_additional_resources) > 0) {
    foreach ($node->field_additional_resources as $resource) {
      if (strpos($resource['safe'], '.css') !== FALSE)
        drupal_add_css($resource['safe'], 'theme', 'all', FALSE);
      else if (strpos($resource['safe'], '.js') !== FALSE)
        drupal_add_js($resource['safe'], 'theme', 'header', FALSE, TRUE, FALSE);
    }
  }

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

1 голос
/ 07 января 2011

Если вы не ищете административный инструмент, вы можете использовать функцию drupal_add_js. Он вставит файл JavaScript на страницу во время рендеринга. Однако для этого необходимо активировать входной PHP-фильтр .

...content...
<?php
  drupal_add_js('external_file.js', 'external');
?>
...more content...

Из ссылки:

Внешний: Добавить внешний JavaScript («внешний»): позволяет включать внешние файлы JavaScript, которые не размещены на локальном сервере. Обратите внимание, что эти внешние ссылки JavaScript не агрегируются, когда включена предварительная обработка.

0 голосов
/ 07 января 2011

Лучшим способом было бы создать свой собственный модуль, который использует плагин. Это "Drupal" способ сделать это. Вы также можете drupal_add_js присоединить скрипты к модулю. Если это только конкретный узел, к которому нужно подключить этот плагин, я бы сделал оператор if в шаблоне, ищущем этот узел, хотя это довольно уродливый способ.

...