Drupal 7

Как сделать правильное склонение для множественных чисел в Drupal

Сегодня впервые столкнулся с проблемой правильного склонения множественного числа. Для английского языка данная проблема не актуальна, так как там всего два варианта: 1 item, 5 items.

В русском же языке существует 3 формы множественного числа: 1 элемент, 2 элемента, 11 элементов.

Напомню, что в Drupal числа во множественном числе выводятся с помощью функции format_plural($count, $singular, $plural, array $args = array(), array $options).

Параметры

  • $count - число для подстановки;
  • $singular - строка в единственном числе. Не используйте @count в этой строке;
  • $plural - строка для...
Benya

Модули, которые должны быть на каждом сайте.

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

Обязательные модули

  • admin_menu - должен быть на каждом сайте, ускоряет навигацию по административным страницам сайта. Для любителей стандартного тулбара имеется модуль Administration menu Toolbar style (входит в состав модуля admin_menu);
  • module_filter - изменяет вид стандартной страницы с модулями. Благодаря ему, поиск нужного модуля гораздо быстрее;
  • l10n_update...
Benya

Как создать панель для оформления заказа в Drupal Commerce

Первым делом имплементируем хук hook_commerce_checkout_pane_info, в нем нам необходимо добавить информацию о создаваемой панели. Полный список свойств панели:

  • pane_id - машинное имя панели, допускается использование строчных букв и цифр, а так же символов "-", "_"
  • title - название панели
  • name - имя панели, используемое при отображении на административных страницах, если не указано, используется title
  • page - page_id на странице оформления заказа на которой панель должна появиться по умолчанию; по умолчанию checkout
  • collapsible - будет ли панель сворачиваемая; по умолчанию FALSE
  • ...
Benya

Как заменить стандартные иконки файлов

Чтобы заменить стандартные иконки файлов необходимо в файле template.php добавить функцию theme_file_icon. Для примера заменим стандартную иконку excel файлов:

function themeName_file_icon($variables) {
  $file = $variables['file'];
  $icon_directory = $variables['icon_directory'];

  $mime = check_plain($file->filemime);
  if ($mime == 'application/vnd.ms-excel') {
    $icon_directory = path_to_theme() . '/images';
  }
  $icon_url = file_icon_url($file, $icon_directory);
  return '<img class="file-icon" alt="" title="' . $mime . '" src="' . $icon_url . '" />';
}

Далее кладем в...

Benya

Удаленный доступ к Quickstart

В предыдущем уроке я рассказывал как установить Quickstart. Из коробки Virtualbox настроен так, что Quickstart может видеть локальную сеть, но сеть не может видеть Quickstart. Для открытия удаленного доступа мы будем использовать сетевой мост.

Настройка сетевого моста

Если у Вас уже запущен Quickstart, то необходимо выключить его. Затем запускаем Virtualbox, в списке виртуальных машин находим нашу и кликаем по ней правой кнопкой мыши, в контекстном меню выбираем пункт "Настроить":

В открывшемся окне переходим на вкладку Сеть:

Выбираем тип...

Benya

Быстрый старт в разработке на Drupal

Долгое время я разрабатывал сайты используя платформу Open Server, при этом постоянно приходилось делать рутинные действие, такие как создать базу, создать домен, перезапустить Open Server, скачать и установить ядро, пройти все шаги по созданию и настройке учетной записи, скачать часто используемые модули (Ctools, Views и д.р). В конечном итоге мне надоело при создании нового проекта выполнять все эти рутинные действия и я задумался, а нет ли другой платформы для разработки, чтобы исключить эти шаги и экономить на них время? Долго искать не пришлось и мой выбор пал на виртуальную...

Benya

Как создать operation для Views Bulk Operations с помощью Rules

Сегодня в очередной раз пришлось поработать с модулем Views Bulk Operations (VBO). Суть задачи состояла в том, что необходимо было изменить стандартную страницу администрирования пользователей, расположенную по адресу "admin/people". Поставленную задачу я решил реализовывать с помощью модулей Views и Views Bulk Operations. И вроде бы все отлично получалось, но вот незадача, по умолчанию Views Bulk Operations предоставляет меньше операций над пользователями, чем доступно на стандартной странице.

В качестве примера приведу операцию Unblock the selected users, в модуле Views Bulk...

Benya

Как подключить jQuery UI Datepicker к форме в Drupal 7

Не так давно мне была поставлена задача написать модуль для резервации номеров в отеле. Выбор дат в форме резервации я решил реализовать с помощью виджета jQuery UI Datepicker. Весь модуль мы разбирать не будем, а остановимся на основных моментах с которыми столкнулся я в процессе разработки.

Сперва нам надо создать форму, к которой мы будем подключать виджет jQuery UI Datepicker, я покажу только кусок кода из модуля:

/**
 * Form constructor for the reservation form.
 *
 * @ingroup forms
 */
function mymodule_reservation_form($form, &$form_state) {

  $form['arrival'] = array...
Benya