Конвертим тему из Drupal 6 в семерку. Что новенького?
Прислано: restyler
вс, 21/02/2010 - 14:06
этот пост - копипаст с моего блога sidashin.ru
Этот пост посвящен нескольким интересным моментам конвертации темы из Друпал 6 в Друпал 7. Как же это сделать наименее безболезненно? Итак:
http://drupal.org/node/550722 - Drupal7 theme guide. На момент написания этого поста - пустая страничка. Ну, не очень то и хотелось :)
http://drupal.org/update/theme/6/7 - конвертим темы из D6 в D7
Вскрытие D7 темы - Garland
Первое, что бросается в глаза - все вызовы типа
<?php echo $tabs; ?>
превратились в
<?php echo render($tabs); ?>
Что это значит? Это значит, что прямо в теме, в последнюю секунду перед выводом сайта, можно быстро и без плясок с бубном наложить изменения на большую часть данных.
<?php unset($tabs[1]); //скрыли таб 'edit' на ноде ?>
Жалко, что многие элементы в темплейт попадают уже отрендеренными, и теперь надо помнить, что $breadcrumb, $title, $primary_nav надо выводить через print, а $tabs и все регионы - через print render();
Финт ушами - hide()
Вспомним, как в D6 удобнее и быстрее всего рендерить содержимое ноды.
<?php print $content?>
При малейших необходимых изменениях в выводе, например если какой-то элемент в $content нам на сайте показывать не нужно, обычно все скатывалось к работе с объектом $node:
<?php print $node->content['body']['#value'] ?>
<?php echo $node -> field_delivery[0]['safe'];?>
Что нам предлагают в D7?
Вот иллюстрация:
<div class="content"> <?php // Скрываем комменты и линки, рендерим $content, а комменты и линки - потом, ниже. hide($content['comments']); hide($content['links']); print render($content); ?> </div> <?php print render($content['links']); ?> <?php print render($content['comments']); ?>.
посмотрим, будет ли это удобно в реальном использовании.
Больше блоков!
Ох, вот это мне по душе. Теперь нет переменной $mission, теперь нет переменной $footer_message, теперь нет переменной $search_box. Хочешь миссию сайта вывести - есть регион highlight, суем туда блок с миссией. Хочешь поисковую форму - суем в любой регион поиск.
Теперь контент страницы - тоже, блок! И выводится он по умолчанию в регион content (который является обязательным регионом для всех тем). И можно теперь вывод главной страницы засунуть в левую колонку, а можно в регион content сверху и снизу насовать разных блоков. Гибко, единообразно.
Появилось понятие "скрытых регионов". Они определяются в .info файле темы через regions_hidden[] = и не показываются на странице блоков в админке - но могут использоваться модулями для вывода какой-то информации. Пока полезность под вопросом, надо пробовать.
остальные изменения (которых 32 штуки всего) - можно посмотреть здесь: http://drupal.org/update/theme/6/7
upd: русский перевод всех изменений от adubovskoy: http://www.drupal.ru/node/37603
- restyler's blog
- Для комментирования войдите или зарегистрируйтесь
Очень любопытно :-) Судя по обзору, в новом релизе D7 все становится более логично и единообразно. Это радует.
Спасибо, restyler.
- Для комментирования войдите или зарегистрируйтесь
http://www.drupal.ru/node/37603 - я делал полный перевод с д.орг три месяца назад, можете ознакомиться :)
- Для комментирования войдите или зарегистрируйтесь
парни, спасибо за обзоры интересно почитать
- Для комментирования войдите или зарегистрируйтесь
Ох, вот это мне по душе. Теперь нет переменной $mission, теперь нет переменной $footer_message, теперь нет переменной $search_box. Хочешь миссию сайта вывести - есть регион highlight, суем туда блок с миссией. Хочешь поисковую форму - суем в любой регион поиск.
- это политика Drupal. C каждой новой версией, превращать его все больше в конструктор, и все меньше заточенного под что-то функционала. Еще бы вместо таксономии Node Reference сделали и все. Хотя это уже оффтоп.
И еще оффтопа, сейчас не рано ли поднимать личный блог на семерке, с какими проблемами сталкивался?
- Для комментирования войдите или зарегистрируйтесь
простенький можно =)
тему найти рабочую трудно, а так - минимум функционала работает
- Для комментирования войдите или зарегистрируйтесь
И еще оффтопа, сейчас не рано ли поднимать личный блог на семерке, с какими проблемами сталкивался?
а пре-альфе лично я сталкивался со многими серьезными багами, начиная от огромных полотен сообщений об ошибках, кончая неработающими линками прямо в админ секции, и никому бы не посоветовал использовать такое для каких-то целей кроме тестирования и изучения.
на альфе2 - личный блог - думается уже можно попробовать, но будут определенные проблемы с доп модулями.
- Для комментирования войдите или зарегистрируйтесь
adubovskoy поправьте у себя меню .tpl-topnav ul.menu {left:550px; ...} (примерно)
- Для комментирования войдите или зарегистрируйтесь
http://www.drupal.ru/node/37603 - я делал полный перевод с д.орг три месяца назад, можете ознакомиться :)
добавил в свой текст, спасибо!
- Для комментирования войдите или зарегистрируйтесь
поправьте у себя меню .tpl-topnav ul.menu {left:550px; ...} (примерно)
вообще мы его просто с небольшим отступом от лого сделали, а вам, как я понял, больше нравится выравнивание по правому краю (что в общем логично и правильно). За рекомендации спасибо - присмотрюсь как лучше, подправлю возможно.
- Для комментирования войдите или зарегистрируйтесь
спасибо за обзор!
- Для комментирования войдите или зарегистрируйтесь
вообще мы его просто с небольшим отступом от лого сделали, а вам, как я понял, больше нравится выравнивание по правому краю (что в общем логично и правильно). За рекомендации спасибо - присмотрюсь как лучше, подправлю возможно.
посмотрите в chrome4, наползает
- Для комментирования войдите или зарегистрируйтесь
посмотрите в chrome4, наползает
а. теперь понял. спасибо огромное вам и PVasili!, подправим...
- Для комментирования войдите или зарегистрируйтесь
спасибо. Будет актуально при переводе на 7-ку
- Для комментирования войдите или зарегистрируйтесь
Полезно, в закладки :)
- Для комментирования войдите или зарегистрируйтесь








Комментарии