Читать «Журнал PC Magazine/RE №11/2009» онлайн - страница 100

PC Magazine/RE

Как и с любой другой функцией темизации, ее содержимое можно вынести во внешний шаблон.

Ну а теперь осталось научиться модифицировать из внешнего модуля существующую форму. Для решения этой задачи нужно воспользоваться одним из двух хуков: или hook_form_alter, через который проходят массивы всех обрабатываемых форм и в котором каждый массив можно отредактировать, или hook_form_form_id_alter, где form_id должен быть заменен на идентификатор нужной формы. Через этот хук проходит только выбранная форма. На вход оба этих хука получают массив формы (в нашем примере это массив, который генерируется функцией test_form), и в этот массив могут быть добавлены или из него могут быть удалены любые параметры: #theme, #prefix, #suffix, #submit, #validate и другие.

Для примера добавим к форме контейнер, который может содержать в себе несколько полей. Переместим в него два поля и сменим заголовок одного из них:

function название_модуля_form_test_form_alter(&$form,

    &$form_state) {

  $form["example_text_field"]["#title"] = "New title";

  $form["example_add_field"] = array(

    '#type' => 'fieldset',

    '#title' => 'new fieldset',

    '#collapsible' => TRUE,

    '#collapsed' => FALSE,

    '#weight' => 0,

  );

  foreach ($form as $name => $element) {

    if($element["#type"] == "select" || $element["#type"] ==

        "textfield") {

      $form["example_add_field"][$name] = $element;

      unset($form[$name]);

    }

  }

  $form["submit"]["#weight"] = 5;

}

Вот и все. В этой статье я рассказал об основных принципах темизации Drupal, более подробную информацию вы можете найти в документации.

Читайте в следующих номерах

Подарки: Советы Деду Морозу

Инфраструктура: Корпоративные ИТ уходят в облака

Сводный тест: Тестирование системных плат

Операционные системы: Встречаем Windows 7

Примечания

1

Здесь и далее цены указаны для справки.