drupal - 在自定义块中,Drupal 7: 自定义模块:显示自定义 contentTypy

  显示原文与译文双语对照的内容

我是 Drupal 7的新员工所以我有一个问题。

我有自己的内容类型作家,包括标题,生活年限,照片,描述等领域。

我有一个任务可以在页面上显示 3个随机作者。 我已经用视图模块完成了它,但是我想自己做。

因此我创建了自己的模块 random_content,如下所示:


<?php

function random_content_help($path, $arg) {
 switch ($path) {
 case"admin/help#random_content":
 return '<p>'. t("Displays random content"). '</p>';
 break;
 } 
}

function random_content_block_info() {
 $blocks['random_content'] = array(
 'info' => t('Random content'), 
 'cache' => DRUPAL_CACHE_PER_ROLE, 
 );
 return $blocks;
}

function random_content_contents() {
 $query = db_select('node', 'n')
 ->fields('n', array('nid', 'title'))
 ->condition('type', 'writers')
 ->orderBy('rand()') 
 ->range(0,3)
 ->execute();
 return $query; 
}

function random_content_block_view($delta = '') {
 switch($delta){
 case 'random_content':
 $block['subject'] = t('Random content');
 if(user_access('access content')) {
 $result = random_content_contents(); 
 $items = array(); 
 foreach ($result as $node){
 $items[] = array(
 'data' => l($node->title, 'node/'. $node->nid). '</br>',
 );
 }
 if (empty($items)) { 
 $block['content'] = t('No data availible.'); 
 } else {
 $block['content'] = theme('item_list', array(
 'items' => $items));
 }
 }
 }
 return $block;
 }

可以看到,我已经学会了向特定内容添加链接。 但如何才能显示完整的信息,包括标题,生活年限,照片和描述?

时间: 原作者:

要显示完整节点或者其中的部分,需要加载节点。 E.g.


$my_node = node_load($nid);

$render_array = array();
$render_array['title'] = array(
 '#type' => 'markup',
 '#markup' => $my_node->title
);
$author = field_get_items('node', $my_node, 'field_author','und'); 
$render_array['author'] = array(
 '#type' => 'markup',
 '#markup' => $author[0]['safe_value']
);

//or as some like to do it

$render_array['author'] = array(
 '#type' => 'markup',
 '#markup' => $my_node->field_author['und'][0]['value']
);
echo drupal_render($render_array);

注意'下'常量表示语言未定义。 如果你对不同语言启用了翻译/语言,不同的语言则必须使用'en','e'等等 用于适当的语言。

你还可以让drupal呈现该节点,然后操作或者检索单个项目。 像这样


$my_node = node_load($nid);
$build = node_view($my_node,'full');
$build['body'][0]['#markup'] = $build['body'][0]['#markup'].' some addition';
$build['field_author'][0]['#markup'] = $build['field_author'][0]['#markup'].' my favorite';

echo drupal_render($build);

使用后一种方法的优点是,整个themeing引擎启动,所有设置为操作内容 等等的钩子,如果你只想要检索不需要的值。

注意,我假设你的作者字段名为 field_author 。 你应该在content编辑窗口for中检查内容类型。

...