在没有整个页面渲染的情况下显示块中的节点

时间:2012-03-06 14:07:58

标签: drupal drupal-7

我创建了一个Block ...并且正在显示一个节点(在其中加载一个节点)。

function my_module_block_info() {
  $blocks = array();
  $blocks['my-block-id'] = array(
    'info' => t('Block Name'),
  );
  return $blocks;
}

function my_module_block_view($delta='') {
  $block = array();
  switch ($delta) {
    case 'my-block-id':
      $block['subject'] = t('Block Name');
      $block['content'] = my_module_contents();
      break;
  }
  return $block;
}

function my_module_contents() {
  return 'iframe width="560" height="315" src="http://localhost/try/node/27" frameborder="0" allowfullscreen /iframe';
}

由于我正在使用iframe,因此它会呈现页面上的所有内容,但我想在块中仅显示NODE内容,我不希望页眉,菜单和页脚出现在块中。

下面是图片,谢谢

enter image description here

更新:

如果我按照下面的代码实现node_view,那么节点会被渲染为一个完整的节点,但只有当你的块在一个节点上时,如果该块在另一个路径上,如果管理员/结构/ nodequeue然后它不起作用,这只能工作。那么我怎样才能在这样的道路上开展这项工作呢?请帮忙

function my_module_contents() {
 return drupal_render(node_view(node_load(27), 'full'));
}

最终解决方案*

以下是有效的代码。谢谢拉克斯曼的帮助

function customvishal_block_info() {
 $blocks = array();
 $blocks['my-block-id'] = array(
'info' => t('Block Name'),
 );
 return $blocks;
 }

 function customvishal_block_view($delta='') {
 $block = array();
 switch ($delta) {
  case 'my-block-id':
  $block['subject'] = t('Block Name');
  $block['content'] = my_module_contents();
  break;
  }
  return $block;
  }

 function my_module_contents() {
 $customvishalfull= drupal_render(node_view(node_load(155), 'full'));

 // print_r($customvishalfull);
 // Example of creating and calling "strike" theme function.
 $output .= '<h2>Custom "strike" theme function</h2>';
 $output .= theme('customvishal_strike', array('string' =>$customvishalfull));


 return $output;

 }





function customvishal_theme() {
 return array(
 'customvishal_strike' => array(
  'variables' => array('string' => array()),
    'template' => 'property',
 ),
 ); 
 }

1 个答案:

答案 0 :(得分:1)

由于您使用的是iframe,因此会按照您的体验加载整个页面。请考虑使用drupal_render()node_load()node_view()来仅显示节点信息。您 可以将my_module_contents()更改为:

function my_module_contents() {
  return drupal_render(node_view(node_load(27), 'full'));
}

您也可以更改“完整”字样。到了预告片&#39;显示节点的预告片。