);

}

Исходный текст обновленной функции test_form приводится в листинге 6.

Листинг 6

function test_form($form_state) {

  $form['#theme'] = 'test_form_theme_function';

  $form['example_text_field'] = array(

    '#type' => 'textfield',

    '#title' => 'Example text field',

    '#description' => 'Text must contain more then

      3 symbols',

    '#theme' => 'example_text_field_theme_function',//*/

  );

  $options = array(

    0 => 'zero',

    1 => 'one',

    2 => 'two',

  );

  $form['example_select'] = array(

    '#type' => 'select',

    '#title' => 'Example select list',

    '#options' => $options,

    '#description' => t('You can select only value 'one'

      in this form'),

  );

  $form['submit'] = array(

    '#type' => 'submit',

    '#value' => t('Submit'),

  );

  $form['#validate'] = array('test_validate_first',

    'test_validate_second');

  $form['#submit'] = array('test_submit_first',

    'test_submit_second');

  return $form;

}

Также нам потребуется и сама функция темизации формы. Определим ее:

function theme_test_form_theme_function($form) {

  $output = 'Some additional text';

  // Выводим некоторые элменты отдельно с дополнительным

  // форматированием

  $output .= '<div style='background-color: #ccc; padding:

    3px;'>';

  $output .= drupal_render($form['example_text_field']);

  $output .= '</div>';

  // Выводим остальные элементы, которые не были выведены

  // ранее

  $output .= drupal_render($form);

  return $output;

}

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

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

Новости. С 15 по 15

Компьютеры

Компания Dell (www.dell.ru) объявила о выпуске пяти игровых систем под маркой Alienware. Модель Alienware M15x – «самый мощный игровой ноутбук во Вселенной» – выполнен в оригинальном дизайне Alienware, оснащен мобильным процессором Core i7 и графическим процессором NVIDIA GeForce GTX 260M. Ориентировочная цена – 84 990 руб. Alienware Aurora и Aurora ALX – мощные настольные системы форм-фактора MicroATX с процессорами Intel Core i7 (включая модификации Extreme Edition, разогнанные до 3,6 ГГц). Цена в базовой конфигурации – 79 990 руб. Системы Alienware Area-51 и Area-51 ALX разработаны для геймеров-экстремалов и энтузиастов, оснащаются процессорами Intel Core i7, графическими адаптерами с NVIDIA GeForce GTX 295, ОЗУ емкостью до 12 Гбайт. В корпусах предусматриваются шесть легко доступных «бескабельных» отсеков для жестких дисков и возможность организации массивов RAID 0, RAID 1 и RAID 10.

Ноутбуки

Компания ASUS (www.asus.ru) заверяет, что длительное использование аккумуляторной батареи, изготовленной независимым партнером в 2007 г., может представлять опасность лишь в редких случаях. Чтобы гарантировать пользователям своей продукции безопасную работу, компания по своей инициативе объявляет о программе бесплатной замены всех дефектных батарей. Эта программа применяется исключительно к батареям, изготовленным в 2007 г. независимым производителем и входящим в комплект поставки ноутбуков ASUS PRO52 и X51. Батареи, попавшие в список, приведенный в данной программе, будут заменены всем пользователям ноутбуков,

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату
×