Проблема с выводом контента (вёртска темы с нуля)

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

Аватар пользователя LeeleeKeelee LeeleeKeelee 22 января 2011 в 23:24

Доброго времени суток!

Верстаю тему с нуля, опыта мало, поэтому прошу указать на мою ошибку.

Идея такова - content должен выводиться в разные области темы на нескольких типах материалов.

Т.е. в css я описал небольшую область в определённом месте страницы с определённым размером и теперь мне нужно наш content вывести именно туда. Приводу код

CSS
Вот здесь, наряду с обычным content, описана область content_right, которая будет использована на определённом типе материала для вывода контента

body {
        margin: 0px;
        background-image: url(background.gif);
        /* background-repeat: repeat-x; */
}
        #container {
    width: 950px; /* Ширина слоя */
    margin: 0 auto; /* Выравнивание по центру */
    background: #ccc; /* Цвет фона левой колонки */
   
   }
   #header_vertex {
    padding: 0px; /* Отступы вокруг текста */
    /*background: #8fa09b; /* Цвет фона шапки */
    background-image: url(header.png);
   }
   #hr_menu {
    margin-top: 0px;
    /* width: 110px;  Ширина слоя */
    padding: 0 px; /* Отступы вокруг текста */
    background: #ccc;
    /* border: 3px solid gray; */
   }
   #content {
    /* margin-left: 130px;  Отступ слева */
    padding: 0px; /* Поля вокруг текста */
    background: #fff; /* Цвет фона правой колонки */
   }
   #content_right {
   position: relative;
   left: 400px;
   top: 20px;
   width: 420px;
   height: 580px;
   background: #ff5;
   border: 2px solid gray;
   overflow: auto;

Для теста я не создавал отдельный тип материала, а работал пока только с page.tpl.php
В нём я прописал, что content должен выводиться в content_right, а не в content, как это идёт по дефолту:

<?php<html>
<head>
  <title><?php print $head_title;?></title>
  <?php print $head?>
  <?php print $styles?>
  <?php print $scripts?>
</head>
<body>
<div id="container">

</div>
     
  <!-- <div id="content">
    <?php print $content?>
   </div> -->
    
<div id="content_right">
<?php print $content?>
</div>

   

</body>
</html>?>

"div id="content"" тут закомментирован пока, но это сути не меняет - всёравно весь текст выводится посередине страницы? даже если просто удалить закомментированный кусок кода.

Заметил такую вещь, что если в css удалить описание content, а content_right переименовать в content - то всё выведется правильно, но это мне не подходит, потому что мне надо описать несколько областей вывода контента и в дальнейшем использовать разные области (content, content_right, content_left) в разных типах материалов.

Подскажите, где моя ошибка?

пс: слегка криворук Smile Но все с чегото начинали.

Комментарии

Аватар пользователя vitg vitg 23 января 2011 в 11:34

"LeeleeKeelee" wrote:

 <!-- <div id="content">
    <?php print $content?>
   </div> -->
   
<div id="content_right">
<?php print $content?>
</div>


Почему 2 раза выводится переменная content?
Для кода html-вские комментарии не подойдут. Попробуйте для начала модифицировать код до:

 <!-- <div id="content">
    <?php //print $content
?>
   </div> -->
   
<div id="content_right">
<?php print $content?>
</div>

И посмотрите, выведется ли $content в div с id=content_right (FireBag, ну или исходный код страницы)

PS. Если вы в CSS меняете что-то, то логика серверного приложения никогда не изменится.

Аватар пользователя Лексей Лексей 23 января 2011 в 13:55

я бы в инфо файле темы задал нужные регионы, потом к page.tpl перешел

«
regions[left] = Left sidebar
regions[right] = Right sidebar
regions[content] = Content
regions[header] = Header
regions[footer] = Footer
regions[helpmenu] = Helpmenu
regions[footerbottom] = Footerbottom
regions[search] = Search
regions[nav] = Navigation
»

Аватар пользователя LeeleeKeelee LeeleeKeelee 23 января 2011 в 16:31

Большое спасибо за отклик, друзья!

Но проблема, к сожалению, не решилась. Сейчас по порядку:

igor701 wrote:
я бы поправил на <?php print $content; ?>

Пробовал, ага. Никакой реакции на изменения.

Лексей wrote:
я бы в инфо файле темы задал нужные регионы, потом к page.tpl перешел

«
regions[left] = Left sidebar
regions[right] = Right sidebar
regions[content] = Content
regions[header] = Header
regions[footer] = Footer
regions[helpmenu] = Helpmenu
regions[footerbottom] = Footerbottom
regions[search] = Search
regions[nav] = Navigation
»


Да, это я тоже задал. Оставил только Header, Content и мой Content_right. Пробовал вариант только с Header и Content_right - никакой реакции.
Что интересно - сама система увидела новый регион (есть в выборе в отделе "Блоки", но его метку визуальную не отрисовывает и ничего туда не выводит)

vitg wrote:
"LeeleeKeelee" wrote:

 <!-- <div id="content">
    <?php print $content?>
   </div> -->
   
<div id="content_right">
<?php print $content?>
</div>


Почему 2 раза выводится переменная content?
Для кода html-вские комментарии не подойдут. Попробуйте для начала модифицировать код до:

 <!-- <div id="content">
    <?php //print $content
?>
   </div> -->
   
<div id="content_right">
<?php print $content?>
</div>

И посмотрите, выведется ли $content в div с id=content_right (FireBag, ну или исходный код страницы)

PS. Если вы в CSS меняете что-то, то логика серверного приложения никогда не изменится.

Попробовал и ваш вариант - ничего не изменилось.
И так и сяк пробовал - никакой реакции вообще.

С исходным кодом самое интересное - инфа выводится только в Div content и нет никаких упоминаний о Div content_right
Даже если удалить content вообще из page.tpl - он всёравно будет работать и выводить инфу туда, а мой content_right так и не появится. И что интересно - в коде есть регионы, которые я убрал/не создавал - например Footer и Navigation.
Такое чувство, что часть кода (а может и весь page.tpl) берётся из другой темы, того же Гарланда - почему так? Css мой подцепился и более менее работает, а вот темплейт, походу, нет.

UPD: Кеши друпала чистил довольно часто (бывало и после каждого изменения) - всёравно никаких изменений. node.tpl не создавал

Аватар пользователя LeeleeKeelee LeeleeKeelee 23 января 2011 в 16:34

vitg wrote:
А если сбросить кеш?

Поздновато я пост свой обновил Smile

Да, кеш я сбрасывал. Бывало сбрасывал после каждого изменения - никакой реакции на них.

Аватар пользователя vitg vitg 23 января 2011 в 17:20

"LeeleeKeelee" wrote:
С исходным кодом самое интересное - инфа выводится только в Div content и нет никаких упоминаний о Div content_right
Даже если удалить content вообще из page.tpl - он всёравно будет работать и выводить инфу туда, а мой content_right так и не появится. И что интересно - в коде есть регионы, которые я убрал/не создавал - например Footer и Navigation.
Такое чувство, что часть кода (а может и весь page.tpl) берётся из другой темы, того же Гарланда - почему так? Css мой подцепился и более менее работает, а вот темплейт, походу, нет.

Вы тему на базе какой-то другой создаете? Если есть подозрение, что код грузится из другой темы, есть предложение - удалите все темы из папки /themes и /sites/all/themes, кроме вашей, только если у вас локалхост. Будут появляться ошибки - действительно другая тема задействована в генерации.

Аватар пользователя LeeleeKeelee LeeleeKeelee 23 января 2011 в 17:30

vitg wrote:
"LeeleeKeelee" wrote:
С исходным кодом самое интересное - инфа выводится только в Div content и нет никаких упоминаний о Div content_right
Даже если удалить content вообще из page.tpl - он всёравно будет работать и выводить инфу туда, а мой content_right так и не появится. И что интересно - в коде есть регионы, которые я убрал/не создавал - например Footer и Navigation.
Такое чувство, что часть кода (а может и весь page.tpl) берётся из другой темы, того же Гарланда - почему так? Css мой подцепился и более менее работает, а вот темплейт, походу, нет.

