Вывод материала в определенный регион

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

Аватар пользователя dangler dangler 26 декабря 2011 в 17:26

Здравствуйте!

Я сделал по уроку свою тему (шаблон) для друпала. После некоторых заморочек, с дизайном все стало ок - все в друпале выглядит также, как и было в простом 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"..

А где же тогда это можно задать?
Подскажите, пожалуйста!
А то у меня сначала вроде все пошло хорошо, думал до НГ сайт сделать, а потом вот этот ступор и уже неделю топчусь на одном месте и не понимаю, куда дальше двигаться..

Комментарии

Аватар пользователя dangler dangler 27 декабря 2011 в 11:12

спасибо! да, этот views действительно помогает, буду разбираться.

и тогда такой еще вопрос, если можно - а с помощью этого вьювс можно ли задать, какие регионы отображать, а какие нет на определенной странице?
например, если взять тот шаблон, который я описал выше, то чтобы при открытии всего списка новостей, или отдельной новости, она открывалась в регионе $page['content'], а другие два региона при этом исчезали? то есть чтобы макет становился не трехколоночным, а в одну колонку во всю ширину сайта?

а то я вот тут http://www.drupal.ru/node/42659 описывал, как пытался сделать это с помощью дополнительного шаблона page-taxonomy-term-1.tpl.php , но там возникла такая загвоздка, которую никакие специалисты не смогли разрешить..

Аватар пользователя dangler dangler 10 ноября 2015 в 11:47

Это не совсем то.. там просто можно настроить, показывать или нет на определенной странице определенные блоки, даже информацию в блоках.

а количество регионов от этого не меняется, показывается в нем блок или нет. и верстка, как была трехколоночной, так и остается.

а нужно, чтобы другая страница имела другую верстку, чтобы было как первая картинка (присоединена), а при переходе в sait.ru/taxonomy/term/1 становилась как вторая

Аватар пользователя dangler dangler 27 декабря 2011 в 18:01

ох, даже так.. действительно, регионы у меня Не через условия заданы.. я и не подумал, что их через условия нужно задавать. это то есть вот так?:

<?php if ($page['content_right']): ?>
    <?php print render($page['content_right']); ?>
<?php 
endif; ?>

но ведь каждый регион находится в своем диве, у которого жестко задана ширина в процентах. Чтобы ширина колонок не менялась в зависимости от ширины текста в ней..

Аватар пользователя dangler dangler 6 января 2012 в 15:23

спасибо, но я вот недавно совсем в 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:

#leftcol {
  width: 30%;
  float: left;
}
#centcol {
  width: 40%;
  float: left;
}
#rigtcol {
  width: 30%;
  float: left;
}

#allcol {
  width: 100%;

}

а если что-то не так, то где могла скрыться ошибка?

Аватар пользователя dangler dangler 6 января 2012 в 18:00

то есть вместо открывающей и закрывающей скобки { } нужно поставить двоеточие : и endif; ?

а с else тогда как быть? как-то вот так:
вместо <?php } else {   ?> написать <?php endif; else:   ?> ?

Аватар пользователя dangler dangler 6 января 2012 в 21:59

легко сказать "учите матчасть", но трудно сделать.. учитывая, что я друпал начал осваивать только 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 , то ли надо как-то по-другому его назвать.

Аватар пользователя dangler dangler 10 ноября 2015 в 11:47

Хули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%
я прикрепил картинку для наглядности.

скажите, пожалуйста - это я снова что-то "наколхозил" в шаблоне, или теперь нужно что-то в админке настроить?