drupal 7

Подключение к другой базе данных в Drupal 7 (2 способа)

Иногда возникает необходимость подключения к другой базе данных для получения из нее выборки данных или же наоборот для записи. При этом база данных может быть как внешней, так и располагаться на одном хосте с файлами друпала и дефолтной базой данных. Эти маневры в Drupal 7 можно выполнить двумя способами: описанием подключения в settings.php или созданием другого подключения в коде кастомного модуля.

Программное удаление всех терминов таксономии из словаря

Для удаления всех терминов из определенного словаря в Drupal 7 недостаточно просто удалить все записи из таблицы taxonomy_term_data с условием по vid нужного словаря. После простого удаления из этой таблицы останутся данные о связях терминов с нодами в денормализованной таблице taxonomy_index и все родительские связи терминов в таблице taxonomy_term_hierarchy. Также термины, связанные с нодами taxonomy term reference полем, останутся в таблицах данных полей. Кроме этого у терминов могут быть и свои поля, которые также хранятся в отдельных таблицах. Для полного удаления отдельного термина в Drupal API имеется функция taxonomy_term_delete($tid). Для удаления всех терминов из словаря, нужно написать функцию, которая будет получать массив всех терминов словаря и в цикле их удалять.

Вставка кода после n-го абзаца или посередине статьи

Иногда возникает необходимость вставки рекламного кода (РСЯ, Адсенс и другие) или же какого-либо другого содержимого(блок, представление) внутрь содержимого статьи. При этом, вероятнее всего, код нужно вставить после определенного абзаца (параграфа) или же посередине статьи. Рассмотрим вставку рекламного кода внутрь содержимого текстового поля body для типа материала Статьи (Articles).

Добавление E-mail поля в форму

При создании своей формы с помощью Form API в Drupal 7 нету возможности добавить элемент типа email в отличие от Drupal 8. Для решения подобной задачи можно использовать элемент типа textfield и ему добавить функцию валидации для проверки на корректность ввода адреса электронной почты. Валидацию можно выполнить функцией ядра друпала valid_email_address().

Объединение нескольких шаблонов views в один

При темизации вьюса иногда бывает необходимость сделать вывод полей для нескольких вьюх одинаковый, при этом не затрагивая шаблоны для других представлений. К примеру для темизации вывода полей в шаблоне views-view-fields.tpl.php для списка необходимых представлений views нам предлагает использовать следующие шаблоны: views-view-fields--new-articles.tpl.php, views-view-fields--top-articles.tpl.php и views-view-fields--related-articles.tpl.php для представлений с соответствующими именами - new_articles, top_articles и related_articles.

Уменьшение количества css и javascript файлов при агрегации в Drupal 7

В друпал 7 при включении агрегации для css и javascript файлов образуется сразу по несколько css и javascript файлов. Это происходит потому, что файлы разделяются на группы. Css файлы имеют три группы : CSS_SYSTEM, CSS_DEFAULT и CSS_THEME. Javascript файлы также делятся на три группы : JS_LIBRARY, JS_DEFAULT и JS_THEME. Это нужно для того, чтобы вначале подключались все системные файлы, потом все файлы модулей и затем файлы, подключаемые в теме.

Выносим хуки за пределы файла .module

В некоторых модулях накапливается большое количество имплементаций хуков, из-за чего файл .module очень разрастается. В результате поиск нужного куска кода в файле усложняется. Чтобы разрулить данную ситуацию, на помощь приходит hook_hook_info, который позволяет разнести имплементации хуков по разным файлам и при необходимости сгруппировать их.

Вставка кода внутрь представления

Порой бывает необходимость вставить какой-либо код внутрь представления. Это может быть код от РСЯ, Адсенса или же просто нужно внутри отрендерить ноду, блок, вьюс и так далее. Самый элементарный способ сделать подобное, это вывести нужный код внутри шаблона представления.

Программное изменение стилей изображения во views

При выводе вьюсом полей изображений в настройках поля можно установить стиль изображения, который будет применяться к этому полю при выводе. Но если есть необходимость выводить множественное поле с разными стилями (к примеру первое изображение выводить со стилем "big", а последующие - со стилем "small"), то придется стили менять программно. Для этого нужно воспользоваться hook_views_pre_render(), который вызывается когда результаты представления уже готовы , но еще не отрендерились.

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

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