Вы тему на базе какой-то другой создаете? Если есть подозрение, что код грузится из другой темы, есть предложение - удалите все темы из папки /themes и /sites/all/themes, кроме вашей, только если у вас локалхост. Будут появляться ошибки - действительно другая тема задействована в генерации.

Нет, тема создаётся с нуля, тоесть просто открыл Notepad с подстветкой кода и начал писать, попутно читая разные доки...

Только попробовал ваш совет - убрал ВСЕ темы, кроме моей - никаких изменений (ни в отображении, ни в исходном коде). Кеш сбрасывал, проверил раздел тем - только моя осталась.

Не понимаю что происходит... Sad

На всякий случай выкладываю архив с темой, то, что накропал на данный момент:
http://dl.dropbox.com/u/3322659/temp/recipient.rar (500kb)

Аватар пользователя LeeleeKeelee LeeleeKeelee 23 января 2011 в 19:04

Лексей wrote:
че-то не то...разве это может работать...?

даже этого content_right в page.tpl нет


тьфу, по запарке скинул один из вариантов, в котором вместо content_right стоит content_rightsection. просто уже голова кругом, бьюсь второй день над этим
Перезалил правильный файл: http://dl.dropbox.com/u/3322659/temp/recipient.rar

Но так или иначе - всёравно не работает

Аватар пользователя LeeleeKeelee LeeleeKeelee 23 января 2011 в 19:35

Лексей wrote:
ой...ну...ГДЕ????content_right???

<div id="content_right">
<?php print $content

принт что?


Погодите... В css я прописал content_right - контейнер с определёнными аттрибутами. Теперь в page.tpl я указываю, что в данном диве я хочу, чтобы друпал вывел содержимое $content

Разве нет?
Тогда как оно должно быть?

Сейчс попробовал исправить на <?php print $content_right?>
ничего не поменялось.

Аватар пользователя Лексей Лексей 23 января 2011 в 19:50

нет конечно. В инфо файле ты создал регион content_right, в page.tpl id="content_right" применится только к региону content_right, и принт тоже должен быть этого региона print $content_right.
Теперь в Блоках ты имеешь свой регион content_right. В него ты можешь выводить что тебе нужно и к нему будет применяться в CSS #content_right

Аватар пользователя LeeleeKeelee LeeleeKeelee 23 января 2011 в 19:57

Лексей wrote:
нет конечно. В инфо файле ты создал регион content_right, в page.tpl id="content_right" применится только к региону content_right, и принт тоже должен быть этого региона print $content_right.
Теперь в Блоках ты имеешь свой регион content_right. В него ты можешь выводить что тебе нужно и к нему будет применяться в CSS #content_right

Ок, спасибо, переписал как вы посоветовали.

В блоках, ради теста, выставил вывод блока "Сделано на Drupal", сохраняю - ничего не изменилось.
Я опять чтото забыл?

Аватар пользователя LeeleeKeelee LeeleeKeelee 23 января 2011 в 20:20

Лексей wrote:
не знаю уже ...кэш почистил? а куда-нибудь что-нибудь выводится?

смотри как-бы на пример в уже готовые темы


Да я сам в шоке Sad
Кеш чистил уже миллион раз

Всё, что выводится - создал обычную страничку, она выводится тупо в середину страницы, больше ничего нет.
Скрин:
http://dl.dropbox.com/u/3322659/temp/rcp_screen.jpg

в готовые темы смотрел - сходу, вроде, правильно всё делаю, а почему исходный код страницы в браузере (т.е. той страницы, что уже отдаёт мне сам друпал) не совсем похож на то, что должно быть по коду моей темы - я не могу понять (откуда там регионы, которые я не прописыва - футер, навигация и т.д.? а про content_right ни одного упоминания даже)

