输出用户头像

论坛: 

在 管理 - 配置 - 图像样式 中创建新样式:max-32-32


要输出一个用户头像,那应该怎么做呢?打开/sites/all/themes/你的主题文件夹/templates/page.tpl.php,在你想添加用户头像的地方输入以下代码:

<?php
    global $user;    
    $account = user_load($user->uid);
    if($account->picture!=null){
      $picture = $account->picture->uri;}
    else{$picture = variable_get('user_picture_default'); }
      $userimg_ico = 
image_style_url('max-32-32',$picture);
?>
<img src="
<?php echo $userimg_ico; ?>/>

这个代码是非常典型的用户数据获取代码,大家一定要学一学哦,这里我简单地解说一下:

global $user;意思就是引用全局的用户变量,变量里最关键的一个数据就是用户编号,这个编号是唯一的。

$account = user_load($user->uid);这句的意思就是通过用用户的UID获取的用户数据,里面包含有许多用户资料,例如头像地址、用户名、注册日期等等。

    if($account->picture!=null){
      $picture = $account->picture->uri;}
    else{$picture = variable_get('user_picture_default'); }

这段的意思就是获取用户头像的URI地址(注意,这是URI,不是URL,这种地址一般以public://或者private://开头,这是Drupal内部地址)。另外,这里有一个判断,就是如果获取不到用户上传的头像就使用网站的默认头像。variable_get('user_picture_default')就是用于获取用户的默认头像语句。

最后那句:$userimg_ico = image_style_url('max-32-32',$picture);很显然就是真正获取头像URL的语句,这个函数很简单,image_style_url(图像样式,URI地址),最后$userimg_ico就是用户头像的地址哦。

如果要显示一个头像就这样:<img src="<?php echo $userimg_ico; ?>/>,是不是很简单呀。

1:例如输出这个上面的产品图片,例如上图最左边这个产品的node是17,我的代码是
<?php 
$content = node_view(node_load(17), 'full'); 
print render($content['field_product_image']);
 ?>
但是这样的话,输出来图片多了一个标题字段image:,如下图,然后通过覆写field.tpl.php解决了。
2:输出产品标题,我是这样写的
<?php
$content = node_view(node_load(17), 'full');
$object=(array)$content['body']['#object'];
echo $object['title'];
?>
3:输出内容简介,我是这样写的,先找到文章内容,然后用substr截取。
<?php
$content = node_view(node_load(17), 'full');
$object=(array)$content['body']['#object'];
$str = $object['body'][und][0]['value'];
$sumary = substr($str ,0,120); 
echo $sumary."...";
?>
问drupal群,大家都说不管什么办法,不择手段,只要达到目的就行。
dashan 答复于