Как запретить чтение, запись и удаление директории tmb в модуле elFinder file manager

Пример кода, который позволяет запретить чтение, запись и удаление директории tmb при использовании модуля elFinder file manager:

/**
 * Implements hook_elfinder_connector_init().
 */
function example_elfinder_connector_init($options) {
  $options['perms']['/^' . $options['tmbDir'] . '/'] = array(
    'read' => FALSE,
    'write' => FALSE,
    'rm' => FALSE,
  );
  return $options;
}

Код проверен на модуле версии 7.x-0.8 и библиотеке elFinder версии 1.2

Benya

Создаем свой стиль для Colorbox

Сегодня мы поговорим о том, как можно добавить пользовательский стиль для модуля Colorbox. В одном из последних проектов мне потребовалось написать свой стиль и я сразу же подумал, что никаких проблем не будет, ведь у модуля есть страница настроек, на которой можно выбирать стили, а значит должно быть и API для добавления стилей. Я очень сильно ошибался, как оказалось, у модуля нет нормального API. Придется ухищрятся...

Для начала определимся, что стиль в общем случае состоит из двух файлов: CSS и JS...

Benya

Search API. Обработка результатов запроса

Приветствую. Сегодня, как вы уже наверняка поняли из названия, мы рассмотрим пример обработки результатов запроса, сделанного с помощью модуля Search API. Запрос я писать не буду, о том, как его сделать, вы можете прочитать в уроке Search API. Пишем свой запрос. Отмечу, что у меня результат запроса хранится в переменной $results.

Найденные ноды, я буду отображать с помощью вью...

Benya

Как программно изменить тип пейджера во Views

Пример кода, который позволяет программно изменить тип пейджера во Views:

/**
 * Implements hook_views_pre_build().
 */
function module_name_views_pre_build(&$view) {
  if ($view->name == 'view_name' && $view->current_display == 'display_name') {
    $pager = $view->display['display_name']->handler->get_option('pager');
    $pager['type'] = 'mini';
    $view->display['display_name']->handler->set_option('pager', $pager);
  }
}
Benya

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

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

Шаг 1. В файл module_name.info добавляем следующие строки:

name =...
Benya

Search API. Пишем свой запрос

Сегодня мы поговорим о том, как получить результаты поиска с помощью Search API. Я предполагаю, что у вас уже настроен сервер и индекс и поэтому на этих вещах я не буду останавливаться.

// Число 10 это количество элементов на страницу.
$offset = pager_find_page() * 10;

// Какая то строка для поиска.
$keywords = 'some string';

$options = array(
  'search id' => 'module_name',
  'parse mode' => 'terms',
);

$query = search_api_query('node_index', $options)
  ->keys($keywords)
  ->range($offset,...
Benya

Как упаковать картинки в ZIP архив

Допустим у нас есть нода с полем, в которое загружаются картинки, необходимо упаковать все картинки из этого поля в ZIP архив и сохранить в файловую систему. Для этого напишем функцию, которую потом можно будет вызвать в нужном месте:

/**
 * Create a zip archive, which contains images.
 *
 * @param object $node
 *   The node object.
 *
 * @return bool|stdClass
 *   Zip archive, if was created, FALSE otherwise.
 */
function _example_zip_create($node) {
  if (module_exists('entity') && $wrapper = entity_metadata_wrapper('node', $node...
Benya

Как создать пользовательский AJAX progress type

В Drupal 7 по умолчанию существует два AJAX progress type: 'throbber' (используется по умолчанию) и 'bar'. Установить AJAX progress type можно следующим образом:

$form['actions']['submit']['#ajax'] = array(
  'callback' => 'example_ajax_submit',
  'progress' => array('type' => 'bar'),
);

Для примера, я покажу, как сделать, чтобы во время работы AJAX у кнопки, на которой навешен AJAX обработчик менялось название. Пользовательский AJAX progress type я назвал ...

Benya