Упрощение связки двух материалов в Drupal

Опубликовано 2014.05.14 в разделе Drupal.

Предположим у вас на сайте есть два типа материала. Пусть это будет "Автор" и "Статья". В статье есть поле типа "Ссылка на материал", через которое к статье привязывается автор. Задача следующая: на странице автора нужна ссылка на добавление статьи. При переходе по этой ссылке поле автора должно быть заполнено соответствующим автором. Реализуется это достаточно просто. Для этого понадобятся:
  • собственный модуль
  • знание Form API
  • понимание hook_form_alter
  • немного знаний по PHP

Невидимая капча Drupal

Опубликовано 2014.05.08 в разделе Drupal.

Использование капчи является самым распространенным способом защиты от ботов. Увы, для человека - это крайне неприятный элемент интерфейса, который хочется куда-нибудь спрятать и никому не показывать. В идеале - чтоб реальный человек её вообще не видел, а бот - не мог пройти. И такая капча была придумана, она так и называется - невидимая капча.
 
Суть её в том, что в форму добавляется поле ввода типа text. Затем оно прячется средствами CSS. Такое поле будет невидимо для обычного человека, а парсер бота распознает это поле ввода, и обязательно заполнит.

Свой виджет Fivestar для Drupal

Опубликовано 2014.04.16 в разделе Drupal.

Модуль Fivestar предлагает на выбор 11 типов виджетов. В основном это всё звёздочки. Хуки этого модуля позволяют с лёгкостью добавить свои виджеты, или попросту скины для отображения оценок. Для добавления своих виджетов нужен отдельный модуль. Почитать о его создании можно тут или тут. Далее используем hook_fivestar_widgets. Пусть модуль называется star_widgets Тогда функция будет выглядеть так:
  1. function star_widgets_fivestar_widgets() {

Создание своего скина для jCarousel

Опубликовано 2014.03.30 в разделе Drupal.

В продолжении статьи о программном выводе jCarousel я расскажу как создать свой скин. Это посложнее, чем поправить css в скине Default, но это Друпалвейное решение, так что используйте его. Для начала нужно создать свой модуль. Подробнее об этом тут и тут Далее объявить в нём hook_jcarousel_skin_info
  1. function mymodule_jcarousel_skin_info() {
  2. $skins = array();

Программный вывод jCarousel

Опубликовано 2014.03.30 в разделе Drupal.

Есть один замечательный модуль для вывода карусели из нод. Называется jCarousel. Этот модуль расширяет Views, позволяя выводить материалы каруселью. Но его можно использовать и отдельно, пользуясь его API. Вызов карусели происходит через темизирующую функцию:
  1. theme('jcarousel', array('items' => $images, 'options' => $options));

Drupal hook_form_FORM_ID_alter

Опубликовано 2013.07.16 в разделе Drupal.

Друпальский хук hook_form_FORM_ID_alter бывает нужен очень часто. Данный хук следует применить, если нужно слегка(или не слегка) изменить любую форму на сайте. Это может быть форма добавления материала, форма модуля Webform или любого другого. Для того чтобы реализовать хук - потребуется модуль. Как его написать - смотрите тут. В нём можно сразу же реализовать hook_form_FORM_ID_alter, при условии, что вы знаете id формы. Если не знаете - то узнать его не составит труда.

Drupal settings.php

Опубликовано 2013.06.20 в разделе Drupal.

Это единственный конфигурационный файл в Друпал, до восьмой версии. В нём хранится логин и пароль для доступа к БД, название домена сайта и несколько надстроек над PHP. Вы также можете самостоятельно добавить туда любую информацию, например какие-то конфигурационные данные. Это переменные будут глобальными и их можно будет использовать в любом модуле. Главное не забывать объявлять их в теле функции как глобальные. Например:
  1. $conf['secret_login'] = 'adminko';
  2. $conf['secret_pass'] = 'hGcSD.ujdD';
А затем внутри любой функции просто пишите:
  1. global $conf;

Изменение регистра первой буквы

Опубликовано 2013.06.20 в разделе Drupal.

Если одну и туже запись нужно выводить то с большой, то с маленькой буквы - можно использовать следующую функцию.
  1. function drupal_first_letter($string, $choice = NULL) {
  2. if (!in_array($choice, array('up', 'down'))) {
  3. return $string;
  4. }
  5. if ($choice == 'up') {
  6. $fl = drupal_strtoupper(drupal_substr($string, 0, 1));
  7. }
  8. else {
  9. $fl = drupal_strtolower(drupal_substr($string, 0, 1));
  10. }
  11. return $fl . drupal_substr($string, 1);
  12. }

Отделение представления от кода

Опубликовано 2012.07.04 в разделе Drupal.

Зачастую в Drupal 7 при написании собственных модулей необходимо отделить логику от представления. Перейдем сразу к практике и напишем простой модуль, который будет выводить три фиктивные ссылки на странице /mymodule. В CMS Drupal логика работы скриптов очень хорошо отделена от представления. Повсеместно используются .tpl.php шаблоны. Например для тех же страниц,блоков,нод и т.д.

Скрытие overlay при клике на внешней области

Опубликовано 2012.05.05 в разделе Drupal.

Замечательный модуль overlay выводит административные страницы сайта в модальном окне,закрвть которое можно просто кликнув на крестик. Немного расширив код этого модуля,а именно шаблон, можно закрывать это модальное окно щелчком вне области этого модального окна. Прямо как lightbox или colorbox. Для реализации потребуется переопределить шаблон overlay.tpl.php. Взять его можно в папке модуля. Копируем его в папку вашей административной темы и добавляем следующую строчку.
  1. <a id="overlay-close-bg" href="#" class="overlay-close"></a>