Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Создание региона в ноде Друпал 6

Создание региона в ноде Друпал 6
, by

Доброго времени суток, не получается создать регион в ноде, прошу Вашей помощи Джедаи Дру =) Много гуглил, ответ везде одинаковый, нужно добавить функцию 

function Имя_preprocess_node(&$vars, $hook) {

$vars['имя_региона'] = theme('blocks', 'имя_региона');
}

 

По логике все должно работать, но сервак после добавления громким басом кричит, что у меня уже есть похожая функция и не удается переопределить. Ругается на эту функцию:

 

function W_preprocess_node(&$vars) {

$vars['template_files'] = array();

$vars['template_files'][] = 'node';

 if (drupal_is_front_page()) {

 $vars['template_files'][] = 'node-front';

 }

if ($vars['page']) {

 $vars['template_files'][] = 'node-page';

 $vars['template_files'][] = 'node-'.$vars['node']->type.'-page';

 $vars['template_files'][] = 'node-'.$vars['node']->nid.'-page';

 } else {

 $vars['template_files'][] = 'node-'.$vars['node']->type;

 $vars['template_files'][] = 'node-'.$vars['node']->nid;

 if ($vars['teaser']) {

   $vars['template_files'][] = 'node-'.$vars['node']->type.'-teaser';

   $vars['template_files'][] = 'node-'.$vars['node']->nid.'-teaser';

 }

 }

}

 

Что делать? Как все таки создать регион в ноде :)

1 answer
votes: 1078
Answer

Я не думаю, что это хорошая идея, если хотите вставить блок в шаблон ноды, то вставляйте напрямую через module_invoke():

Вставка блока в любой шаблон (drupal insert block into template)


Спасибо большое за ответ, но чтото у меня не получается... Дело в том что я установил модуль перелистывания новостей, то есть находясь в одной новости можно нажать кнопку следующая новость и предыдущая. Блок создается модулем. Его параметры я прочитал в адресной строке "/admin/build/block/configure/prev_next/0" и соответственно у меня получился такой код:

 

$block = module_invoke('block''block''view', 0);

print $block['content'];

 

я и такой делал 

 

$block = module_invoke('views''block''view', 'prev_next-0');

print $block['content'];

 

Короче я всякие варианты перебирал, в результате почти всего выводиться слово "нет" =) Я так понимаю это означает что блока нет :)

Что делать в этом случае?

 


Попробуйте использовать views_get_view с аргументами:

When theming Drupal and wanting to output a view there are occasions where using a view display (e.g. a page, or a block - perhaps placed within a custom region ;-) ), or using Views Attach will not suffice.

Instead, you can embed a view using the following PHP snippet:
(NOTE: you'll need to have the core PHP input filter enabled if embedding in a node body)

  1. <?php
  2. $view =views_get_view('VIEWNAME');
  3. print$view->preview('default');
  4. ?>

or, if you need to use an argument with the view:

  1. <?php
  2. $args = array(ARGUMENTS);
  3. $view =views_get_view('VIEWNAME');
  4. print$view->preview('default',$args);
  5. ?>

NOTE:

  • replace VIEWNAME with your actual view name - e.g. 'my_drupal_posts'
  • replace ARGUMENTS with the argument(s) your view is expecting - e.g. this may be a node id

The PHP snippets above will output your view's 'default' display. However, you can output other displays from your view (if your view has multiple displays) - e.g. to output a view's first block display you'd modify the snippet by replacing the Views display id 'default' with 'block_1' and use:

  1. <?php
  2. $args = array(ARGUMENTS);
  3. $view =views_get_view('VIEWNAME');
  4. print$view->preview('block_1',$args);
  5. ?>

Access checking:

NOTE: Some views require access checking (e.g. views which should only be accessed by certain roles). The implementations above do not include access checking. If your view requires access checking please see the comment discussion (particularly comments #1, #3, and #4) for examples of modified/alternative code.