Создание своего модуля

Главные вкладки

Аватар пользователя whiesam whiesam 18 февраля 2014 в 4:57

Всем ку!

Скажу заранее в PHP я не силён, переделать могу, но не написать.

Хочу создать свой модуль, типа scroll to top. Основа у меня есть, то биш js и css файлики. Как мне это всё дело приделать в друпал как модуль? Можно без настроек, тупо включил и готово.
И хотелось бы чтобы в админке (admin/*) он не работал.

Если захотите написать: "Иди учи PHP" то лучше ничего не пишите. Мне надо то на 1 раз, то каждый раз руками его приделывать неудобно.

Комментарии

Аватар пользователя whiesam whiesam 18 февраля 2014 в 7:47

"ХулиGUN" wrote:
drupal_add_js() drupal_add_css()

Эти знаю и использую.
"ХулиGUN" wrote:
preprocess_page()

Вроде почитал, но не совсем понял: получается в эту функцию и прописываю добавление js и css, но там какие-то переменные, и как мне указать где именно будут подключатся эти фалы?

Аватар пользователя whiesam whiesam 18 февраля 2014 в 10:24

"Chyvakoff" wrote:
 scroll_to_top или  back_to_top

Да, да, я в курсе что можно у них код посмотреть. Но там же есть куча настроек и т.д. Так что я отчасти понял только и навряд ли мне это поможет.

Аватар пользователя whiesam whiesam 18 февраля 2014 в 20:37

"drupby" wrote:
hook_library

Почитав, я понял что это то что нужно.
HTML код нужный для модуля я передам в js файле через аппенд.
CSS файл можно подключить через .info, значит остается только прикрутить js.

Надо поспать и написать эти несчастные пару строк, мб всё заработает с первого раза)

Как я понимаю, hook_library включится тут же как я включу модуль?

Ещё вопрос, какой if нужен чтобы для админки не работало? в admin/* ?

Аватар пользователя drupby drupby 18 февраля 2014 в 20:49

"whiesam" wrote:
Как я понимаю, hook_library включится тут же как я включу модуль?

нет - он вызывается drupal_add_library() и при этом библиотека содержит все css и js файлы

Аватар пользователя whiesam whiesam 18 февраля 2014 в 21:33

"drupby" wrote:
нет - он вызывается drupal_add_library() и при этом библиотека содержит все css и js файлы

Я подключая свои файлы так: https://api.drupal.org/api/drupal/modules!system!system.api.php/function...
Затем этим https://api.drupal.org/api/drupal/includes!common.inc/function/drupal_ad... я каким то макаром должен вызвать hook_library? Как? В этой функции я вообще ничего не понял(
Так? drupal_add_library(module, mymodule, $every_page = NULL) - евери пейд... я не знаю как указать на все страницы, или там на страницы определённой темы.

Аватар пользователя drupby drupby 18 февраля 2014 в 23:26
/**
 * Implements hook_library().
 */

function mymodule_library() {
  $path = drupal_get_path('module', 'mymodule');
  $libraries['mylibrary'] = array(
    'title' => 'Mylibrary',
    'website' => 'http://drupal.ru',
    'version' => '1.0',
    'js' => array(
      $path . '/myscript1.js' => array(),
      $path . '/myscript2.js' => array(),
    ),
    'css' => array(
      $path . '/mystyle1.css' => array(),
      $path . '/mystyle2.css' => array(),
    ),
  );
  return $libraries;
}

/**
 * Implements hook_init().
 */

function mymodule_init() {
  drupal_add_library('mymodule', 'mylibrary');
}

"whiesam" wrote:
я не знаю как указать на все страницы, или там на страницы определённой темы.

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

Аватар пользователя Chyvakoff Chyvakoff 19 февраля 2014 в 11:22

"whiesam" wrote:
я каким то макаром должен вызвать hook_library?

Хуки не надо вызывать. Если вы всё написали правильно - они сами вызываются. Вот ознакомься по хукам.

Аватар пользователя drupby drupby 19 февраля 2014 в 13:28

"Chyvakoff" wrote:
Если вы всё написали правильно - они сами вызываются

а с чего бы это функции-имплементации hook_library самой вызываться без вызова drupal_add_library ?

Аватар пользователя Chyvakoff Chyvakoff 19 февраля 2014 в 16:22

"drupby" wrote:
а с чего бы это функции-имплементации hook_library самой вызываться без вызова drupal_add_library ?

Да, в данном случае ты прав.
Не работал с этим хуком ранее.

Аватар пользователя whiesam whiesam 20 февраля 2014 в 6:44

В общем вот встречайте модуль "Line to top": https://dl.dropboxusercontent.com/u/17036541/line_to_top.tar.gz

1) 3 стадии подсветки линии. Сама линия начинает подсвечиваться, если курсор приближается к левому краю за 200px (смотрим пункт 4) (как в ВК, только у них всё хитрее и ширина меняется)
2) Модуль, не работает в админке, он там мешается. Во всяком случае у меня всё нормально. Нужны тесты на разных хостингах.
3) Если на сайт зашли с планшета или телефона, то полоса прокрутки отключается. Она там не к месту.
4) Не использовать с резиновыми шаблонами, так как свободного места слева должно быть от 100px до 200px (Смотрим комменты в CSS).

Почему то выпадает ошибка: [function.file-get-contents] хотя всё работает.

За подсказки и тесты буду благодарен. Это мой первый модуль на дру. Всем огромное СПС, кто помогал.