Здравствуйте!
Я сделал по уроку свою тему (шаблон) для друпала. После некоторых заморочек, с дизайном все стало ок - все в друпале выглядит также, как и было в простом html.
В шапке выводится логотип с помощью ?php print $logo; (хоть легче было просто картинкой вставить, но так правильнее, мне кажется)
Под шапкой выводится меню как ?php print $primary_nav;
Под меню же я сделал трехклоночный макет, и под ним - два подвала.
первая колонка: ?php print render($page['content']);
вторая колонка: ?php print render($page['sidebar_first']);
третья колонка: ?php print render($page['content_right']);
первый подвал: ?php print render($page['content_bottom']);
наконец, последний: ?php print render($page['footer']);
По идее, все должно было быть хорошо. Я создал пару материалов типа "статья", добавил в них новости и их анонсы стали показываться в первой колонке, как и должны были.
Во второй колонке показывается поле авторизации, а после входа - поле поиска.
Однако, дальше вот стало непонятно. Мне бы хотелось, чтобы в этих трех колонках и подвале отображались разные материалы - в первой - анонсы новостей, во второй - анонсы статей, в третьей - объявления, а в первом подвале - ряд видео из ютуба.
Вот это и стало проблемой. Дело в том, что все новые материалы, которые я добавляю, появляются в левой колонке. Хуже того, если их раскрыть, они раскрываются в этой левой колонке, а все остальные части сайта остаются пустыми..
Как же задать так, чтобы определенные материалы выводились в определенных регионах?
Подумав, я создал новый тип материала и назвал его "видеозаписи". Потом создал материал этого типа и вставил туда код видео из ютуба. Однако, это видео также отобразилось в левой колонке, а не, как я хотел, в первом подвале.. Я пробовал редактировать этот материал, думая, что там можно задать, в каком регионе его выводить.
Однако, в окне правки материала доступны только галочки "добавить пункт меню", опубликовать" и "вывести на главную" - но даже близко нет такого, например "отображать этот материал в регионе content_bottom"..
А где же тогда это можно задать?
Подскажите, пожалуйста!
А то у меня сначала вроде все пошло хорошо, думал до НГ сайт сделать, а потом вот этот ступор и уже неделю топчусь на одном месте и не понимаю, куда дальше двигаться..
Комментарии
спасибо! да, этот views действительно помогает, буду разбираться.
и тогда такой еще вопрос, если можно - а с помощью этого вьювс можно ли задать, какие регионы отображать, а какие нет на определенной странице?
например, если взять тот шаблон, который я описал выше, то чтобы при открытии всего списка новостей, или отдельной новости, она открывалась в регионе $page['content'], а другие два региона при этом исчезали? то есть чтобы макет становился не трехколоночным, а в одну колонку во всю ширину сайта?
а то я вот тут http://www.drupal.ru/node/42659 описывал, как пытался сделать это с помощью дополнительного шаблона page-taxonomy-term-1.tpl.php , но там возникла такая загвоздка, которую никакие специалисты не смогли разрешить..
Это не совсем то.. там просто можно настроить, показывать или нет на определенной странице определенные блоки, даже информацию в блоках.
а количество регионов от этого не меняется, показывается в нем блок или нет. и верстка, как была трехколоночной, так и остается.
а нужно, чтобы другая страница имела другую верстку, чтобы было как первая картинка (присоединена), а при переходе в sait.ru/taxonomy/term/1 становилась как вторая
ох, даже так.. действительно, регионы у меня Не через условия заданы.. я и не подумал, что их через условия нужно задавать. это то есть вот так?:
<?php if ($page['content_right']): ?>
<?php print render($page['content_right']); ?>
<?php endif; ?>
но ведь каждый регион находится в своем диве, у которого жестко задана ширина в процентах. Чтобы ширина колонок не менялась в зависимости от ширины текста в ней..
спасибо, но я вот недавно совсем в php начал работать, для меня "добавить дивы в условие" пока в новинку звучит..
посмотрите пожалуйста, правильно ли я вас понял и будет ли работать такой код?
<?php if ($page['content'] and $page['sidebar_first'] and $page['content_right'] ) { ?>
<div id="leftcol">
<?php print render($page['sidebar_first']); ?>
</div>
<div id="centcol">
<?php print render($page['content']); ?>
</div>
<div id="rightcol">
<?php print render($page['content_right']); ?>
</div>
<div id="clearfix"> </div>
<?php } else { ?>
<div id="allcol">
<?php print render($page['content']); ?>
</div>
<?php } ?>
css:
width: 30%;
float: left;
}
#centcol {
width: 40%;
float: left;
}
#rigtcol {
width: 30%;
float: left;
}
#allcol {
width: 100%;
}
а если что-то не так, то где могла скрыться ошибка?
то есть вместо открывающей и закрывающей скобки { } нужно поставить двоеточие : и endif; ?
а с else тогда как быть? как-то вот так:
вместо
<?php } else { ?>
написать<?php endif; else: ?>
?легко сказать "учите матчасть", но трудно сделать.. учитывая, что я друпал начал осваивать только 2-3 месяца назад, а конкретно язык php - и того меньше, всего где-то месяц назад. (когда понял, что сделать что-то нестандартное без знания пхп на друпале не получиться). сейчас только дочитываю введение с сайта http://php.su/php/intro/
но это не значит, что я только 2 месяца назад только пришел в web. до этого я уже несколько лет делал сайты, рисовал в фотошопе и сверстывал в чистом html и css. делал небольшие сайты, по 5-15 страниц, для каждой страницы создавал отдельный html файл, а css был для всех один.
и, если делать на чистом html, то сделать для разных страниц разные шаблоны - проще простого. они все равно отдельными файлами.
а к друпалу пришел, тк он дает больше возможностей, у него есть админка, через которую проще создавать контент, чем лезть в html код, тем более человеку, не знакомому с хтмл.
а тут оказывается, что уже почти месяц на нем не могу решить элементарной задачи - чтобы все новости были на всю ширину, имели другой дизайн, чем главная.
не знаю, может все же проще задать отдельный шаблон для этой страницы, как я тут http://www.drupal.ru/node/42659 пытался.
правда, как там можно увидеть, это у меня тоже не получилось и никто так и не ответил, почему. то ли все-таки нельзя задать шаблон вида page-taxonomy-term-1.tpl.php , то ли надо как-то по-другому его назвать.
ХулиGUN, спасибо еще раз!
сделал, как вы написали:
<?php if($page['content_left']):?>
<div id="leftcol1">
<?php print render($page['content_left']); ?>
</div>
<?php endif; ?>
<?php if($page['content']):?>
<div id="maintext1">
<?php print render($page['content']); ?>
<?php print render($page['sidebar_first']); ?>
</div>
<?php endif; ?>
<?php if($page['content_right']):?>
<div id="rightcol1">
<?php print render($page['content_right']); ?>
</div>
<?php endif; ?>
на главной теперь 3 колонки, как и хотелось, как, в принципе и было без условий, но все равно приятно.
однако, при открытии какой-нибудь отдельной новости site.ru/node/1, или всех site.ru/taxonomy/term/1 она вроде бы открывается во всю ширину, как и хотелось. но, почему-то другие два блока тоже остаются и при этом перестает действовать float. То есть, у меня получается такой столбик - анонсы новостей в шириной 30%, под ним - раскрытая во всю ширину первая новость, а под ней - анонсы объявлений с шириной 30%
я прикрепил картинку для наглядности.
скажите, пожалуйста - это я снова что-то "наколхозил" в шаблоне, или теперь нужно что-то в админке настроить?