Доброго времени суток!
Верстаю тему с нуля, опыта мало, поэтому прошу указать на мою ошибку.
Идея такова - content должен выводиться в разные области темы на нескольких типах материалов.
Т.е. в css я описал небольшую область в определённом месте страницы с определённым размером и теперь мне нужно наш content вывести именно туда. Приводу код
CSS
Вот здесь, наряду с обычным content, описана область content_right, которая будет использована на определённом типе материала для вывода контента
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) в разных типах материалов.
Подскажите, где моя ошибка?
пс: слегка криворук Но все с чегото начинали.
Комментарии
Всё ещё актуально Поделитесь опытом, пожалуйста
Почему 2 раза выводится переменная content?
Для кода html-вские комментарии не подойдут. Попробуйте для начала модифицировать код до:
<?php //print $content
?>
</div> -->
<div id="content_right">
<?php print $content?>
</div>
И посмотрите, выведется ли $content в div с id=content_right (FireBag, ну или исходный код страницы)
PS. Если вы в CSS меняете что-то, то логика серверного приложения никогда не изменится.
я бы поправил на
<?php print $content; ?>
я бы в инфо файле темы задал нужные регионы, потом к 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 - никакой реакции.
Что интересно - сама система увидела новый регион (есть в выборе в отделе "Блоки", но его метку визуальную не отрисовывает и ничего туда не выводит)
Попробовал и ваш вариант - ничего не изменилось.
И так и сяк пробовал - никакой реакции вообще.
С исходным кодом самое интересное - инфа выводится только в Div content и нет никаких упоминаний о Div content_right
Даже если удалить content вообще из page.tpl - он всёравно будет работать и выводить инфу туда, а мой content_right так и не появится. И что интересно - в коде есть регионы, которые я убрал/не создавал - например Footer и Navigation.
Такое чувство, что часть кода (а может и весь page.tpl) берётся из другой темы, того же Гарланда - почему так? Css мой подцепился и более менее работает, а вот темплейт, походу, нет.
UPD: Кеши друпала чистил довольно часто (бывало и после каждого изменения) - всёравно никаких изменений. node.tpl не создавал
А если сбросить кеш?
Поздновато я пост свой обновил
Да, кеш я сбрасывал. Бывало сбрасывал после каждого изменения - никакой реакции на них.
Вы тему на базе какой-то другой создаете? Если есть подозрение, что код грузится из другой темы, есть предложение - удалите все темы из папки /themes и /sites/all/themes, кроме вашей, только если у вас локалхост. Будут появляться ошибки - действительно другая тема задействована в генерации.
Нет, тема создаётся с нуля, тоесть просто открыл Notepad с подстветкой кода и начал писать, попутно читая разные доки...
Только попробовал ваш совет - убрал ВСЕ темы, кроме моей - никаких изменений (ни в отображении, ни в исходном коде). Кеш сбрасывал, проверил раздел тем - только моя осталась.
Не понимаю что происходит...
На всякий случай выкладываю архив с темой, то, что накропал на данный момент:
http://dl.dropbox.com/u/3322659/temp/recipient.rar (500kb)
че-то не то...разве это может работать...?
даже этого content_right в page.tpl нет
тьфу, по запарке скинул один из вариантов, в котором вместо content_right стоит content_rightsection. просто уже голова кругом, бьюсь второй день над этим
Перезалил правильный файл: http://dl.dropbox.com/u/3322659/temp/recipient.rar
Но так или иначе - всёравно не работает
ой...ну...ГДЕ????content_right???
<?php print $content
принт что?
Погодите... В css я прописал content_right - контейнер с определёнными аттрибутами. Теперь в page.tpl я указываю, что в данном диве я хочу, чтобы друпал вывел содержимое $content
Разве нет?
Тогда как оно должно быть?
Сейчс попробовал исправить на
<?php print $content_right; ?>
ничего не поменялось.
нет конечно. В инфо файле ты создал регион content_right, в page.tpl id="content_right" применится только к региону content_right, и принт тоже должен быть этого региона print $content_right.
Теперь в Блоках ты имеешь свой регион content_right. В него ты можешь выводить что тебе нужно и к нему будет применяться в CSS #content_right
Ок, спасибо, переписал как вы посоветовали.
В блоках, ради теста, выставил вывод блока "Сделано на Drupal", сохраняю - ничего не изменилось.
Я опять чтото забыл?
не знаю уже ...кэш почистил? а куда-нибудь что-нибудь выводится?
смотри как-бы на пример в уже готовые темы
Да я сам в шоке
Кеш чистил уже миллион раз
Всё, что выводится - создал обычную страничку, она выводится тупо в середину страницы, больше ничего нет.
Скрин:
http://dl.dropbox.com/u/3322659/temp/rcp_screen.jpg
в готовые темы смотрел - сходу, вроде, правильно всё делаю, а почему исходный код страницы в браузере (т.е. той страницы, что уже отдаёт мне сам друпал) не совсем похож на то, что должно быть по коду моей темы - я не могу понять (откуда там регионы, которые я не прописыва - футер, навигация и т.д.? а про content_right ни одного упоминания даже)
Где-то встречал, что по умолчанию эти 5 регионов должны быть, а если нужно еще какие-то , то добавляем к ним
regions[left] = Left sidebar
regions[right] = Right sidebar
regions[content] = Content
regions[header] = Header
regions[footer] = Footer
Пробовал, конечно... Результат тот же.
Я не знаю, у меня больше никаких вариантов.
Есть в этом чтото. Но у меня будет порядка 20 страниц всего, но каждая - уникальная. Такой сайт будет сжигать тонны трафика...
Можно попробовать такой вариант. Сделать несколько тем. И переключать их в зависимости от раздела.
Разные шаблоны, для разных страниц и разделов сайта.
по-подробнее про идею
Идея такова - content должен выводиться в разные области темы на нескольких типах материалов.
можно?
Проще будет картинками описать, т.к. есть отрисованный макет
Например, страница художника:
http://dl.dropbox.com/u/3322659/temp/pictor.jpg
Здесь текст должен выводиться строго в "листе", там, где написано pictor, а всё остальное, по сути, это фон. Тоесть область, где выводится текст, строго задана и она справа. Сверху всего этого меню с шапкой, но сейчас это не критично.
Страница композитора:
http://dl.dropbox.com/u/3322659/temp/compositor.jpg
Здесь аналогично, но область слева
Третий тип материала самый обычный, с выводом текста посередине
Вот и пытаюсь это реализовать, но чтото даже элементарные вещи не выходят.
Понятное дело, что проще заплатить комунибудь, но проект некоммерческий, а творческий, да и охото самому научиться с этим работать.
Типом материалов это реализовывать хочу потому что таких страниц с расположением левее-правее будет несколько, только фоны разные.
Лексей, спасибо вам за терпение
ну все реально...
возьми простую готовую тему...
эти регионы будем использовать для вывода контента:
в инфофайле -
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 кусок, в котором описывается эта область и прописать туда, я так понял. Ещё стоит учесть, что почти на каждой странице будет разный фон, пока не придумал как это сделать.
может он тебе и не понадобится .content-left
я уже почти понял че ты задумал...
на счет фона - одинаковым не пойдет??? т.е. для правого и левого (2шт). фото я не имею ввиду они разные будут...
ниче никуда не будет лезть - все в page.tpl и css поправить можно...
сколько страниц-то будет?
сделай всё-таки node.tpl.php
и в ней только
<?php print $content; ?>
Угу)
В общем. По поводу фона - я думал весь фон с листочками и фотографией сделать тупо одной картинкой, потому что именно таких страниц будет три, но расположение блока с текстом будет разное (справа и слева)
Ещё будет одна страница с фотографиями, но её, я думаю, сделаю по аналогии с этими страницами, когда разберусь уже окончательнео.
Я сделал простую тему в 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
Есть идеи?
пс: я так подумал... А может забить на все эти регионы и тупо сверстать таблицей в блоке "Содержание"?
это же не проблема?
как это понять? ничего не выводи в Содержание и не будет слова тест...
была такая идея...можно попробовать с помощью модуля Panels...можно сказать приемлемый вариант
Спасибо! Табличками пока верстаю, получается сносно, вродебы. На модуль Panels обращу внимание тоже
Благодаря тебе я получил в этой теме бесценный опыт работы с регионами. Благодарю!
ага...отпишись потом че-как сделал...
В личку или сюда?)
сюда