Вы здесь

Как в menu callback вывести только содержимое ноды?

0

Возможно, это простой вопрос, но я не могу понять, как вернуть тело node без menu . Я сделал модуль, который загружает содержимое node в пользовательскую область.

function loadnode_in_region_menu_alter(&$items) {
  $items['load_node/%'] = array(
    'page callback' => 'loadnode_in_region_node_page_view',
    'page arguments' => array(1),
    'access callback' => 'user_access',
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK,
  );

  return $items;  
}

function loadnode_in_region_node_page_view($nid) {
  $node = node_load($nid, NULL, false);
  $vnode = node_view($node);
  return drupal_render($vnode);
}

Javascript выглядит так:

jQuery.ajax({
    type: 'GET',
    url: Drupal.settings.basePath + 'load_node/' + id,
    dataType: 'html',
    success: function(data){
        jQuery('#ajax-result').html(data);
    },
});

Результат выглядит так, с дублирующимся меню:

Если я меняю строку с

return drupal_render($vnode);

на

echo drupal_render($vnode); OR print drupal_render($vnode);

Результат выглядит так, как мне бы хотелось, но некоторые поля отображаются неправильно, например голосование и изображение. И изображение не открывается в Lightbox.

Можно ли вернуть тело ноды без меню?

Версия Drupal: 
7.x
Категория: 
Node API
Вопрос задан 11.03.2017 - 10:38

Ответы