Самые основы ! Шаблонизация мозга !

Главные вкладки

Аватар пользователя morgusha morgusha 14 января 2014 в 17:27

Всем привет ! Подскажите пожалуйста хочу с нуля сам сделать тему для сайта!
Пока сделал только файл team.info

name = Easy
description = Easy theme with fixed width, two columns
core = 7.x
stylesheets[all][] = css/style.css

regions[content] = Content
regions[sidebar_first] = Sidebar First
regions[footer] = Footer
regions[pre_footer] = Pre footer

и page.tpl.php и вот запутался совсем по какому принципу верно будет делать ?

<div id="page_wrapper">
        <header id="header" > <!-- Шапка сайта -->
                <?php if ($site_name || $site_slogan || $logo): ?>
                 <!-- если задано имя сайта, слоган или лого выводим блок заголовков -->
                        <hgroup>
                <?php if ($logo): ?> <!-- Если задан логотип - выводим логотип -->
                     <a title="<?php print t('Home'); ?>" rel="home" href="<?php print $front_page; ?>">
                     <img src="<?php print $logo; ?>" alt="<?php print t('Home'); ?>"/></a>
                <?php endif; ?>
                <?php if ($site_name): ?> <!-- Если заданно имя сайта - выводим -->
                     <h1><a title="<?php print t('Home'); ?>" rel="home" href="<?php print $front_page; ?>">
                                     <?php print $site_name; ?></a></h1>
                <?php endif; ?>
                <?php if ($site_slogan): ?> <!-- Если задан слоган сайта - выводим -->
                     <h2><?php print $site_slogan; ?></h2>
                <?php endif; ?>
                </hgroup>
        <?php endif; ?>
        </header>
        <aside id="left_column"> <!-- Левая колонка  c регионом  sidebar_first -->
                  <?php print render($page['sidebar_first']); ?>
        </aside>
        <div id="article_wrapper" > <!--Правая колонка-->
        <?php print $breadcrumb; /* Выводим "Выводим "хлебне крошки" */ ?>
        <?php print $messages; /* Выводим сообщения системы */ ?>
          <!-- Заголовок с суффиксом и преффиксом -->
        <?php print render($title_suffix); ?>
        <?php if($title): ?> <h1><?php print $title; ?></h1><?php endif; ?>
        <?php print render($title_suffix); ?>
        <?php print render($tabs); /* Выводим табы */ ?>
        <?php print render($page['content']); /* Выводим регион "контент" */ ?>
        </div>

         ВОТ ТАК ВОТ ВЫВЕЛ ЕЩЁ ОДИН СВОЙ РЕГИОН ОПИСАННЫЙ В INFO ФАЙЛЕ ВЕРНО ЛИ ТАК ДЕЛАТЬ ИЛИ НЕТ ?
 
        <div id="und_footer"><?php print render($page['pre_footer']); ?></div>

        <footer> <!-- подвал сайта с регионом footer -->
         <?php print render($page['footer']); ?>
        </footer>
</div>

ВОРПОС ЗАДАН В КОДЕ ПО ПОВОДУ ВЫВОДА РЕГИОНА ! По какому принципу верно выводить регионы ? Как вывести регион в который можно вставить несколько блоков в которые потом можно быдет вставить контент в админке ???
спасибо !

Комментарии

Аватар пользователя adubovskoy adubovskoy 14 января 2014 в 18:36

"ХулиGUN" wrote:
Да... и для всех остальных регионов так же)))
Хотя правильней будет и html в условие помещать

чорд, div'ы порезались. ) tnx

2топикстартер: это имеется в виду

<?php if ($page['pre_footer']): ?>
<div id="und_footer"><?php print render($page['pre_footer']); ?></div>
<?php endif; ?>
Аватар пользователя morgusha morgusha 14 января 2014 в 18:44

ребят не могу понять !
вывелась область для вставки контента всё отлично !
Нужно ещё одну область вывести для контента.
делал так вот думал АВОСЬ
ну соотв в инфо файле добавил
regions[content1] = Content1

<div id="und_footer"><?php print render($page['ppp_footer']); ?>
                 <?php print render($page['content1']); /* Выводим регион "контент1" */ ?>
                </div>

в итоге получается что дублируется content и content1
как делать вывод разного контента в разных регионах ! ? ?

Аватар пользователя morgusha morgusha 14 января 2014 в 19:54

