Kniga-Online.club

PC Magazine/RE - Журнал PC Magazine/RE №11/2009

Читать бесплатно PC Magazine/RE - Журнал PC Magazine/RE №11/2009. Жанр: Периодические издания издательство -, год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Назад 1 ... 31 32 33 34 35 Вперед
Перейти на страницу:

    ),

  );

}

Затем модифицируем массив $form["example_text_field"], который создается в функции test_form, добавив в него параметр #theme:

$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',

);

Теперь мы можем объявить функцию theme_example_text_field_theme_function и задать в ней любой HTML-код для отображения выбранного элемента:

function theme_example_text_field_theme_function($element) {

  $class = "";

  if(isset($element["#needs_validation"])) {

    $class = " error";

  }

  $output = '<div id="' . $element["#id"] . '"

    class="form-item"><input id="edit-example-text-field"

     class="form-text' . $class . '" name="' . $element["#name"]

     . '"></div>';

  return $output;

}

Кроме того, эту функцию можно переопределить, не изменяя кода модуля. Для этого в файле template.php, который находится в папке с текущей темой оформления, нужно создать копию этой функции, заменив в ней префикс theme на имя текущей темы.

Если в реализации hook_theme использовать параметр template, например, так:

function название_модуля_theme() {

  return array(

    'example_text_field_theme_function' => array(

      'arguments' => array('form' => NULL),

      'template' => 'example-text-field',

    ),

  );

}

то HTML-код, ответственный за отображение элемента Web-страницы в браузере, можно будет задавать не в исходном тексте функции темизации, а в отдельном файле-шаблоне с соответствующим именем; в нашем примере это example-text-field.tpl.php. Такой подход удобен, если с сайтом должны работать дизайнеры, не имеющие опыта Web-программирования.

Если же возникла необходимость изменить внешний вид всей формы, а не только отдельных ее элементов, нужно проделать то же самое: указать значение параметра #theme формы, объявить в hook_theme функцию темизации и, наконец, реализовать ее. Давайте внесем необходимые изменения в наш код. Функция hook_theme будет выглядеть следующим образом:

function название_модуля_theme() {

  return array(

    'test_form_theme_function' => array(

      'arguments' => array('form' => NULL),

    ),

    'example_text_field_theme_function' => array(

      'arguments' => array('form' => NULL),

    ),

  );

}

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

Проекты

Компания Cognitive Technologies (www.cognitive.ru) объявила о начале опытной эксплуатации системы массового ввода документов Cognitive Forms в компании «Натали Турс». Цель проекта – автоматизация обработки анкет в ходе исследования мнений потребителей о качестве предоставляемых услуг. Главная особенность системы, внедряемой в «Натали Турс», – ее континентальная распределенность: 20 станций сканирования планируется установить в 11 странах. С их помощью анкеты, собранные гидами во время следования туристов в аэропорт, будут переводиться в электронный вид и отправляться в центральный офис компании.

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

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

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

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

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

PC Magazine/RE: http://pcmag.ru/

Примечания

1

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

Назад 1 ... 31 32 33 34 35 Вперед
Перейти на страницу:

PC Magazine/RE читать все книги автора по порядку

PC Magazine/RE - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


Журнал PC Magazine/RE №11/2009 отзывы

Отзывы читателей о книге Журнал PC Magazine/RE №11/2009, автор: PC Magazine/RE. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*