Вед-дев, Сео, Манимейкинг

Программный вывод блока в Drupal 7

В Drupal 7 программный вывод блоков в tpl.php файлы можно осуществлять несколькими способами:

block_load()

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

$block = block_load($module, $delta);
$block_content = _block_get_renderable_array(_block_render_blocks(array($block)));
print render($block_content);

Где $module - название модуля, например views, а $delta - название или ID блока (где смотреть дельту, смотрите на изображении ниже):

Программный вывод блкоа в Drupal 7

qwe-block - это и есть дельта, так и впысываем её.

Данный метод полностью выводит блок с заголовком и всем HTML в придачу.

block_custom_block_get($bid)

Выводит кастомные блоки, т.е. блоки созданные нами.

$block = block_custom_block_get(1);
$content = $block['body'];

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

Выбор за вами :)



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

Для views можно так:
<?php echo views_embed_view('my_reviews', $display_id = 'default'); ?>
id вашей вьюшки: my_reviews ()можно узнать ид при экспорте вьюхи, там вся инфа
$display_id = 'default' это id дисплея, его тоже при экспорте можно найти

Да, можно. Но это выведет чисто содержимое, без заголовка врапперов и прочее.

Ага но иногда только это и нужно)
ЗЫ кнопка наверх супер, не промажешь!)

А как же вывести блок simplenews:
'admin/structure/block/manage/simplenews/584/configure'
То есть получается $block =block_load('simplenews',548);
Но не работает

$block = block_load('simplenews', 548);
- render прописать не забыл?

неа

В каком шаблоне выводишь?

page.tpl.php

Только что проверял в page.tpl.php и в node.tpl.php - всё работает. $delta у тебя 548 - не слишком большая?) Ошибок нет в синтаксисе? Кеширование страниц не включено?

тю, как оказалось я ввел не правильную дельту, я ее писал по памяти не копировал поэтому перепутал числа...
на самом деле то дельта "584", сейчас все прекрасно выводится, спасибо за советы!

А как бы проверить блок (вьюху) если она что то выводит то...

Не совсем понял вопроса) Выведи его в обычный регион или кодом)

Ага так и сделал)

$block = block_load($user, $online);
$block_content = _block_get_renderable_array(_block_render_blocks(array($block)));
print render($block_content);

ни фига не работает, подскажите в чем дело, вставил в node.tpl. Ошибка Notice: Undefined variable: system в функции include() (строка 101 в файле

все, понял, хоть иногда надо думать :)

Подписаться

Подписка на RSS-лента последние записи из Блога

Комменты

  • Olzhas 6 месяцев 1 неделя назад
    Спасибо. С Новым Годом! 
  • Den 7 месяцев 3 дня назад
    В первой функции, при создании переменной $li_previous нужно поменять '←' с NULL, в $li_next сделать тоже самое. 
  • Гость 7 месяцев 3 дня назад
    Если все ровно так как было описано, то нет никаких сомнений что домен увел сам регистратор. Потому что вероятность того 
  • Валерий 8 месяцев 2 дня назад
    да можно делать импорт-экспорт только лишь в оболочке на входя на mysql сервер 
  • admin 8 месяцев 3 дня назад
    Валерий, а зачем вам именно так делать экспорт? Если я не ошибаюсь, то там нет какой-либо команды чтобы сделать экспорт 
  • Валерий 8 месяцев 4 дня назад
    захожу на mysql через ssh по команде  
  • admin 8 месяцев 5 дней назад
    Добрый вечер, какой у вас клиент? 
  • Валерий 8 месяцев 6 дней назад
    Здравстуйте, есть команда чтобы сделать экспорт базы внутри mysql клиента? 
  • Eduard 8 месяцев 2 недели назад
    Видать, домен хороший был. Заявление пробывали писать на мошенника? 
  • Stas 10 месяцев 2 дня назад
    Ошибка в ключе квантификатора - replace(/будешь|пить/ig, "хлеб"); Указать -g для прохода по всем совпадениям!