[РЕШЕНО] Темизация блока в разных регионах

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

Аватар пользователя XmasterX XmasterX 9 июля 2010 в 13:59

Подскажите как решить проблему.

в block.tpl.php сделал так

<?php
  
<div class="content_left_section">
        <
div class="left_section_header"></div>
        <?
php if ($block->subject) { ?>
        <div class="left_section_title"><?php print $block->subject?></div>
        <?php ?>
        
        <?php if ($block->content) { ?>
        <div class="left_section_content">
            <?php print $block->content?>
        </div>
        <?php ?>
      <div class="left_section_footer"></div>
  </div>
?>

в левом сайдбаре блок выглядит как надо

хидер и футер блока — полоски со скошенными углами сделаны дивами с соответсвующими картинками.

а вот если этот, точнее любой, блок перенести в другой регион получается каша.










соответственно вопрос: как определить в каком регионе выводится блок, ну или какой-нибудь другой путь, если я не так делаю :).

p/s/

<?php
<div class="block block-<?php print $block->module; ?> unstyled-block" id="block-<?php print $block->module; ?>-<?php print $block->delta; ?>">
?>

так не прокатывает потому-что тут можно определить название модуля (в случае первого скриншота nice-menus) и его номер.

ВложениеРазмер
Иконка изображения _bottom_sidebar_block_.jpg30.6 КБ

Комментарии

Аватар пользователя G.A. Vinogradov G.A. Vinogradov 9 июля 2010 в 14:04

В page.tpl.php пропишите id для регионов.
В css файлах прописывайте сложные селекторы:

#one-region #your-block{
   ... css rules here ...
}
#another-one-region #your-block{
   ... different css rules here ...
}
Аватар пользователя XmasterX XmasterX 9 июля 2010 в 14:16

я с друпалом еще на вы:)

а не подскажете как id региона определить?

сейчас решил заглянуть в acqua_marina там в block.tpl.php есть такое


<?php if ($rounded_block): ?>

а в template.php

<?php
function phptemplate_preprocess_block(&$vars) {
  
// Add regions with rounded blocks (e.g., sidebar_first, sidebar_last) to $rounded_regions array
  
$rounded_regions = array('sidebar_first','sidebar_last','postscript_first','postscript_middle','postscript_last');
  
$vars['rounded_block'] = (in_array($vars['block']->region$rounded_regions)) ? TRUE FALSE;
}
?>

так их определять?

Аватар пользователя XmasterX XmasterX 9 июля 2010 в 14:41

вообщем превратил block.tpl.php в кашу из if-ов

<?php
      
<div class="content_left_section">
        <?
php if ($corner_block) {?><div class="left_section_header"></div> <?php ?>
        <?php if ($block->subject):?>
        <?php if ($corner_block) {?><div class="left_section_title"><?php print $block->subject?></div><?php }?>
        <?php if (!$corner_block) {?><?php print $block->subject?><?php ?>
        <?php endif; ?>
        <?php if ($block->content) { ?>
        <?php if ($corner_block) {?><div class="left_section_content"><?php ?>
            <?php print $block->content?>
        <?php if ($corner_block) {?></div><?php ?>
        <?php ?>
      <?php if ($corner_block) {?><div class="left_section_footer"></div><?php ?>
      </div>
?>

уж не знаю насколько это правильно

Аватар пользователя G.A. Vinogradov G.A. Vinogradov 9 июля 2010 в 14:48

Это конечно вариант, но.. несколько неправильный Wink
Меняйте разметку в файле page.tpl.php

Там должно быть что-то вроде (для каждого региона)

<?php print $region-name?>

Так вот, меняете (или обнаруживаете, что все так и есть) на следующий код:

<div id="region-name"><?php print $region-name; ?></div>

Вот как это выглядит, например в Garland:
<div id="footer"><?php print $footer_message . $footer ?></div>

Дальше - гуглите по запросу "css селекторы". Вам достаточно простейшего, как я написал выше.

Аватар пользователя XmasterX XmasterX 9 июля 2010 в 15:20

у меня в page.tpl уже вписаны структура страницы уже разбита дивами
и просто в нужные места выводятся print-ами содержимое.

боюсь если начну делать по вашему (как надо?) то совсем запутаюсь. тут наверное все дело в степени детализации темизации Smile

но спасибо и за эту подсказку, упростил только до if else без каши с кучей if-ов.

Аватар пользователя XmasterX XmasterX 9 июля 2010 в 16:45

ааааааа! где-то подсознательно думал что может, где-то так просто и можно сделать Smile
но нехватило головы знаний английского залезть на .org

спасибище! заработало

Аватар пользователя Fat Faggy Fat Faggy 27 марта 2012 в 16:41

и все-таки? Smile
как програмно определить активный регион?

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

интуитивно я догадываюсь, что это какая-то переменная. скажу даже больше, когда-то я уже натыкался на нее, но сейчас вот что-то совсем не могу найти Sad

ЗЫ: да, я уже гуглил Smile не помогло...