Синонимы урлов материалов на основе иерархии терминов таксономии

Зачастую возникает необходимость создания алиасов путей материалов с помощью pathauto на основе иерархии терминов таксономии, прикрепленных к материалу с помощью поля taxonomy term reference. Для добавления таких алиасов понадобится модуль Entity API и его подмодуль Entity token. Для примера рассмотрим интернет магазин, продающий мужскую и женскую одежду и обувь.

Добавление дополнительной разметки для RSS в Drupal 7

В Drupal 7 вывод для RSS ленты настраивается на странице редактирования типа материала во вкладке "Управление отображением" - "RSS". В этой вкладке можно определить порядок вывода полей материала для rss view mode. Если же нужно добавить к RSS ленте какую-нибудь дополнительную html разметку, то можно воспользоваться hook_node_view. Для этого нужно добавить рендерный элемент в массив $node->content.

Подключение к другой базе данных в 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).

Кастомизация autocomplete виджета

В taxonomy term reference поле есть виджет autocomplete, который использует Autocomplete jQuery UI и показывает имена уже существующих терминов при вводе желаемого имени термина. Но в некоторых случаях требуется выводить не только имя термина, но и некоторые другие данные о термине таксономии (к примеру, количество нод связанных с термином или описание термина). Подобный расширенный вывод автокомплита можно наблюдать на сайте stackexchange.com при добавлении тегов к новому вопросу.

Добавление 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. Это нужно для того, чтобы вначале подключались все системные файлы, потом все файлы модулей и затем файлы, подключаемые в теме.

Google Docs Viewer для просмотра документов

Для просмотра документов (pdf, docx, xlsx, pptx) на страницах сайта можно использовать embedded Google Docs Viewer. Для Drupal 7 есть модуль Embedded Google Docs Viewer, который добавляет форматтер для полей типа file. Для работы модуля обязательным условием является публичная(public) система хранения файлов. После установки модуль позволяет просматривать файлы документов на страницах материалов, к которому приаттачено поле с файлом.