Как стать автором
Обновить

Переместить breadcrumb из zone-content в region-content (Omega, Drupal 7)

По-умолчанию breadcrumb в Омеге находятся в zone-content, что не совсем удобно для юзера. Точнее говоря, проблема не заметна, если левый сайдбар пустой, и становится очевидной, если в нем разместить какие-нибудь блоки. Эта статья расскажет о том, как перенести крошки в вашей субтеме, сделанной из стартеркита Омеги. Допустим, она (субтема) носит название yousubtheme.

Итак, чтобы перенести «крошки», следует выполнить всего несколько шагов:

1. Переносим дефолтные файлы zone--content.tpl.php и region--content.tpl.php в директорию /templates.

2. Из файла zone--content.tpl.php вырезаем код

<?php if ($breadcrumb): ?>
<?php print $breadcrumb; ?>
<?php endif; ?>


и переносим его в файл region--content.tpl.php

В zone--content.tpl.php остается код:
<?php if ($wrapper): ?><div<?php print $attributes; ?>><?php endif; ?>  
  <div<?php print $content_attributes; ?>>    
    <?php print $content; ?>
  </div>
<?php if ($wrapper): ?></div><?php endif; ?>


3. При этом region--content.tpl.php приобретает следующий вид:

<div<?php print $attributes; ?>>
  <div<?php print $content_attributes; ?>>
     <?php if ($breadcrumb): ?>
      <div id="breadcrumb" class="block"><?php print $breadcrumb; ?></div>
     <?php endif; ?>  
    <a id="main-content"></a>
    <?php print render($title_prefix); ?>
    <?php if ($title): ?>
    <?php if ($title_hidden): ?><div class="element-invisible"><?php endif; ?>
    <h1 class="title" id="page-title"><?php print $title; ?></h1>
    <?php if ($title_hidden): ?></div><?php endif; ?>
    <?php endif; ?>
    <?php print render($title_suffix); ?>
    <?php if ($tabs && !empty($tabs['#primary'])): ?><div class="tabs clearfix"><?php print render($tabs); ?></div><?php endif; ?>
    <?php if ($action_links): ?><ul class="action-links"><?php print render($action_links); ?></ul><?php endif; ?>
    <?php print $content; ?>
    <?php if ($feed_icons): ?><div class="feed-icon clearfix"><?php print $feed_icons; ?></div><?php endif; ?>
  </div>
</div>


4. Затем в файл template.php добавляем код:

function yousubtheme_alpha_preprocess_region(&$vars) {
  $theme = alpha_get_theme();

  if ($vars['elements']['#region'] == 'content') {
    $vars['breadcrumb'] = $theme->page['breadcrumb'];
  }
}


5. После чего в субтеме создаем директорию и файл preprocess/preprocess-region.inc

и вставляем в него код

function yousubtheme_alpha_preprocess_region(&$vars) {
  $theme = alpha_get_theme();

  if ($vars['elements']['#region'] == 'content') {
    $vars['breadcrumb'] = $theme->page['breadcrumb'];
  }
}


6. Важно! Не забудьте поменять yousubtheme на название вашей субтемы.

7. Смотрим результат.

8. Если вы занимаетесь скрещиванием Omega + Bootstrap по рецепту habrahabr.ru/post/172585, то эффективнее будет проделать все манипуляции не в финальной субтеме, а в omega_bootstrap.

9. Также благодарности:
www.webbykat.com/2012/09/moving-breadcrumbs-zone-content-region-content-omega-drupal-7
friendlymachine.net/posts/drupal-7-theming-practical-example
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.