drupal 7

Изменяем отображение views в зависимости от его количества результатов

Переопределить настройки отображения модулем views результатов выборки можно используя hook_views_pre_render.
Он вызывается после формирования вьюсом запроса к базе данных , но перед тем как результаты отрендерились.

Рассмотрим пример представления, которое выводит ноды с помощью формата строк (row plugin) "Готовая к выводу сущность".

Расширяем .gitignore файл для друпал 7

Стандартный файл .gitignore, который находится в корневом каталоге друпал 7, игнорирует только каталоги files и private , в которых хранятся файлы, и файлы settings*.php.

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

Использование регулярных выражений для #states в Form API

В друпал 7 в Form API появилось новое свойство #states. Оно делает возможным изменять состоянии элементов форм (unchecked, visible, enabled и т.д.) в зависимости от состояния других элементов.

Это позволяет обходится без написания кастомного javascript кода. Можно в зависимости от конкретного значения поля изменить состояние другого. Но #states не умеет работать с регулярными выражениями.

С помощью небольшого js файла сделаем возможность в качестве значения поля выбирать regex.

Отмена валидации для ajax сабмита

При добавлении ajax для submit кнопки формы , после нажатия на нее выполняется submit и validation функции . При этом потребуется вводить все обязательные поля во избежании появления ошибок .Для тестирования ajax функционала на время разработки можно временно убрать выполнение валидации. Для этого достаточно в параметр #limit_validation_errors записать пустой массив . Также пустой массив запишем и в параметр #submit:

Очищаем данные полей из удаляемого сообщения (Private Message)

По умолчанию данные полей , ассоциируемые с приватными сообщениями , сохраняются в базе данных и после удаления самого сообщения.

Если есть необходимость удалить эти данные (включая и прикрепленные файлы ) , нужно имплементировать hook_privatemsg_message_flush() ,
которому в качестве входного параметра передается объект удаляемого сообщения.

Перенос поля из ноды в боковую панель

Чтобы перенести поле , которое выводится на странице с нодой , в боковую панель (сайдбар), можно воспользоваться hook_page_alter . Именно в нем мы получаем доступ к уже полностью сформированному рендерному массиву страницы.