Drupal 7 开发内部培训资料, 分头诗人

如何定制用户页面

赞成!
0
否决!

我想定制用户页面:用户的页面上显示用户发表的信息,匿名用户访问某个用户的页面如(/users/admin)时能显示admin发表过的信息列表。 

由于在用户页面上放的内容比较多,我写了一个模块,模块中建立区块,把区块放到/users/admin 的页面上去。 但是只有管理员才能看到提取在用户页面的区块的内容,登录用户偶尔也能看到,偶尔不能看到,匿名用户看不到(能看见区块的标题,不能看见区块里的内容 。) 

我在user-profile.tpl.php 里面放了:

<?php
$account_id = arg(1);
global $account;
$account = user_load($account_id);
?>

 

模块中建立区块如下:

<?php
//$Id$
function user_home_block($op='list', $delta=0, $edit=array()) {
global $account;
if ($op == 'list') {
$blocks[0]['info'] = t('精品线路');
$blocks[1]['info'] = t('基本信息');
$blocks[2]['info'] = t('用户幻灯片');
$blocks[3]['info'] = t('特价线路');
return $blocks;
}
//显示内容
else if($op == 'view') {

$block = array();

switch ($delta) {
case 0:
if (user_access(t('access content'))) {
$accountid = $account->uid;
$result = db_query_range("SELECT node.nid AS nid, node.title AS node_title FROM node node  LEFT JOIN content_type_lvxingshe node_data_field_jingpin ON node.vid = node_data_field_jingpin.vid WHERE (node.type in ('lvxingshe')) AND ((node_data_field_jingpin.field_jingpin_value) = ('是')) AND (node.status = 1) AND (node.uid = %d)",$accountid,0,6);
while($nid2 = db_fetch_object($result)) {
   $node2 = node_load($nid2->nid);
   $title = $node2->title;
   $path = $node2->path;
   $slen = strlen($title);
   if($slen > 16 ){
   $title = truncate_utf8($title,16,FALSE,FALSE);
   $title .="....";
   }
     $list .= '<li>'.l($title,$path,array('attributes' => array('title' => $title,))).'</li>';
}
}
$block['subject'] = t('精品线路');
$block['content'] = '<ul class="jpxl-userhome">'.$list.'</ul>';
break;

 

“精品线路”匿名用户也可以被看见,content的内容看不见, 但是content的内容 管理员(drupal的第一个用户)看得到。

1 个回答

赞成!
0
否决!

具体详情不太了解你的做法,你可以试一下 猪跑啦 的用户界面做法

通过module_invoke()实现在用户主页输出该用户添加的node。