Аватар пользователя Лексей Лексей 23 января 2011 в 20:41

Где-то встречал, что по умолчанию эти 5 регионов должны быть, а если нужно еще какие-то , то добавляем к ним

regions[left] = Left sidebar
regions[right] = Right sidebar
regions[content] = Content
regions[header] = Header
regions[footer] = Footer

Аватар пользователя LeeleeKeelee LeeleeKeelee 23 января 2011 в 21:36

Лексей wrote:
Где-то встречал, что по умолчанию эти 5 регионов должны быть, а если нужно еще какие-то , то добавляем к ним

regions[left] = Left sidebar
regions[right] = Right sidebar
regions[content] = Content
regions[header] = Header
regions[footer] = Footer


Пробовал, конечно... Результат тот же. Sad
Я не знаю, у меня больше никаких вариантов.

Serge66 wrote:
Можно попробовать такой вариант. Сделать несколько тем. И переключать их в зависимости от раздела.
Разные шаблоны, для разных страниц и разделов сайта.

Есть в этом чтото. Но у меня будет порядка 20 страниц всего, но каждая - уникальная. Такой сайт будет сжигать тонны трафика...

Аватар пользователя Лексей Лексей 23 января 2011 в 21:49

по-подробнее про идею
Идея такова - content должен выводиться в разные области темы на нескольких типах материалов.
можно?

Аватар пользователя LeeleeKeelee LeeleeKeelee 23 января 2011 в 22:15

Проще будет картинками описать, т.к. есть отрисованный макет

Например, страница художника:

http://dl.dropbox.com/u/3322659/temp/pictor.jpg

Здесь текст должен выводиться строго в "листе", там, где написано pictor, а всё остальное, по сути, это фон. Тоесть область, где выводится текст, строго задана и она справа. Сверху всего этого меню с шапкой, но сейчас это не критично.

Страница композитора:

http://dl.dropbox.com/u/3322659/temp/compositor.jpg

Здесь аналогично, но область слева

Третий тип материала самый обычный, с выводом текста посередине

Вот и пытаюсь это реализовать, но чтото даже элементарные вещи не выходят.
Понятное дело, что проще заплатить комунибудь, но проект некоммерческий, а творческий, да и охото самому научиться с этим работать.

Типом материалов это реализовывать хочу потому что таких страниц с расположением левее-правее будет несколько, только фоны разные.

Лексей, спасибо вам за терпение Smile

Аватар пользователя Лексей Лексей 23 января 2011 в 23:00

ну все реально...
возьми простую готовую тему...

эти регионы будем использовать для вывода контента:
в инфофайле -
regions[left] = Left content
regions[right] = Right content

