Как програмно вывести блок?

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

Аватар пользователя Dimm Dimm 5 сентября 2007 в 22:19

Подскажите пожалуйста:
Как програмно вывести блок?
Нужно вывести блок "Вход для пользователей" в произвольном месте страницы.
Пока вывожу с помощью отдельно созданного для этого дела региона, но хочется вызвать блок программно, не плодя лишние сущности.

Комментарии

Аватар пользователя alexweb alexweb 6 сентября 2007 в 0:07

<?php
$block = module_invoke('views', 'block', 'view', 'popular_alltime');
print $block['content'];
?>

Дальше смотреть в документацию по module_invoke и по block_block

Аватар пользователя Dimm Dimm 14 октября 2007 в 15:52

Спасибо за ответы.
Врубился наконецто:
<?php
$block = module_invoke('имямодуля', 'block', 'view', идентификатор);
print $block['content'];
?>
Например:
Программный вывод Блока навигации:
<?php
$block = module_invoke('user', 'block', 'view', 1);
print $block['content'];
?>
Программный вывод Блока Вход для пользователей:
<?php
$block = module_invoke('user', 'block', 'view', 0);
print $block['content'];
?>
Программный вывод Блока Меню:
<?php
$block = module_invoke('menu', 'block', 'view', меню_id);
print $block['content'];
?>

Аватар пользователя Dimm Dimm 17 октября 2007 в 15:11

Подскажите еще пожалуйста:
Как теперь этот блок оформить в соответстсии с текущей темой?
theme_block($block);-не работает
<?php
$block = module_invoke('views', 'block', 'view', 'popular_alltime');
theme_block($block);-не работает
?>

Аватар пользователя muxoh muxoh 2 ноября 2007 в 12:18

<?php
$block = module_invoke('имямодуля', 'block', 'view', идентификатор);
print $block['content'];
?>
А что надо подставлять в эту запись, чтобы вывести блок, созданный в Administer-> Site building -> Blocks ?
Скажем, создался блок с делта 5.

Аватар пользователя alekseykhrebtov alekseykhrebtov 5 января 2008 в 0:17

Вот есть блок входа на сайт (поля: логин, пароль) как мне сделать так, что бы он находился в верхнем правом углу страницы?

Аватар пользователя alekseykhrebtov alekseykhrebtov 6 января 2008 в 16:31

Бьюсь, бьюсь, а ничего не получается.
Что я делаю:
в огнелисе с помощью fairbug навожу на данный блок, тыкаю, что б запомнил. Перехожу во вкладку CSS и что бы я не делал - ничего не происходит.
Думал это из-за того, что загаловок(таблицы(таблицы ли?) имя сайта и лого сайта) у данной темы (aberdeen) на всю ширину, но когда я изменю ширину (с помощью того же фаербага) путем редактирования её во вкладке layout, снова ничего не происходит.
Что я делаю не так?

И еще вопрос:
как я понимаю, основые файлы у каждой темы:
style.css и все остальные с расширением .php
Но вот что конкретно редактируется в каждом из этих файлов?

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 13 января 2008 в 19:03

Вот есть блок входа на сайт (поля: логин, пароль) как мне сделать так, что бы он находился в верхнем правом углу страницы?
Блоки располагаются в т.н. "регионах" (места, где их разрешается размещать). Обычно это правая, левая колонки, шапка, подвал сайта и область контента. Если в вашей теме оформления есть регион, расположенный в "верхнем правом углу", то укажите в настройках блока, чтобы он там появился.
Если нет - то вам придется модифицировать шаблон темы - файл page.tpl.php, чтобы поместить регион, куда вам нужно.

Другой вариант - см. http://setegnom.com/node/544

Аватар пользователя alekseykhrebtov alekseykhrebtov 13 января 2008 в 21:21

Если в вашей теме оформления есть регион, расположенный в "верхнем правом углу", то укажите в настройках блока, чтобы он там появился.
Если нет - то вам придется модифицировать шаблон темы - файл page.tpl.php, чтобы поместить регион, куда вам нужно.
\\
Если я правильно понял, то само существование региона задается в page.tpl.php, а его месторасположение в style.css, я на верном пути? )
Т.е. что бы расположить блок в правый верхний угол мне надо создать регион header и указать в style.css его место?
Но в моей теме (bluebreeze) регион header, в котором находятся имя сайта, лого, девиз первичные и второстепеные линки, уже есть(если, опять же, я все понимаю правильно).
Следовательно, мне нужно в регионе header создать новые регион, который в style.css расположить там, где мне нужно?

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 13 января 2008 в 22:58

Нет, не совсем так. CSS отвечает за оформление вашего блока.
Если в вашем шаблоне нет региона, который размещен там, куда вы хотите потом помещать блоки, то вам необходимо создать такой регион (назовите как хотите).

Аватар пользователя moroz6600 moroz6600 6 августа 2010 в 17:17

Здравствуйте. Возник вопрос -
функция print $block['content'] выводит само тело блока. А как заставить выводить всю структуру блока - вместе с названием блока?

Аватар пользователя Алексей Дёмин Алексей Дёмин 26 августа 2010 в 20:47
<div id="block-<?php print $block->module .'-'. $block->delta; ?>" class="clear-block block block-<?php print $block->module ?>">
    <div class="block-up">
        <?php if (!empty($block->subject)): ?>
            <div class="block-subj"><?php print $block->subject ?></div>
        <?php endif;?>
    </div>
    <div class="content"><?php print $block->content ?></div>
    <div class="block-down"></div>
</div>

подробнее здесь http://content-management-systems.info/drupal/api/6/file/block.tpl.php