Перевод drupal и модулей на русский (локализация)

В этой статье рассмотрим, как произвести перевод сайта на drupal и его модулей на русский язык. Сразу после установки язык по-умолчанию сайта английский. Чтобы сделать локализацию сайта, самый простой и удобный способ (на мой взгляд) - это модуль Localization update. Этот модуль позволит произвести первоначальный перевод интерфейса drupal, а также будет впоследствии переводить установленные модули и периодически делать обновления перевода по мере добавления новых переведенных строк.

Автоматическая генерация алиасов для динамических страниц views

При создании алиасов урлов с помощью модуля Pathauto можно заменить системные пути для нод и для пользователей на человекопонятные урлы. Для нод по-умолчанию создаются алиасы content/[node:title], а для юзеров - users/[user:name]. Но если добавить вьюсом страницы-вкладки, принимающие в качестве аргумента айдишники нод или юзеров, то алиасы к ним применены не будут. И в результате на сайте образуются страницы с урлами типа /user/%uid/articles(/user/%uid/photos) или /node/%nid/poll. Чтобы данную ситуацию исправить и создавать алиасы и этим страницам при создании новых материалов или пользователей, можно воспользоваться модулем Rules либо сделать это с помощью модуля Sub-pathauto. Но данную задачу можно решить и написанием небольшого кастомного модуля.

Перенести шаблоны views из темы в модуль

Если есть необходимость перенести шаблоны вьюс из каталога с темой в свой модуль, чтобы к примеру при изменении темы они не "потерялись", можно воспользоваться hook_theme. Для примера возьмем два шаблона views-view-unformatted--gallery--page.tpl.php и views-view--gallery--page.tpl.php, где gallery - имя вьюхи, а page - имя дисплея. Перенесем эти файлы из папки с темой в папку с созданным модулем и имплементируем hook_theme. Нужно при этом обязательно указать базовые хуки 'base hook' для каждой функции темизации.

Вывод формы поиска в шаблоне страницы

Для того, чтобы вставить форму поиска непосредственно в шаблон страницы, нужно в препроцессе отрендерить форму и результат записать в переменную, которую затем будем выводить в шаблоне страницы page.tpl.php.

В файл template.php используемой на сайте темы добавляем preprocess_page и в нем создадим новую переменную

Использование html кода в заголовках меню

При добавлении нового пункта меню в название ссылки меню, которое будет анкором для ссылки, невозможно добавить html код. Это связано с тем, что текст при темизации пропускается через функцию chek_plain() и соответственно все теги будут выводиться как обычный текст. Но иногда нужно добавить дополнительную разметку для некоторых пунктов меню. Это бывает нужным, когда в качестве анкора нужно использовать изображение или анкор нужно обернуть дополнительно тегами. Для решения данной задачи нужно в файле template.php переопределить функцию темизации пункта меню theme_menu_link().

Операторы OR и AND для db_select в Drupal 7

Последовательный вызов методов condition() для построения запросов в Drupal 7 функцией db_select() использует логический оператор AND. Для логического оператора OR между условиями используется функция db_or(). Для примера сделаем выборку материалов из таблицы node, которые имеют status=0(неопубликованные) или же у которых автор с uid=1.

Способы восстановления пароля пользователя (администратора)

В данном сниппете рассмотрим способы восстановления потерянного или забытого пароля администратора или любого другого пользователя. Cброс пароля администратора можно сделать разными способами: выполнением SQL запроса, созданием php файла в корневом каталоге друпала и исполнении его или же (самые быстрые способы) с помощью drush команд.

Добавление HTTP заголовков с помощью #attached

Для добавления заголовков HTTP в Drupal 7 используется функция drupal_add_http_header. Но также имеется возможность добавить header в рендерном массиве с помощью свойства #attached. Для этого добавляем в attached элемент с ключом drupal_add_http_header.

Для примера добавим заголовок к форме и таким образом при обращении к страницам с данной формой будут отдаваться необходимые заголовки:

Получение минимального и максимального значения поля таблицы базы данных

Иногда бывает нужно получить минимальное и максимальное значение какого-нибудь поля. Для примера возьмем поле с ценой field_data_commerce_price, прикрепленное к товару. Соответственно получим минимальную и максимальную цену товара.

Адаптивное меню с помощью модуля Responsive Menus

С развитием планшетов и смартфонов все более актуальной становится адаптивная верстка и в частности - адаптивное меню. При этом нужно либо специально при верстке меню учитывать разные расширения экранов, либо воспользоваться модулями, которые занимаются темизацией меню с использованием css и jquery ( к примеру Superfish или Nice Menus).