Использование встроенного пользовательского интерфейса jQuery в моей теме

На каждой странице моей темы нужно будет использовать пользовательский интерфейс jquery. Я знаю, что он включен в Drupal 7, но я не могу расшифровать техническую документацию Drupal. Похоже, что единственный способ сделать это - с файлом template.php. Но так как я не понимаю этот файл, я стараюсь избегать этого.

Есть ли другой способ или просто попробовать файл template.php?

25 голосов | спросил Ben 29 ThuEurope/Moscow2011-12-29T00:26:37+04:00Europe/Moscow12bEurope/MoscowThu, 29 Dec 2011 00:26:37 +0400 2011, 00:26:37

6 ответов


36

Добавление JS на страницу действительно не так сложно, даже если вам нужно использовать php.

Для обычных JS-файлов вы можете сделать что-то вроде этого

  drupal_add_js ($ path_to_js)
 

Drupal, однако, зарегистрировал jQuery UI в библиотеках, что упростило добавление как JS, так и CSS-файлов для некоторых jQuery-интерфейсов пользовательского интерфейса. Это можно сделать, используя

  drupal_add_library ($ module, $ library);
 

Все плагины jQuery UI существуют в системном модуле, поэтому вы можете сделать

  drupal_add_library ('system', 'ui');
 

или

  drupal_add_library ('system', 'ui.accordion');
 

Некоторые из этих плагинов имеют зависимости, потому что они используют другие плагины. Drupal обрабатывает это очень умно и будет включать необходимые компоненты.

Вы можете увидеть полный список плагинов jQuery здесь . Это отформатировано как массив PHP, но обычно соглашение об именах - ui.PLUGIN-NAME.

Если вам нужно добавить JS на каждую страницу, вы можете просто добавить крючок страницы предварительной обработки и добавить их туда. Это выглядело бы примерно так в файле template.php.

  функция NAME_OF_THEME_preprocess_page (& amp; $ variables) {
  drupal_add_library ('system', 'ui');
  drupal_add_library ('system', 'ui.accordion');
  drupal_add_library ('system', 'effects.highlight');
}
 
ответил googletorp 5 Jpm1000000pmThu, 05 Jan 2012 19:21:08 +040012 2012, 19:21:08
4

Вы пробовали модуль date_popup ? хорошо работает с формой API

ответил LSU_JBob 29 ThuEurope/Moscow2011-12-29T03:45:14+04:00Europe/Moscow12bEurope/MoscowThu, 29 Dec 2011 03:45:14 +0400 2011, 03:45:14
4
  1. Реорганизуйте свою жестко запрограммированную форму в файле .tpl в реализацию API-интерфейса Form. Как @LSU_JBob сказал, нет никакой причины, почему вы должны создавать форму без использования FAPI. Я рекомендую вам прочитать Руководство по быстрому запуску API API и добавить закладку Ссылка на API API .
  2. После того, как вы создали форму, и вы сможете отправлять ей значения, обрабатывать ее и т. д., загружать и читать код в Date contrib. Дата используется для предоставления типа всплывающего окна даты, которое вы хотите создать, но для CCK в D6 и Core Fields в D7. Хотя вы не хотите работать с полями, модуль Date использует JQuery UI для выполнения того, что вы пытаетесь сделать. Этот модуль должен дать вам убедительный пример.
ответил amateur barista 5 Jpm1000000pmThu, 05 Jan 2012 20:20:15 +040012 2012, 20:20:15
3

Спасибо googletorp за ответ.

Просто добавьте, если все еще не очень ясно связано с включением плагинов UI .

Обратите внимание, что когда вы укажете: drupal_add_library ('system', 'ui');
Это НЕ активирует все плагины ui автоматически.

Вы можете найти список доступных jquery ui плагинов в drupal 7 здесь: /misc /ui /

Чтобы включить perticular plugin, например: jquery.ui.slider.min.js , вам нужно добавить эту строку:

  drupal_add_library ('system', 'ui.slider');
 

Надеюсь, это полезно.

ответил Sumoanand 31 Maypm13 2013, 23:28:09
2

У меня была эта проблема в последнее время. Кто-то дал мне свой настраиваемый модуль, чтобы заставить JQuery UI загружаться на каждую страницу. Вы можете воссоздать его просто. Сначала установите jquery_update и убедитесь, что он работает. Затем создайте & amp; включите этот модуль:

Создайте папку в пути /в /modules с именем 'jquery_force'.

Внутри добавьте два файла:

<сильный> jquery_force.info

  name = JQuery UI Force
description = Заставляет пользовательский интерфейс JQuery всегда загружаться
зависимости [] = jquery_update
package = Пользовательский интерфейс
core = 7.x
файлы [] = jquery_force.module
 

<сильный> jquery_force.module

  & л;? PHP
/**
 * @file jquery_force.module
 * TODO: Введите описание файла здесь.
 * /

/**
 * Реализует hook_init ().
 * /
функция jquery_force_init () {
    drupal_add_library ('system', 'ui');
}
 
ответил mtro 8 Jam1000000amSun, 08 Jan 2012 02:05:34 +040012 2012, 02:05:34
2

Добавление обработчика preprocess в файл template.php не помогло мне.

Я просто добавляю drupal_add_library ('system', 'ui'); в файл template.php сам по себе работает.

ответил user17418 31 Jpm1000000pmFri, 31 Jan 2014 21:26:13 +040014 2014, 21:26:13

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132