• урок
  • pantey

Список переменных для создания block.tpl.php

25.06.2012

Файл «Block.tpl.php» - отвечает за вывод блоков на сайте и он не является обязательным при создании шаблона, но тем не менее присутствует практически всегда. Благодаря этому файлу, все блоки, которые мы будем выводить в каком либо регионе, будут принимать общее для всех значение и применяемые стили. (Замечу, что в Drupal есть возможность темизации каждого блока отдельно, т.е. каждый блок будет выглядеть по разному, этот момент мы разберём чуть ниже в статье) Например у меня на сайте файл «Block.tpl.php» представлен вот в таком варианте:


Список доступных переменных для файла «Block.tpl.php»:

  • $block->subject – заголовок (название) блока
  • $content - содержимое блока
  • $block->module - название модуля, с помощью которого был создан блок.
  • $block->delta – id блока (является уникальным)
  • $block->region - название региона, в котором выводится блок
  • $block_zebra - вывод класса 'odd' или 'even' в зависимости от чётности блока внутри региона
  • $zebra добавляет класс 'odd' или 'even' в зависимости от чётности блока, но теперь считается не от начала блока, а глобально
  • $block_id - показывает уникальный идентификатор блока внутри региона
  • $id - показывает глобальный уникальный идентификатор блока
  • $is_front - возвращает "ИСТИНА", если блок находится на главной странице
  • $logged_in - возвращает "ИСТИНА", если пользователь авторизован
  • $is_admin - возвращает "ИСТИНА", если пользователь – является администратором

Для того, что бы переопределить вывод конкретного блока, можно воспользоваться шаблонами, например блок с ссылками пользователя должен принимать вид:

  1. block--user.tpl.php

Для темизации блоков конкретного региона, необходимо использовать шаблон вида:

  1. block--название региона.tpl.php

Для темизации конкретного блока, необходимо использовать шаблон:

  1. block--block--id_блока.tpl.php

Для темизации блоков, создаваемые модулями шаблон примет вид:

  1. block--название_модуля.tpl.php

Не забываем при этом чистить кеш сайта.

-->
Узнавай о новых статьях сайта - первым. Просто подпишись на рассылку.

Комментарии (15)

Profile picture for user 1541
Евгений
24.05.2013

При создании нового документа block.tpl.php все содержимое сайта куда то девается, остается только шапка, и содержимое block.tpl.php. Как исправить?

Profile picture for user pantey
pantey
24.05.2013

Так так и должно быть, данным файлом вы переопределили вывод всех блоков на сайте. Вывод контента в 7м Drupale так же происходит через блоки. поэтому вам необходимо использовать еще название блока, который хотите переопределить.

Profile picture for user 1541
Евгений
24.05.2013

спасибо огромное!) а то долго искал и ничего не нашел

Profile picture for user 1541
Евгений
24.05.2013

при очистке кеша выдает кучу таких ошибок:
Warning: include(Z:\home\tehnology.ua\www/sites/all/themes/tehnology/block.tpl.php) [function.include]: failed to open stream: No such file or directory in theme_render_template() (line 1505 of Z:\home\tehnology.ua\www\includes\theme.inc).
Warning: include() [function.include]: Failed opening 'Z:\home\tehnology.ua\www/sites/all/themes/tehnology/block.tpl.php' for inclusion (include_path='.;C:\php\pear') in theme_render_template() (line 1505 of Z:\home\tehnology.ua\www\includes\theme.inc).
Warning: include(Z:\home\tehnology.ua\www/sites/all/themes/tehnology/block.tpl.php) [function.include]: failed to open stream: No such file or directory in theme_render_template() (line 1505 of Z:\home\tehnology.ua\www\includes\theme.inc).
Warning: include() [function.include]: Failed opening 'Z:\home\tehnology.ua\www/sites/all/themes/tehnology/block.tpl.php' for inclusion (include_path='.;C:\php\pear') in theme_render_template() (line 1505 of Z:\home\tehnology.ua\www\includes\theme.inc).

Profile picture for user 1541
Евгений
25.05.2013

еще проблема: не ывобит содержимое блоков, а только заголовки.

print $block->subject ?>
1111 print $block->content ?>
Profile picture for user 1541
Евгений
25.05.2013
stdClass Object
(
    [bid] => 43
    [module] => system
    [delta] => navigation
    [theme] => tehnology
    [status] => 1
    [weight] => -5
    [region] => siedbar
    [custom] => 0
    [visibility] => 0
    [pages] => 
    [title] => 
    [cache] => -1
    [subject] => Навигация
)
content вообще не наблюдаю тут
Profile picture for user 1541
Евгений
25.05.2013

Решил проблему. Кому интересно нужно выводить не $block->content а просто $content

Profile picture for user pantey
pantey
25.05.2013

спасиб, поправил в статье.

Profile picture for user 1541
Иван
13.12.2013

мы разберём чуть ниже в стаье (поправь опечатку)

Profile picture for user 1541
Согдиана
17.06.2014

Здравствуйте.
Вы можете подсказать какие переменные использовать для вывода данных импортированных через модуль aggregator в блоках.
Я создала в папке шаблона файл block--aggregator.tpl.php.
Дело в том, что с помощью модуля aggregator я импортирую данные со ссылкой на другой ресурс. Но ссылка выводится без rel="nofollow". Хочу добавить rel="nofollow" к ссылкам, которые выводятся в блоке aggregator в моем сайте.
Вместо этого кода

, какой код мне использовать в файле block--aggregator.tpl.php чтобы ссылки стали nofollow?

Profile picture for user 1541
Согдиана
18.06.2014

Павел, порекомендуйте пожалуйста какой нибудь ресурс, где я могу получить ответ на мой вопрос. Вопрос очень важный, поэтому я должна найти ответ на него. Спасибо.

Profile picture for user pantey
pantey
18.06.2014

ресурс только один - drupal.org. А здесь по вашему вопросу

Profile picture for user 1541
Дмитрий
17.11.2014

Доброго времени суток!

Такая проблема: не могу переопределить заголовок блока!

Есть файл block.tpl.php c содержимым:

subject): ?>
          <h3 class="block_title"><?php print $block->subject ?></h3>
        <?php endif; ?>
<?php print $content ?>

Есть вьюха под названием "additional_goods_output".
Создаю файл с названием "views-view--additional-goods-output.tpl.php" с содержимым:

<div class="under-content-block">
    <?php if ($title): ?>
        <h2 class="under-content-block-title">
            <?php print $title ?>
        </h2>
    <?php endif; ?>

    <div class="content horizontal-images">
        <div class="under-content-block-content">
            <ul>
                <?php if ($rows): ?>
                    <?php print $rows; ?>
                <?php endif; ?>
            </ul>
        </div>
    </div>
</div>

В итоге получаю следующее, - Заголовок блока выводится в

из файла block.tpl.php, а контент из переменной $rows из файла "views-view--additional-goods-output.tpl.php".

Не могу понять в чем дело...

Profile picture for user 1541
Дмитрий
17.11.2014

Извиняюсь за кривой коммент.

То есть заголовок выводится как указано в файле block.tpl.php.

Profile picture for user 1541
Дмитрий
17.11.2014

Здравствуйте!

Проблема следующего характера: не могу переопределить вывод заголовка блока, созданного во views. Какой бы файл не создавал, предлагаемый во views в "Информация темизации", все равно заголовок выводтся как определено в файле block.tpl.php.

Пытаюсь темизировать одним файлом блоки одной вьюхи.