Drupal 7
Вывести блок полностью с заголовком и контекстными ссылками:
$block = block_load($module_name, $block_delta);
$blocks = _block_render_blocks(array($block));
$blocks_build = _block_get_renderable_array($blocks);
echo drupal_render($blocks_build);
Вывести только контент блока:
$block = block_load($module_name, $block_delta);
$blocks = _block_render_blocks(array($block));
$blocks_build = _block_get_renderable_array($blocks);
unset($blocks_build[$module_name . '_' . $block_delta]['#theme_wrappers']);
echo drupal_render($blocks_build);
Drupal 6
$block = module_invoke($module_name, 'block', 'view', $block_delta);
echo $block['content'];
Где $module_name
это имя модуля, в котором определён блок, а $block_delta
— номер блока. Эти параметры можно посмотреть в адресной строке при настройке блока (скриншот).
Пример вывода содержимого блока с идентификатором 6
, созданного из админки (admin/build/block/add
):
$block = module_invoke('block', 'block', 'view', 6);
echo $block['content'];
Вывод блока "Сейчас на сайте":
$block = module_invoke('user', 'block', 'view', 3);
echo $block['content'];
Вывод блока "Основное меню":
$block = module_invoke('menu', 'block', 'view', 'primary-links');
echo $block['content'];
Написанное актуально для
Drupal 6, Drupal 7
Комментарии
Почему-то все модули отличный от block возвращают помимо содержимого блока и заголовок, а block - нет (может только у меня, но в недрах кода самого модуля вроде тоже упоминается только содержимое)
Добавлю от себя капельку света:
Для того, чтобы вывести программно блок, созданный модулем, код будет таким:
К примеру, выводя блок, созданный модулем views - similar by terms, пишем такой код:
(название блока смотрим таким же образом
Спасибо, то что нужно!
Может вы сможете дать мне совет.
Сделала блок программно: выборка из базы данных изображений ноды и столкнулась с такой проблемой - на части страниц блок работает, на части только альтернативный текст изображений. Код следующий:
<?php
while ($date = db_fetch_object($query_result)) {
$imgpath = $date->filepath;
$img_tag = "";
$block_content.=$img_tag;
}// end while
?>
Права доступа проверила, фильтры тоже, а в чем проблема, не пойму.
url()
Стоит модуль "Popup" который показывает блок с "webform".
если я задаю:
<?php $block = module_invoke('webform', 'block_view', 'client-block-999');
echo render($block['content']); ?>
то выводится сама форма а не ссылка при нажатии на которую должна появиться форма.
Подскажите что прописать чтобы отображалась именно ссылка модуля "Popup".
з.ы. Блок с формой настроен именно на отображение с помощью Popup.
А кэширование при программном выводе работает?
Мне кажется вот так "правильнее" в D7 блоки выводить:
он и с кэшем будет и с Contextual links
А можно ли в D7 подобным образом вывести в содержимом блоком форму добавления ноды? /node/add/blog к примеру
@Сергей http://xandeadx.ru/blog/drupal/247
Хотел бы рассказать про модуль context - пользуются им многие аж 184 тыс. У вас на сайте про него я ни чего не нашел, может плохо искал ;-)
Пишу про него на этой странице, так как он, например, может вывести блок в разных местах в зависимости от условий. Мне вот понадобилось вывести блок в левой колонке на всех страницах, кроме главной, а на главной в нём написал быстро условие и вывел в другой области. Без php и удобно.
По поводу модуля "Popup" который показывает блок с "webform".
вывел вот так:
Спасибо webpavilion!
Коммент http://xandeadx.ru/blog/drupal/133#comment-9210
никак не мог вывести стандартный блок search так, как выводит сам Drupal при добавлении блока в регион через UI
Спасибо Krio.in выручил, знать бы как работает?
Ребята а как в 8 версии это сделать?
Так по той же ссылке есть информация:
https://www.drupal.org/node/26502
А так же тут, через twig можно вроде бы тоже :)
https://www.drupal.org/docs/8/modules/twig-tweak/cheat-sheet-8x-2x
Может кто подскажет по 8-9.
Не могу найти как рендерить блок в my_theme.theme ? Уже закипел :(
В Твиге понятно:
ставим модуль twig tweak и
- без подхватывания файла темы - {{ drupal_entity('block_content', 1) }}
- чтобы через файл темы прогнать {{ drupal_block('block_content:UUID') }}
В файле .theme
- без подхватывания
- через файл ....???
https://git.drupalcode.org/project/twig_tweak/-/blob/3.x/src/View/Block…
Спасибо за наводку!
Если правильно понял, минимальный "набор" для вывода выглядит так:
кто-нибудь подскажет как вывести блок с раскрытым фильтром views с аргументами?
без самого представления. вывести нужно только сам фильтр. Заранее спасибо.
Добавить комментарий