Как добавить собственный JQuery в модуль drupal? [закрыто]

Я создал специальный модуль в drupal 7. Модуль создает форму для пользователя и сохраняет данные формы в базе данных. Модуль работает нормально. Но я хочу добавить для страницы собственный jquery. Я искал Google и нашел результат добавления пользовательского JQuery для темы, а не для модулей. Я догадался и добавил следующее в свой информационный файл модуля

 ; scriptsscripts [] = js/test.js  

Просто предупредите приветственное слово, пока модуль загрузится. Но ничего не произошло. Можно ли добавить собственный JQuery для модуля или я ошибаюсь? Пожалуйста, помогите.


Есть несколько способов добавить JS в ваш модуль, вы можете проверить их здесь https://www.drupal.org/node/756722

Ваша попытка должна работать нормально, только не забудьте очистить кеши после редактирования файла .info модуля.

Ура!


4

с помощью функции drupal_add_js вы можете добавить свой собственный файл javascript, лучше всего вызывать в hook_init

Пример

 /** * Реализует hook_init ().  */function mymodule_init () {drupal_add_js (drupal_get_path ('module', 'mymodule'). '/js/mymodule.script.js', array ('scope' => 'footer'));  }  

drupal_add_js
hook_init

Этот обработчик не запускается на кешированных страницах. Чтобы добавить JS, который должен присутствовать на всех страницах, модули не должны реализовывать эту ловушку, но объявляют эти файлы в своем файле .info.

  scripts [] = js/script.js  

Улучшите этот ответ
отредактировано 12 нояб. : 52
ответил 12 ноя ’14 в 8:41
  • Со страницы документации hook_init: «Эта ловушка не запускается на кэшированных страницах. Чтобы добавить CSS или JS, которые должны присутствовать на всех страницах, модули не должны реализовывать эту ловушку, но объявляют эти файлы в своих файлах .info. » — Beebee 12 нояб., В 9:40
  • 1
    Это сделано в моем комментарии Thx Beebee — Abdelouahed Siyagh 12 нояб., в 9:56
комментировать |

с функцией drupal_add_js вы можете добавить свой собственный файл javascript, лучше всего вызывать в hook_init

Пример

 /** * Реализует hook_init ().  */function mymodule_init () {drupal_add_js (drupal_get_path ('module', 'mymodule'). '/js/mymodule.script. js ', array (' scope '=>' footer '));  }  

drupal_add_js
hook_init

Этот обработчик не запускается на кешированных страницах. Чтобы добавить JS, который должен присутствовать на всех страницах, модули не должны реализовывать эту ловушку, но объявляют эти файлы в своем файле .info.

  scripts [] = js/script.js  

1

Вы можете добавлять любые файлы js и css из своего .info файл. Это так же просто, как вы измените свой файл modulename.info с помощью:

  scripts [] = js/jsfilename.jsstylesheets [all] [] = css/cssfilename  .cssstylesheets ['укажите_имя'] [] = css/cssfilename.css  

Улучшите этот ответ
ответил 12 ноя ’14 в 10:01
добавить комментарий |

Вы можете добавить любые файлы js и css из вашего .info файла. Это так же просто, как вы измените свой modulename.info файл с:

  скриптами [] = js/jsfilename.jsstylesheets [all] [] = css/cssfilename.cssstylesheets ['укажите_имя'] [] = css/cssfilename.css   


Как добавить библиотеку javascript в тему Drupal 8?

Я пытаюсь включить настраиваемый javascript для управления моим меню в создаваемой мной теме Drupal 8. Я выполнил инструкции из руководства по созданию тем Drupal 8, включив его в свой файл .info.yml:

  #js librarieslibraries: - dcf/base  

и определяя его в моем файле .libraries.yml:

  base: version: 1.xjs: js/ndscripts.jsdependencies: - core/drupal -  core/underscore - core/backbone - core/jquery  

и, наконец, создание файла .theme с реализацией ловушки (я не совсем PHP-разработчик, поэтому я в основном копировать/вставить задание из примера в руководстве)

   phpfunction dcf_page_alter (& $ page) {$ page ['# connected'] ['library'] []  = 'dcf/base';}?>  

Я очищаю кеш, выхожу из системы, чтобы увидеть страницу, не вошедшую в систему (в представлении администратора есть МНОГО дополнительных скриптов и css файлы, которые он вызывает) и посмотрите на источник, чтобы узнать, загружается ли мой скрипт. Загружаются все зависимости, перечисленные в моей библиотеке, но не сам скрипт.

Сам скрипт — это просто базовый тест, который должен скрыть мое главное меню с помощью JQuery, помещенный в «строгий» формат, о котором упоминается в руководстве по тематике.

   (function () {"use strict";//Пользовательский javascript $ (document) .ready (function () {$ ("# block-dcf-main-menu"). скрывать();  });}) ();  

Я сейчас в растерянности. Инстинкт подсказывает мне, что ошибка заключается в моей реализации ловушки, потому что я действительно не понимаю систему ловушек Drupal, но, насколько я могу судить, это может быть просто так, что они еще не закончили реализацию этого для Drupal 8 (я я делаю это, чтобы протестировать Drupal 8 для предстоящей перестройки веб-сайта моей организации, и в настоящее время я использую Drupal 8.0.x-beta2 без установленных дополнительных модулей)


2

вот как я это сделал

my_theme.info

без объявления библиотеки

my_theme.libraries.yml

   my_theme: версия: 1.0 css: theme: css/my_theme.css: {} js: js/my_theme.js: {} зависимости: - core/jquery - core/drupal - core/drupalSettings  

my_theme.theme

 /*** см. документ, чтобы более подробно прикрепить библиотеку  ** */функция my_theme_page_attach  ments_alter (массив и $ вложения) {$ attachments ['# прикреплено'] ['библиотека'] [] = 'my_theme/my_theme';  }  

/js/my_theme.js

  console.log ('работает  ! ');  

/css/my_theme.css

 /* smthg радикал  происходит */body {display: none;  }  

Улучшите этот ответ
ответил 27 окт. в 9:45
  • 1
    не забудьте очистить кеш или деактивировать его — Matoeil 27 окт., 09:52
добавить комментарий |

вот как я это сделал

my_theme.info

без объявления библиотеки

my_theme.libraries.yml

  my_theme:  версия: 1.0 css: theme: css/my_theme.css: {} js: js/my_theme.js: {} зависимости: - core/jquery - core/drupal - core/drupalSettings  

my_theme.theme

 /*** см. документ, чтобы более подробно прикрепить библиотеку **  */function my_theme_page_attachments_alter (массив и $ вложения) {$ attachments ['# прикреплено'] ['библиотека'] [] = 'my_theme/my_theme';  }  

/js/my_theme.js

  console.log ('работает  ! ');  

/css/my_theme.css

 /* smthg радикал  происходит */body {display: none;  }  

Ответ, поскольку в комментарии от clive отсутствовал {} в конце скрипта. Итак, объявление скрипта в mytheme.libraries. yml должен быть
js: js/ndscripts: {}

Оцените статью
logicle.ru
Добавить комментарий