в page.tpl -

 <?php if ($left) { ?>
    <div id="content-left" class="content-left">
           <?php print $left ?>
    </div>
  <?php ?>

и аналогично для правого...

В css -
#content-left {ширина, отступ слева самое главное}
.content-left {короче настроить надо}
и для правого...

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

Аватар пользователя LeeleeKeelee LeeleeKeelee 23 января 2011 в 23:16

Лексей wrote:
ну все реально...
возьми простую готовую тему...

эти регионы будем использовать для вывода контента:
в инфофайле -
regions[left] = Left content
regions[right] = Right content

в page.tpl -

 <?php if ($left) { ?>
    <div id="content-left" class="content-left">
           <?php print $left ?>
    </div>
  <?php ?>

и аналогично для правого...

В css -
#content-left {ширина, отступ слева самое главное}
.content-left {короче настроить надо}
и для правого...

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


Спасибо!
Понял, по этой части всё понятно, кроме момента с классом .content-left {} - что будет описываться в классе, если основные моменты мы опишем в #content-left {}?. Завтра сяду за реализацию, взяв готовую тему, а не пытаться осилить это с нуля.

Ещё один вопрос - каким способом сунуть на фон всю вот эту картинку (где пикча автора и сами личточки)? Нарезать её на части нет смысла, проще всю её пожать в 950 пикселей по ширине и вписать фоном в страницу. Только вот как? В css можно заюзать background-image: url();, но где именно это прописывать, чтоб оно было посередине страницы (где наш левый-правый регион) и не лезло, например, на область меню и шапки? Отыскать в css кусок, в котором описывается эта область и прописать туда, я так понял. Ещё стоит учесть, что почти на каждой странице будет разный фон, пока не придумал как это сделать.

Аватар пользователя Лексей Лексей 23 января 2011 в 23:33

может он тебе и не понадобится .content-left
я уже почти понял че ты задумал...

на счет фона - одинаковым не пойдет??? т.е. для правого и левого (2шт). фото я не имею ввиду они разные будут...

ниче никуда не будет лезть - все в page.tpl и css поправить можно...

сколько страниц-то будет?

Аватар пользователя LeeleeKeelee LeeleeKeelee 24 января 2011 в 11:59

igor701 wrote:
сделай всё-таки node.tpl.php
и в ней только <?php print $content; ?>

Угу)

Лексей wrote:
может он тебе и не понадобится .content-left
я уже почти понял че ты задумал...

на счет фона - одинаковым не пойдет??? т.е. для правого и левого (2шт). фото я не имею ввиду они разные будут...

ниче никуда не будет лезть - все в page.tpl и css поправить можно...

сколько страниц-то будет?


В общем. По поводу фона - я думал весь фон с листочками и фотографией сделать тупо одной картинкой, потому что именно таких страниц будет три, но расположение блока с текстом будет разное (справа и слева)

Ещё будет одна страница с фотографиями, но её, я думаю, сделаю по аналогии с этими страницами, когда разберусь уже окончательнео.

Я сделал простую тему в Artisteer с нужными мне размерами и цветами, начал курочить исходники - там всё так хитро закручено + много лишнего кода выходит (мне же не нужны стандартные регионы типа banner 1, 2, 3; user 1, 2, 3 и т.д., но их я просто убрал пока из info-файла).
В общем, вписал я свой регион, но удалось вписать его только под регионом "Содержание" (наш content)
А как сделать, чтобы этот регион не отображался? Удалить его нельзя, а вот скрыть можно как нибудь? Потому что там всегда чтото будет, а мне это не нужно.
Вот то, что получилось:
http://dl.dropbox.com/u/3322659/temp/page.jpg

content_right пока уродливо выделен жёлтым, сделал, чтоб было удобней подгонять, потом, конечно, сделаю прозрачным.

Уже более-менее сносно. Там, где материал "Test" - это регион "Содержание", вот его бы скрыть, потому что вот на этих страницах я туда ничего писать не буду.
А потом на фон добавить картинку с листами и фоткой во всю ширину листа темы. В общем, в итоге должно получиться чтото такое:
http://dl.dropbox.com/u/3322659/temp/vertex.jpg
Есть идеи?

пс: я так подумал... А может забить на все эти регионы и тупо сверстать таблицей в блоке "Содержание"? Biggrin

Аватар пользователя Лексей Лексей 24 января 2011 в 14:32

"LeeleeKeelee" wrote:
А потом на фон добавить картинку с листами и фоткой во всю ширину листа темы.

это же не проблема?
"LeeleeKeelee" wrote:
В общем, вписал я свой регион, но удалось вписать его только под регионом "Содержание" (наш content)

как это понять? ничего не выводи в Содержание и не будет слова тест...
"LeeleeKeelee" wrote:
пс: я так подумал... А может забить на все эти регионы и тупо сверстать таблицей в блоке "Содержание"? :D

была такая идея...можно попробовать с помощью модуля Panels...можно сказать приемлемый вариант

Аватар пользователя LeeleeKeelee LeeleeKeelee 24 января 2011 в 16:16

Спасибо! Табличками пока верстаю, получается сносно, вродебы. На модуль Panels обращу внимание тоже

Благодаря тебе я получил в этой теме бесценный опыт работы с регионами. Благодарю! Smile