Здравствуйте.
Подскажите, пожалуйста, как такое может быть, чтобы одно и тоже правило CSS
в разных шаблонах работало по-разному???
Делаю свою первую тему. На главной вывожу новости в две колонки
с помощью CSS { float:left; width:48%; margin-right:10px;}
и получается вот так: все новости в одну колонку, а вторая пустая.
Но-о, когда добавляю тоже правило к теме Garland, то получается так как надо,
вот, как на этом скрине:
В чем загвоздка???
Пните, пожалуйста, в нужном направлении.
Комментарии
В первом случае или уменьшить ширину колонок или уменьшить марджин
Также, если колонок 2, то для правой наверное имеет смысл задавать
float:right
И поставьте себе Firebug
Так дело том, что 2-я колонка появляетя в теме Garland автоматически, когда задаешь диву с выводом материала это правило... в этом и суть использования этого правила CSS для вывода материала, что не надо Вьюс и Панелс. А вот в моей теме материал в 2-е колонки с помощью этого правила выстраиваться не хочет.
Маржин менял и ширину тоже - не помогло.
почему фиг знает. телепатов нету, но я потренируюсь в телепатии немного.
наверно данный баг вылазит иза того. Что див к которому ты применяешь float лежит в внутри другого дива. У которого widht больше 50%
или может быть, потому что сам див, которому задано обтекание имеет widht больше 50%.
и еще тысяча причин, которые без кода страницы, нельзя сказать.
Может стоит воспользоватся firebug?
попробуй для начала { margin:0px; padding:0px;} к самому элементу и к контейнеру
потом стоит также посмотреть в фаербаге возможно margin-right:10px; это больше чем 2%.
Код в студию, а то здесь уже была одна тема в которой сначала css выпрашивали потом html, мы не гадалки, если вы стесняетесь показать код, то с проблемой будете разбираться исключительно сами.
Вот фрагмент где выводится контент:
<div class="ind">
<div class="bg-node">
<div class="node-column">
<?php print $content;?>
</div>
</div>
</div>
</div>
А вот и стили:
#cont-col .ind { width:100%; }
.bg-node { background:url(images/bg-line3.gif) repeat-y 250px 0; width:100%; overflow:hidden;}
.node-column {float:left; width:48%; margin-right:2px;}
Нееее! Давайте погадаем! Мой вариант:
a) Есть:
html:
<div>
первая статья
</div>
<div>
вторая статья
</div>
<div>
3 статья
</div>
<div>
4 статья
</div>
</div>
CSS:
b) надо:
CSS:
Я
угадалпрочитал мысли!На правах рекламы:
Гадаю по скриншотам, снимаю порчу с серверов, отваживаю хакеров, заговариваю ssl сертификаты! Не дорого!
Кажется, ответ найден!!!
Надо было не $content выводить в div с условием { float:left; width:48%; margin-right:10px;}
а в файле node.tpl.php задать это условие CSS.
Только теперь надо в node.tpl.php прописать условие вывода:
если страница главная - выводить с условием float:left; width:48%,
иначе в обычном виде.
Может, кто подскажет, как грамотно прописать такое условие...
Конечно, подскажем! Нужно просто div`у, в котором Вы выводите $content присваивать разные классы. Неожиданно, правда?
Вообще-то, меня не покидает ощущение, что ТС полез в дебри, не зная основ. Я прав?
А что мои вопросы не говорят сами за себя?
Если можете и хотите, подскажите новичку зеленому, пожалуйста, как придать разные классы вывода $content для
page-front.tpl.php и page.tpl.php.
Привязываться нужно не к классам обёртки для $content, а к классам body. Это самый здравый и универсальный способ. Вам захочется, к примеру, поменять по условию фон целой страницы или другие элементы за пределами (или в пределах) $content - никаких проблем.
Посмотрите как в Гарланде сделано. Функцию генерации этих классов можно взять оттуда же, из template.php или, лучше, из темы basic
Ух-ух, таки нашел решение.
Создал node-front.tpl.php скопировал в него содержимое из node.tpl.php
и в строчке вывода поменял классы
<?php<div id="node-<?php print $node->nid; ?>" class="node<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?>">?>
понял на:
<?php<div id="node-<?php print $node->nid; ?>" class="node-column<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?>">?>
Затем воспользовавшись подсказкой отсюда
добавил в файл node.tpl.php стоку
<?php if ($is_front): include "node-front.tpl.php"; return; endif; ?>
Теперь на главной $content отображается с одним классом, на остальных с другим.
Большое спасибо ребята за поддержку, все ваши комментарии помогли.
Вышло вот так: