听到有朋友在问,如何在首页或者列表也调用文档发布者的一些相关信息(比如:会员名、昵称、QQ帐号等),今天,华强就给大家做一个简单的示例,这样的实现目前只能通过万能调用标签(SQL)来进行实现,我们这里分两个部分来实现:
一、会员基本信息调用
所谓会员基本信息,指的是dede_member 表的所有字段,包括会员名、昵称、邮箱等基本信息,大家也可以用相关的数据库管理软件进行管理查看具体的表结构。但是在文档表是在dede_archives 中是没有这些信息的,那么就需要用到SQL语句的两表关联。大家看一下以下SQL语句:
select arc.id,arc.title,arc.mid,m.* from dede_archives arc left join dede_member m on arc.mid = m.mid where arc.arcrank > -1 and arc.mid <> 0 order by arc.id desc limit 0,15
上面这段代码就是将文档主表和会员基本信息表进行关联,关联的方式是文档表的mid字段与会员基本表的mid是相等。也就是指定具体调用哪个会员的信息。我们知道,SQL调用标签有且只有一个参数(SQL),那么转换为具体的织梦(DedeCMS)系统调用标签的代码就为:
{dede:sql sql="select arc.id,arc.title,arc.mid,m.* from dede_archives arc left join dede_member m on arc.mid = m.mid where arc.arcrank > -1 and arc.mid <> 0 order by arc.id desc limit 0,15"}
<li><a href="[field:id runphp='yes']$url = GetOneArchive(@me);@me = $url['arcurl'];[/field:id]" title="[field:title/]">[field:title/]</a> [会员ID:[field:userid/] 昵称:[field:uname/] QQ:[field:qq/]]</li>
{/dede:sql}
底层模板均使用[field:字段名/]方式来调用,这里的取值范围为主表的id,title,mid字段与会员表的所有字段!
我们来看看具体效果:
二、会员更多资料调用
关于这个会员更多资料,实际上是在上面的两表关联中再加一个表进行查询,这个表就是会员详细资料的表(dede_member_person)。这个就要求对SQL有一定了解的朋友进行深入学习了。
首先还是给大家一个示例参考:
select arc.id,arc.title,arc.mid,m.*,mp.* from dede_archives arc,dede_member m,dede_member_person mp where arc.mid = m.mid and arc.mid = mp.mid and arc.arcrank > -1 and arc.mid <> 0 order by arc.id desc limit 0,15
这里是SQL语句里的from就查询了三个表,分别是文档主表(dede_archives)、会员基本信息表(dede_member)和会员详细资料表(dede_member_person),它的作用是不但能调用主表的文档信息,也能调用会员表的基本信息和详细信息,比如QQ、手机、爱好等。而这个会员的模型,在DedeV5.6版本开始,是可以像内容模型一样进行自定义的。可以这么说,有了这个基础。您可以调用目前绝大多数的网站类型了。
将它转换为织梦(DedeCMS)系统后的标签为:
{dede:sql sql="select arc.id,arc.title,arc.mid,m.*,mp.* from dede_archives arc,dede_member m,dede_member_person mp where arc.mid = m.mid and arc.mid = mp.mid and arc.arcrank > -1 and arc.mid <> 0 order by arc.id desc limit 0,15"}
<li><a href="[field:id runphp='yes']$url = GetOneArchive(@me);@me = $url['arcurl'];[/field:id]" title="[field:title/]">[field:title/]</a> [会员ID:[field:userid/] 昵称:[field:uname/] QQ:[field:qq/]]</li>
{/dede:sql}
接下来我们来看看具体的调用效果: