темизация блоков друпал 7

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

Аватар пользователя alex_saw alex_saw 28 марта 2011 в 19:55

Вобещм переношу шаблон из 6 друпала в 7. У меня стиль блоков зщадан в block.tpl, и при использовании темизации блоков - контент становится таким же! Я почитал в интернетах, что контент в 7 друпале это тоже блок. Пичалька. Так вот: как же мне сделать чтобы темизация блоков применялась ко всем блокам кроме блока контента?

Комментарии

Аватар пользователя olk olk 28 марта 2011 в 20:26

То же столкнулся с данной «проблемой»,
мое решение следующее, в tempalte.php темы:


<?php
function loross_preprocess_block(&$variables) {
  
// In the header region visually hide block titles.
  
$variables['block']->is_title_block TRUE;
  
$variables['block']->is_bordered_block FALSE;
  if (
in_array($variables['block']->region,array('header','footer'))) {
      
array_merge($variables,array('is_title_block' => TRUE));
    
$variables['block']->is_title_block  FALSE;
   }
  if (
in_array($variables['block']->region, array('sidebar_first','sidebar_second','top_post','help','pre_footer','bottom_content'))) {
      
$variables['block']->is_bordered_block TRUE;
  }
}
?>

в данном случае loross - это имя темы, в переменной $block шаблона block.tpl.php я определяю две дополнительных переменных is_bordered_block и is_title_block дальше в зависимости от значения этих переменных я вывожу соответствующий контент
для примера мой block.tpl.php


<?php
// $id$
?>
<div id="<?php print $block_html_id?>" class="<?php print $classes?>"<?php print $attributes?>>
<?php if ($block->is_bordered_block) : ?>
<div class="block-tl"></div>
<div class="block-tr"></div>
<div class="block-bl"></div>
<div class="block-br"></div>
<div class="block-tc"></div>
<div class="block-bc"></div>
<div class="block-cl"></div>
<div class="block-cr"></div>
<div class="block-cc"></div>
<?php endif; ?>
<div class="block-body">
<?php if ($block->is_title_block && $block->subject) : ?>
<?php 
print render($title_prefix); ?>
<div class="block-header">
<div class="l"></div>
<div class="r"></div>
<div class="header-tag-icon">
<div class="t">
   <h2<?php print $title_attributes?>><?php print $block->subject ?></h2>
</div><!-- /t -->
</div><!-- /header-tag-icon -->
</div><!-- /block-header -->
<?php print render($title_suffix); ?>
<?php 
endif;?>
<div class="block-content">
<?php if ($block->is_bordered_block && $block->subject) : ?>
<div class="block-content-tl"></div>
<div class="block-content-tr"></div>
<div class="block-content-bl"></div>
<div class="block-content-br"></div>
<div class="block-content-tc"></div>
<div class="block-content-bc"></div>
<div class="block-content-cl"></div>
<div class="block-content-cr"></div>
<div class="block-content-cc"></div>
<?php endif; ?>
<div class="block-content-body">
   <div class="content"<?php print $content_attributes?>>
    <?php print $content ?>
  </div>
</div><!-- / block-content-body -->
</div><!-- / block-content -->
</div><!-- /block-body -->
</div>
?>
Аватар пользователя alex_saw alex_saw 28 марта 2011 в 20:39

Эм..что-то не понял...я в друпале новичек..Я знаю что для отделього блока можно задавать сой стиль, например у меня для всех блоков есть block.tpl.php с кодом:


<?php
// $Id: block.tpl.php,v 1.3 2007/08/07 08:39:36 goba Exp $
?>
<div id="<?php print $block_html_id?>" class="<?php print $classes?>"<?php print $attributes?>>
  <?php print render($title_prefix); ?>
<?php 
if ($block->subject): ?>
  <div id="top_left"><?php print $block->subject?></div>
<?php endif;?>
  <?php print render($title_suffix); ?>
  <div class="content"<?php print $content_attributes?>>
    <div id="cen_left"><?php print $content?></div>
  </div>
  <div id="bot_left"></div>
</div>
?>

и например в 6 друпале в своей теме я для верхней навигации делал block-menu-menu-topnav.tpl.php с кодом:

<?php<div id="block-<?php print $block->module .'-'$block->delta?>" class="block block-<?php print $block->module ?>">
<?php if ($block->subject): ?>
  <h2><?php print $block->subject ?></h2>
<?php endif;?>

  <div class="content">
    <?php print $block->content ?>
  </div>
</div>?>

Как же выделить блок контента? Смотрю в исходнике блок div#block-system-main, создал block-system-main.tpl.php и внес в него стандартный код блока из ядра друпала. но контент по прежнему старый...я уже и перепаковывал тему и заново заливал - нифига

Аватар пользователя olk olk 28 марта 2011 в 21:16

Ну в данном случае (если брать чисто шаблонизацию) сработает шаблон block--content.tpl.php , где content - это имя региона для вывода основного контента

Аватар пользователя alex_saw alex_saw 29 марта 2011 в 7:47

Так блин там написано как создавать темы для блоков, а мне просто надо узнать как именно для блока контента!Как назвать для него block-*.tpl.php??

Аватар пользователя olk olk 29 марта 2011 в 9:44

"alex_saw" wrote:

неа, не помогло(

А вы учли что там ДВА прочерка ? ну и надо точно знать машинное имя региона (посмотреть можно в info файлы вашей темы)

Аватар пользователя olk olk 29 марта 2011 в 17:38

"alex_saw" wrote:

Кстати и с двумя черточками не помогло...


Кэш сбрасывали ? имя региона указали верное ?
Покажите инфо файл темы и как вы назвали шаблон ...
Ну и посмотрите в файле template.php вашей темы, не переопределены ли файлы шаблонов ...
обратите внимание на функции ..._preprocess_page, ...preprocess_block

Аватар пользователя alex_saw alex_saw 29 марта 2011 в 19:03

1)у меня template.php вообще нету
2) инфо файл:

;Generated by the Drupal 6 Theme Starter available at http://xtnd.us

name = Andron

description = Тема  ООО "Андроновское"

screenshot = screenshot.png

core = 7.x

engine = phptemplate

version = VERSION

regions[left] = Left sidebar
regions[content] = Content
regions[header] = Header
regions[footer] = Footer
regions[top_nav] = Верхняя навигация

features[] = logo
features[] = name
features[] = primary_links
features[] = secondary_links


stylesheets[all][] = styles.css

Аватар пользователя olk olk 29 марта 2011 в 19:21

Ну и надеюсь шаблон называется block--content.tpl.php и лежит он в папке с вашей темой (и у сервера есть права на чтение этого файла), и его содержимое отличается от block.tpl.php ?

Аватар пользователя parroot parroot 7 июля 2011 в 19:48

Такой же косяк!!!
Пытаюсь темизировать блок-регион, не выходит.

файл инфо:
regions[top_menu] = Top menu
regions[sub_menu] = Sub Menu
regions[page_bottom] = Page bottom
regions[sidebar_first] = Left colum
regions[sidebar_second] = Right colum
regions[search] = Search
regions[footer] = Footer
regions[help] = Help
--------------------------
имена даю нормальные
block--content.tpl.php
block--sidebar_first.tpl.php
block--footer.tpl.php

файл template.php, пуст
и ни чего... содержимое отличается, кеш выключин, хостинг нормальный не бесплатный! была тема о том что это баг... пытался ставить патч, и все равно ни чего не выходит! в чем косяк?

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

Эээ че-то вы ребята мудрите Smile
Шаг №1
Кусок файла info темы

<?php
regions
[header] = Header
regions
[help] = Help
regions
[page_top] = Page top
regions
[page_bottom] = Page bottom
regions
[highlighted] = Highlighted

regions

[featured] = Featured
// ---------------------------
// Внимание сюда !!!!
regions[content] = Content

regions

[sidebar_first] = Sidebar first
regions
[sidebar_second] = Sidebar second

regions

[triptych_first] = Triptych first
regions
[triptych_middle] = Triptych middle
regions
[triptych_last] = Triptych last

regions

[footer_firstcolumn] = Footer first column
regions
[footer_secondcolumn] = Footer second column
regions
[footer_thirdcolumn] = Footer third column
regions
[footer_fourthcolumn] = Footer fourth column
regions
[footer] = Footer
?>

Шаг № 2.
Заходим на страницу настройки блоков (admin/structure/block)
Выставляем content в регион content


ну или на буржуйском языке


Шаг №3.

Копируем из modules/block (или из директории вашей темы если он там есть) файл block.tpl.php в файл block--content.tpl.php, данный фал должен быть в директории (или вложенных поддиректориях вашей темы)

Редактируете данный файл как вам надо.
для примера я вывел просто пару строк текста в самом начале блока.


<?php
print '<h3>Это переопределенный шаблон для региона "Content"<br />';
print 
'block--content.tpl.php</h3>';
?>

<div id="<?php print $block_html_id?>" class="<?php print $classes?>"<?php print $attributes?>>

  <?php print render($title_prefix); ?>
<?php 
if ($block->subject): ?>
  <h2<?php print $title_attributes?>><?php print $block->subject ?></h2>
<?php endif;?>
  <?php print render($title_suffix); ?>

  <div class="content"<?php print $content_attributes?>>
    <?php print $content ?>
  </div>
</div>
?>

Шаг №4.
Идете на страницу "Производительность" (admin/config/development/performance)
Нажимает кнопку "полная очистка кэша"

И ву а ля - получите результат

Аватар пользователя InvDeath InvDeath 8 августа 2011 в 2:38

Не должно быть файлов шаблонов на регион, если используется имя block--MODULE--ID.tpl.php

http://localhost/admin/structure/block/manage/system/navigation/configure
будет имя block--system--navigation.tpl.php . Мучался с этим пока не удалил block--REGION.tpl.php - вместе не работают.