как я понимаю регион делается для тех частей сайта в которые надо будет часто выводить разную информацию.
Так вот ! Надо сделать 2 контентные области на главной странице. Одну - понятно, сделать можно выводом метки content (это как я понял зарезервированная переменная специально под контент ) и в админ панели у этой области появится ссылка "ДОБАВИТЬ Материал" ! А как сделать вторую контентную область ??? Как определить метку и что бы друпал понял, что она будет отвечать за контент ???

Аватар пользователя morgusha morgusha 14 января 2014 в 20:26

в джумле и вам шопе делал и норм справился. зачем осуждать ? Мне всё равно НАДО это сделать !
Вопрос остался открытым...как прописывать больше чем одну контентную область ?
вот ссылка на страничку )
http://drupal.metko.ru/
как <div id="und_footer"> сделать контентным ???

Аватар пользователя toshic toshic 15 января 2014 в 2:16

morgusha wrote:
в джумле и вам шопе делал и норм справился. зачем осуждать ? Мне всё равно НАДО это сделать !
Вопрос остался открытым...как прописывать больше чем одну контентную область ?
вот ссылка на страничку )
http://drupal.metko.ru/
как <div id="und_footer"> сделать контентным ???

На своем сайте пройди по пути http://твое доменное имя/admin/structure/block/

Аватар пользователя ttenz ttenz 15 января 2014 в 7:23

Моргоша, прежде чем браться за такое дело, неплохо почитать как другие делают, тогда будет намного проще, друпал это вообще не джумла, здесь всё намного сложнее (поначалу):

# автор не известен, коротко, но неплохо:

https://docs.google.com/document/d/1qQ1lYLkuFbOGV5D17jD_2aIlVyU9yfZRpU2D...

# с видео:

http://drupalfly.ru/lesson/mask_generation_drupal_7_1

# c цветными картинками, интересно читается:

http://www.master-web.info/sozdanie-temy-dlya-drupal-7-iz-psd/

http://www.master-web.info/sozdanie-temy-dlya-drupal-7-iz-psd-part-2/

Для внеклассного чтения:

Стандартные переменные page.tpl.php в Drupal 7

Разработка тем

Аватар пользователя marazmus marazmus 15 января 2014 в 20:00

Для начала неплохо было бы определиться с терминами.

Регион - это место в шаблоне, куда потом через админку можно запихать блок.

Блок - это кусок текста, HTML или даже PHP-кода, который можно запихать в регион через админку. Блок можно формировать вручную в админке, также его могут формировать модули (например, модули menu, views).

Еще раз. Регион - это определенное место в HTML. Редактируется в коде шаблона. Блок - это кусок содержимого, который можно запихать в регион. Редактируется через админку или формируется модулями. Граничные и спецслучаи в данное определение не входят.

Аватар пользователя marazmus marazmus 15 января 2014 в 20:02

"morgusha" wrote:
А регион head ничем ни отличается от других по функционалу ?

В силу вышесказанного мной - ничем не отличается. Это просто тупо место в шаблоне, которым вы сигнализируете Друпалу - "эй, сюда можно запихать блок! выведи это место в списке регионов в админке, чтобы я как белый человек мог мышкой передвинуть нужный блок в этот регион!"

Аватар пользователя morgusha morgusha 16 января 2014 в 16:50

всё ПОНЯЛ !
вопрос по теме )
сделал блок в нём прописал так вот
<div id="opa" style="width:166px; height:56px;"></div>
в css этому id задал фон итд
вот не могу понять ! просто если писать
<div id="opa"></div>
то в таком случаи не появляется в данном регионе этот id ! если с размерами то появляется !
если писать так вот :
<div id="opa" style="width:166px; height:56px;"><a href="/"><img scr="/mmm/logo.png"/></a></div>
то картинка тоже не появляется!
<div id="opa" style="width:166px; height:56px;"></div>
то вот так вот появляется блок с размерами и через css можно вставить картинку!
а как будет верно то ? )

Аватар пользователя toshic toshic 17 января 2014 в 23:29

Это для темизации. Если ты, например, добавил свой тип контента и хочешь в нем что то скрыть или что то вывести программно, то создаешь для этого типа материала свой шаблон ноды в своей теме и все пишешь в нем. Это не затронет другие типы материалов. По умолчанию на все типы материалов, которые ты создашь, будь то статья, запись в блоге, тема форума или объявление, будет распространяться дефолтный шаблон ноды и если ты что то в нем изменишь, то это изменение затронет все типы материалов. Кому то проще для этих целей пользоваться модулями Panels или DS