Сниппеты

Темизация формы комментариев в Drupal 7

Форма комментариев в друпале для большинства случаев избыточна. Посетителям сайта не нужны подсказки к форматам ввода, как и сама возможность выбирать какие то ему неизвестные форматы. Когда человек видит кучу полей , которые ему нужно заполнить, чтобы оставить комментарий, у него сразу же отпадает желание что-либо комментировать. Но по-умолчанию форма комментариев в друпал 7 не имеет ни своего шаблона, ни функции темизации. Чтобы это исправить, нужно в hook_theme() добавить темизацию формы комментариев.

Drupal 7 - Темизация файлового поля (file field)

По-умолчанию функция темизации файлового поля theme_file_link() выводит иконку файла, соответствующую mime типу файла, и ссылку на сам файл. Директория расположения иконок - modules/file/icons. Для добавления расширенной разметки вывода файлового поля нужно добавить следующий код в template.php файл используемой темы:

Добавление классов страницам материалов на основе терминов таксономии

Для темизации страниц материалов на основе прикрепленных терминов таксономии можно добавлять тегу body классы с именами терминов. Если же термины имеют русские(кириллические) символы, то можно делать классы на основе tid терминов. Классы будем добавлять в preprocess_html функции используемой темы. Для получения всех терминов ноды в Drupal 7 нужно написать вспомогательную функцию _MYTHEME_taxonomy_node_get_terms(). В Drupal 6 для выполнения данной задачи есть функция taxonomy_node_get_terms().

Drupal 7 - Удалить все ноды

При создании функционала сайта приходиться генерировать демо контент, который впоследствии нужно удалить, а возможно и не раз. Чтобы быстро выполнить эту операцию, можно воспользоваться небольшим сниппетом. Выполнить этот сниппет можно как вариант с помощью блока "Выполнить PHP код", который создается модулем devel.

Перенести шаблоны 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.

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