Сегодня я продолжаю написание уроков по drupal, как вы наверное заметили, статей не было почти 1.5 месяца, за это прошу вас строго не судить, ибо работа прежде всего, а в последнее время она была изрядно напряжённая. Итак, как вы поняли из названия - речь пойдёт о, возможно, для кого-то новом файле как html.tpl.php. Данный файл так же используется в шаблонах темизации, как и все файлы с расширением .tpl.php.
Для чего же нужен данный файл? Данный файл нужен нам для внесения изменений в <head> страницы. Если вы уже пробовали создавать свои шаблоны для Drupal 7, то наверняка замечали такую особенность, что если даже в файле
page.tpl.php
Не будет ни какого кода, <head> все равно подгрузится. Данный файл является новым и появился лишь в 7й версии drupal, для 6ки <head> мы прописывали в файл
page.tpl.php
К сожалению, встроенный шаблоны в Drupal, не имеют примера данного файла, но я покажу вам, как выглядит данный файл на нашем сайте
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//RU" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <?php print $styles;?> <?php print $scripts;?> <title><?php print $head_title;?></title> </head> <body> <?php print $page_top;?> <?php print $page;?> <?php print $page_bottom;?> </body>

А теперь список доступных переменных файла
- $css - данная переменная содержит массив стилевых таблиц для страницы
- $language – объект, содержащий язык страницы
- $language->language - содержит код языка (ru, en)
- $language->dir – задаёт направление('ltr' - слева на право,'rtl' - справа на лево – для арабских стран)
- $rdf_namespaces - содержит все RDF префиксы документа
- $grddl_profile- GRDDL профиль, позволяющий извлеч RDF данные
- $head_title - заголовок страницы, который используется в теге title
- $head_title_array - ассоциативный массив, содержаший части заголовка страницы
- $head- содержимое тега head (в основном различные мета-теги)
- $styles – подключает все необходимые стилевые таблицы для страницы
- $scripts – подключает все необходимые скрипты для страницы
- $page_top - открывает разметку модулей, изменяющих содержимое страницы. Обязательно должна выводится перед контентом
- $page - содержание страницы (данные подгружаются из файла page.tpl.php)
- $page_bottom- закрывает разметку модулей, изменяющие содержание страницы. Обязательно должна выводится после всего контента
- $classes - строка с CSS классами, которые могут быть использованы для изменения вывода содержания, через CSS
Хочу заметить, что данный файл актуален лишь в тех случаях, когда вам необходимо изменить, что-то кардинально на странице, например если вы решили написать сайт на HTML 5, то данный файл вам просто необходим.
Комментарии (28)
а без этих команд
print $styles;
print $scripts;
можно ли как нибудь прописать стили CSS к шаблону?
link rel="stylesheet" href="style.css"
всё нашел :)
link rel="stylesheet" href="/sites/all/themes/имя_темы/style.css" />
если вы переопределите свой head, и откажитесь от вывода стилей и скриптов
то адекватное подключение стилей и скриптов устанавливаемых вами модулей никто не гарантирует.
спасибо за подсказку
drupal way - добавить в info файл темы строку:
stylesheets[all][] = css/style.css
Если я создал html.tpl.php, то в page.tpl.php нужно вводить или
Боже мой! Извините :) теги хеад или хтмл... вот ,что я имел в виду.
нет не нужно!
Не понимать. Создал файл. Всё записал. Кеш очистил. Нет результата.
а какой результат вы хотите получить?
При такой замене, в теге head и body не выводятся атрибуты. Это очень не удобно особенно если за атрибут class в body цепляетесь через css. Поэтому тут вот правильнее https://gist.github.com/pascalduez/1417914
при какой замене? здесь лишь пример как может выглядеть данный файл. А так список переменных прилагается - творите, что хотите.
Здравствуйте, всегда нахожу что-нибудь полезное на вашем сайте для изучения drupal. Вот столкнулся с проблемой и никак не могу разобраться. Нужно убрать из html все пробелы и переносы строк, сделать всё в одну строку. Пробовал ставить модуль minify, но он проблему не решает. Посмотрел ещё несколько модулей но решение так и не нашёл. Частично проблема решается так.
Заменить в шаблоне html.tpl.php
?php
print $page;
?>
На
$output = str_replace(array("\r\n", "\r"), "\n", $page);
$lines = explode("\n", $output);
$new_lines = array();
foreach ($lines as $i => $line) {
if(!empty($line))
$new_lines[] = trim($line);
}
?>
print implode($new_lines);
?>
Всё работает, но только для массива $page. Как бы сделать чтобы пробелы и переносы вырезались из всех строк и массивов шаблона. Может сможете помочь.
не очень понимаю для чего вы это делаете, но лучше использовать preg_replace, вместо str_replace.
Спасибо за ответ.
Так попросил заказчик. Считает что код должен быть в одну строку. В предыдущем проекте на wordpress у него были явные плюсы от яндекса полсе после использования этого приёма. Между апами был сделать только minify html и позиции поползли. Там это делается модулем W3 Total Cache, а в drupal никак не сделать вот и меня теперь мучает.
Пробовал в template.php применить функцию(theme_process_html) к массиву $vars не помогло.
Может можно в шаблоне html.tpl.php использовать какую-нибудь функцию чтобы все строки и массивы загнать в один массив, а потом из него убрать все пробелы и переносы?
> Данный файл нужен нам для внесения изменений в страницы
И не только, я бы даже сказал, это одна из возможностей.
> К сожалению, встроенный шаблоны в Drupal, не имеют примера данного файла
Берд! Drupal имеет папку modules/system, там все примеры можно найти. Более того - это не примеры, а рабочие фалы. Если тема не имеет файла (html.tpl.php, maintenance-page.tpl.php, page.tpl.php и т.д.), то для вывода используются как раз файлы, находящиеся в modules/system.
Если вы внимательно читали, то здесь упоминается именно шаблоны drupal, которые идут из коробки, а не то где по дефолту забираются данные файлы для формирования страницы.
Скажите, а как можно отредактировать, что выводит переменная $head?
hook_preprocess_html()
А как с помощью hook_preprocess_html() мне удалить (или изменить) вывод favicon?
favicon меняется в настройках темы.
Скажите, можно ли отказаться от rdf и grddl_profile? Т.е. просто вырезать эти переменные из шаблона и doctype указать html. Так ли нужна эта разметка и какие последствия могут быть в связи с указанными действиями? Хочется максимально упростить шаблоны.. не уверен, что мне нужны все эти навороты.
Можно. Если вы не собираетесь использовать rdf разметку, то последствий нет.
RDF разметка дает какое-то принципиальное преимущество? Встречал информацию, что, якобы, в html5 уже не применяется/поддерживается RDF. Так ли это? Или это вообще не связанные вещи?
Вас ломанули что ли? С noreply@drupalfly.ru приходят сообщения с ссылкой на виагру в тексте.
перешлите, письмо если не сложно
Выяснилось, у вас проблема или у меня?