找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2280|回复: 0

[分享] 织梦dedecms内容页如何调用作者头像和其他信息

[复制链接]
发表于 2018-8-3 14:43:06 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
在织梦CMS v5.7 中打开官方默认模板article_artcile.htm,我们可以提取调用文章所属会员信息标签的代码
  1. {dede:memberinfos}
  2. 会员头像:<a href=”[field:spaceurl /]“ class=”userface”><img src=”[field:face/]“ width=”52″ height=”52″ /></a>
  3. 会员用户名:<a href=’[field:spaceurl /]‘ class=”username”>[field:uname/]</a>
  4. 会员详细资料:<a href=”[field:spaceurl /]“ class=”useract-vi”>查看详细资料</a>
  5. 给他留言:<a href=”[field:spaceurl /]&action=guestbook” class=”useract-pm”>发送留言</a>
  6. 加为好友:<a href=”[field:spaceurl /]&action=newfriend” class=”useract-af”>加为好友</a>
  7. 用户等级:[field:rankname /]
  8. 注册时间:[field:jointime&#160;function="MyDate('Y-m-d H:m',@me)"/]
  9. 最后登录:[field:logintime&#160;function="MyDate('Y-m-d H:m',@me)"/]
  10. {/dede:memberinfos}
复制代码


用户信息(memberinfos) 用户信息标签的适用范围是全局使用,之所以把它归档到内容页来讲,是因为这个标签在内容页的使用更加普遍。 该标签是属于有底层模板的调用标签,它有且只有一个参数 mid = '1' 指定要获取的用户ID 如果在文档阅读页,该参数为空的话,那么就默认指定该文档的发布者会员ID,通常用来调用“发布者资料”类似功能。其完整代码为:

  1. {dede:memberinfos} 昵称:[field:uname/] {/dede:memberinfos}
复制代码


底层模板的取值范围是:dede_member所有字段及spacename(空间名称)、sign(用户签名)
5.1版本:
1.在内容页加 如下代码:
本文作者:{dede:memberinfo /}
2.然后找到include/inc_archives_view.php 把原来的添加如下的代码
5.3版本:
1.在内容页加 如下代码:
本文作者:{dede:memberinfo /}
2.然后找到include/arc.archives.class.php 把原来的添加如下的代码
  1. //----------------------
  2. //获得本文的投稿作者信息
  3. //----------------------
  4. function&#160;GetMemberInfo()
  5. {
  6. if(!isset($this->MemberInfos['ID'])){
  7. if($this->Fields['memberID']==0)&#160;return&#160;'';
  8. else{
  9. $this->MemberInfos = $this->dsql->GetOne("Select ID,userid,uname,spacename,spaceimage From dede_member where ID='{$this->Fields['memberID']}' ");
  10. }
  11. }
  12. if(!isset($this->MemberInfos['ID']))&#160;return&#160;"";
  13. else{
  14. $minfo =&#160;"<a href='/member/index.php?uid=".$this->MemberInfos['userid']."&action=memberinfo'>";
  15. $minfo .= $this->MemberInfos['uname']."</font></a>\r\n";
  16. $minfo .=&#160;"<a href='/member/index.php?uid=".$this->MemberInfos['userid']."&action=feedback'>留言</a>\r\n";
  17. $minfo .=&#160;"空间:<a href='/member/index.php?uid=".$this->MemberInfos['userid']."'>";
  18. $minfo .= $this->MemberInfos['spacename']."</a>\r\n";
  19. return&#160;$minfo;
  20. }
  21. }
  22. ---------------------------
复制代码



DEDECMS列表页/内容页调用当前文档作者的会员头像的方法

一、实现方法
1)内容页
首先,我们知道,在内容页调用当前文档作者的ID代码为{dede:field.mid/},但这个标签只能调用出作者的mid编码。要想调用具体的文档ID,就必须对会员表(dede_member)来进行检索,检索的SQL语句为:
折叠SQL 代码复制内容到剪贴板
select * from dede_member where mid = 会员MID编号
刚才呢,我们已经将mid使用{dede:field.mid/}标签调用出来了,现在我们要做的就是赋值进去查询即可。故,完整代码为:
  1. {dede:field.mid runphp='yes'}
  2. &#160;&#160;&#160;&#160;$id&#160;= @me;
  3. &#160;&#160;&#160;&#160;if($id&#160;<> 0){
  4. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$sql =&#160;"select * from dede_member where mid = $id";
  5. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$query = mysql_query($sql);
  6. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row = mysql_fetch_array($query);
  7. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if($row['face'] ==&#160;''){
  8. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;@me =&#160;'作者头像:<img src="/member/templets/images/dfboy.png" />';
  9. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
  10. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else{
  11. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$face = $row['face'];
  12. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;@me =&#160;'作者头像:<img src="'.$face.'" />';
  13. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
  14. &#160;&#160;&#160;&#160;}
  15. &#160;&#160;&#160;&#160;else{
  16. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;@me =&#160;'游客发表';
  17. &#160;&#160;&#160;&#160;}
  18. {/dede:field.mid}
复制代码

2)列表页
和1)中分析的原理是完全一样的,只是在这里由于在列表页,需要赋值的不是{dede:field.mid/},而是[field:mid/]。故完整代码为:
  1. [field:mid runphp='yes']
  2. &#160;&#160;&#160;&#160;$id&#160;= @me;
  3. &#160;&#160;&#160;&#160;if($id&#160;<> 0){
  4. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$sql =&#160;"select * from dede_member where mid = $id";
  5. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$query = mysql_query($sql);
  6. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row = mysql_fetch_array($query);
  7. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if($row['face'] ==&#160;''){
  8. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;@me =&#160;'作者头像:<img src="/member/templets/images/dfboy.png" />';
  9. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
  10. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else{
  11. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$face = $row['face'];
  12. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;@me =&#160;'作者头像:<img src="'.$face.'" />';
  13. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
  14. &#160;&#160;&#160;&#160;}
  15. &#160;&#160;&#160;&#160;else{
  16. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;@me =&#160;'游客发表';
  17. &#160;&#160;&#160;&#160;}
  18. [/field.mid]
复制代码


二、分析及解释
1)本文上述代码的特点有:
对文档作者进行了判断,如果是游客投稿,则不进行查询而直接输出“游客发表”,当前,这里您也可以直接置空;
对会员头像做了简单的判断,如果会员没有上传头像(即头像为空)时,则输出“/member/templets/images/dfboy.png”路径的默认图片;
2)其它说明及辅助:
本实例还有继续优化的可能性(比如会员头像为空时,判断会员的性别,对不同的姓别分别输出不同的默认头像);

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-11-30 12:03 , Processed in 0.048919 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表