Главная » Drupal » Статьи Drupal » Drupal формы и пара хуков для их изменения
Распечатать статью

Drupal формы и пара хуков для их изменения

Итак, рассмотрим буквально два простых конкретных примера работы с формами на Drupal 7. Поехали.

Example 1. Добавим в «register form» поле-галочку вида «Я прочёл условия регистрации и т.п.». Пусть данное поле будет обязательным для заполнения. Использую hook_form_FORM_ID_alter.

<?php
function MyRegForm_form_user_register_form_alter(&$form, &$form_state, $form_id) {

  $form['terms_of_use'] = array(
    '#type' => 'checkbox', // галочка
    '#title' => "Я ознакомлен(а) с правилами вашего сайта.", // заголовок
    '#required' => TRUE, // попробуй не заполнить...
  );
  // титл кнопки тоже поменяю, чисто для демонстрации
  $form['actions']['submit']['#value'] = 'Готово!';
}
?>

Как использовать: пишите function ИмяМоегоМодуля_form_ИдентификаторФормы_alter(&$form, &$form_state, $form_id) { … }.

Example 2. Далее приведу второй более «универсальный» способ с гораздо более широкой областью действия, так сказать: через hook_form_alter. Припишу свой CSS-класс к form, к примеру для темизации.

<?php
function MyContact_form_alter(&$form, &$form_state, $form_id) {
  // здесь уже приходится проверять, является ли наша форма контактной по ID
  if ($form_id == 'contact_site_form') : 
    $form['actions']['submit']['#value'] = "Отправить письмо"; // опять кнопочка
    $form['#attributes']['class'][] ='BlaBlaBla'; // здесь добавим свой CSS-класс для «контактов»
  endif;
}
?>

Как использовать: пишите function МойМодуль_form_alter(&$form, &$form_state, $form_id) { … }. Написанное актуально для поставляемого с Drupal 7 по умолчанию модуля Contact. По аналогии нетрудно проделать подобное и c другими элементами.

Разумеется под «нетрудно» я подразумеваю случай, когда у вас имеется хоть какая-то базовая подготовка по программированию, знания API. Хвастунов-пустословов «все легко, все смогу, делается за пять минут» видали думаю все предостаточно.

В завершение ещё раз отмечу, что все вышеприведенные функции лучше оформлять отдельным модулем, аля супер-мега-крутое расширение. А если серьезно, то так будет правильней и удобней (задаток на упреждение будущих несуразиц при расширении проекта и пр.) в плане отделения внешнего вида/«скина-шкурки» от функционала сайта.

Источник:  sooource.net

Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

Оставить комментарий

Похожие статьи