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

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

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

Комментарии

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

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

6 сентября 2007 в 0:07

Спасибо за ответы.
Врубился наконецто:
<?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'];
?>

14 октября 2007 в 15:52

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

17 октября 2007 в 15:11

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

2 ноября 2007 в 12:18

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

5 января 2008 в 0:17

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

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

6 января 2008 в 16:31

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

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

13 января 2008 в 19:03

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

13 января 2008 в 21:21

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

13 января 2008 в 22:58

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

6 августа 2010 в 17:17
<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

26 августа 2010 в 20:47