- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Журнал PC Magazine/RE №11/2009 - PC Magazine/RE
Шрифт:
Интервал:
Закладка:
),
);
}
Затем модифицируем массив $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.
Листинг 6function 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
Здесь и далее цены указаны для справки.

