织梦CMS二次开发程序实例.docx
《织梦CMS二次开发程序实例.docx》由会员分享,可在线阅读,更多相关《织梦CMS二次开发程序实例.docx(80页珍藏版)》请在冰豆网上搜索。
织梦CMS二次开发程序实例
Dede二次开发程序详解(来自网上,摘录而成)
调用说明:
推荐会员(带用户头像)
[quote]
{dede:
sqlsql="SELECTmid,mtype,userid,uname,matt,face
FROMdede_member
wherematt=1andmtype='个人'
LIMIT0,10"}
头像:
facerunphp='yes']
if(!
@me)@me='
[/field:
face]"/>
用户名:
globalname='cfg_cmspath'/]/member/?
[field:
userid/]/'>[field:
uname/]
{/dede:
sql}
[field:
facerunphp='yes']
if(!
@me)@me='
[/field:
face]
为用户头像图片
[img]
是如果用户头像为空的话要显示的图像这个大家自己改吧
[/quote]
调用说明:
会员积分排行
[quote]
{dede:
sqlsql="Selectmid,userid,uname,scoresFromdede_memberorderbyscoresdesclimit0,10"}
globalname='cfg_cmspath'/]/member/?
[field:
userid/]/'>[field:
uname/]
积分[field:
scores/]
{/dede:
sql}
全部测试通过
[/quote]
这时需要通过dedecms后台中的ucenter模块进行Ucenter配置。
然后,在浏览器地址栏输入http:
//localhost/dede/login.php,打开后台管理登录界面,输入密码后进入dedecms后台管理。
dedecms后台管理界面的左侧导航栏,点击“模块”标签,注意下面的“UCenter模块”。
点击“UCenter配置”,进入以下页面。
“服务端地址“填:
http:
//localhost/ucenter(本地机),创始人密码即是你在安装UCenter时设定的创始人密码;服务端IP地址填你的Ucenter安装的空间IP(本地机填127.0.0.1),输入后点“确认安装”。
出现安装成功提示。
退出dedecms管理后台,再次进入UCenter用户管理中心,这时我们会发现在“应用管理”中多了一项“我的网站”,并且显示的是“通信成功”了。
我们再通过浏览器访问http:
//localhost/uchome/index.php,用管理员的账号进入Uchome首页,点击“设置”进入另外一页,再点击右上角的“高级管理”,输入密码后点击“进入平台”进入高级管理平台。
在左侧导航栏的“高级设置”中找到一项“UCenter应用”点击进入。
在这里我们可以看到我们加入的三个应用,分别点击三个应用下面的“提交更新“。
退出管理界面,现在我们再回过头去测试一下看就可以同步了。
七、经验总结及疑问
如果没有做到Dedecms、UChome、Discuz!
中同时登录及退出的问题其关键就是在uchome中的“ucenter应用”中没有“提交更新”。
有时候安装dedecms、uchome或ucenter出现问题安装不了或出错等等,有的很多就是环境没有搭载好,所以我建议就安装dedecms提供的DedeAMPZForServer套件,至少在服务器的搭载上我们不需要花费太多的精力。
另外注意的是UCenter的配置。
比如“通信密钥”是否一致。
这个一般是导致UCenter与Dedecms、UChome、Discuz!
等通信失败的主要原因之一。
这个密钥是可以自己随便写的,但要保证UCenter与DIscuz的密钥一致。
又比如“ID”。
查看UCenter后台的应用ID是否与Dedecms、UChome、Discuz!
等后台的ID一致,如不一致,请修改各个应用后台的"UCenter应用ID"。
这个也是导致UCenter与DIscuz通信失败的主要原因之一。
关于UCenter的配置等这一点可以参考UCenter官方提供的说明手册。
功能:
图书封面图片调用,含标题
代码:
{dede:
sqlsql="Selectid,bookname,author,pubdate,body,litpicFromdede_story_booksorderbyiddesclimit0,10"}
idfunction=DedeID2Dir(@me)/]/[field: booknamefunction=GetPinyin(@me)/]-[field: id/].html">litpic/]"border="0"width="75"height="100"/>
idfunction=DedeID2Dir(@me)/]/[field: booknamefunction=GetPinyin(@me)/]-[field: id/].html">[field: booknamefunction="cn_substr(@me,12)"/] | {/dede:
sql}
功能:
最新连载内容调用,含栏目名称、书名、章节名、发布时间。
代码:
{dede:
bookcontentlistrow=10booktype=0orderby=lastpostauthor=keyword=}
[field:
cataloglink/][field:
booklink/]
[field:
contentlink/]
[field:
lastpostfunction="GetDateMk(@me)"/]
|
{/dede:
bookcontentlist}
功能:
热门图书调用
代码:
{dede:
booklistrow=5booktype=0titlelen=10imgwidth=80imgheight=100orderby=weekcc}[field:
imglink/]{/dede:
booklist}
功能:
推荐图书调用
代码:
{dede:
booklistrow=5booktype=0titlelen=10imgwidth=80imgheight=100orderby=commend}[field:
imglink/]{/dede:
booklist}
分类信息
功能:
调用地区与类型
代码:
{dede:
infolink}
地区:
[field:
nativeplace/]
类型:
[field:
infotype/]
{/dede:
infolink}
功能:
调用最新信息
代码:
{dede:
arclistsgrow=10titlelen=32orderby=pubdatechannelid=-8idlist=}
[[field:
typelink/]][field:
textlink/][field:
pubdatefunction="MyDate(m-d,@me)"/]
{/dede:
arclistsg}
功能:
分类信息图片调用
代码:
{dede:
arclistsgrow=1titlelen=30flag=c,ainfolen=80orderby=pubdatechannelid=-8typeid=6imgwidth=105imgheight=137}
arcurl/]">[field:
image/]
arcurl/]">[field:
title/]{/dede:
arclistsg}
会员模块
功能:
分列显示,按积分排行,带头像。
正确链接到会员个人空间。
代码:
{dede:
sqlsql="Selectmid,userid,uname,face,scoresFromdede_memberorderbyscoresdesclimit0,2"}
globalname="cfg_cmspath"/]/member/index.php?
uid=[field:
userid/]"target="_blank">face/]"alt=[field:
spacename/]width="52"height="52"/border="0">
[field:
uname/]
积分:
[field:
scores/]
{/dede:
sql}
|
圈子模块
功能:
调用圈子标题,分10行显示
代码:
{dede:
sqlsql="SELECTgroupimg,groupid,groupnameFROMdede_groupsWHEREishidden=0ORDERBYthreadsDESCLIMIT0,10"}
id=[field:
groupid/]"title="[field:
groupname/]"target="_blank">[field:
groupname/]
{/dede:
sql}
功能:
热门圈子,调用图片及标题,分10列显示
代码:
{dede:
sqlsql="SELECTgroupimg,groupid,groupnameFROMdede_groupsWHEREishidden=0ORDERBYthreadsDESCLIMIT0,10"}
id=[field: groupid/]"_fcksavedurl=""group/group.php? id=[field: groupid/]""title="[field: groupname/]"target="_blank">groupimg/]"border="0"width="75"height="100"/> [field: groupnamefunction="cn_substr(@me,12)"/] | {/dede:
sql}
功能:
圈子话题调用。
代码:
{dede:
sqlsql="SELECTsubject,digest,replies,gid,tidFROMdede_group_threadsWHEREclosed=0ORDERBYdatelineDESCLIMIT0,10"}
id=[field:
gid/]&tid=[field:
tid/]"_fcksavedurl=""group/viewthread.php?
id=[field:
gid/]&tid=[field:
tid/]""title="[field:
subject/]"target="_blank">[field:
subject/]
{/dede:
sql}
功能:
最新圈子,调用图片及标题,分10列显示
代码:
{dede:
sqlsql="SELECTgroupimg,groupid,groupnameFROMdede_groupsWHEREishidden=0ORDERBYgroupidDESCLIMIT0,3"}
id=[field: groupid/]"_fcksavedurl=""group/group.php? id=[field: groupid/]""title="[field: groupname/]"target="_blank">groupimg/]"border="0"width="75"height="100"/> [field: groupnamefunction="cn_substr(@me,12)"/] | {/dede:
sql}
下载模块
功能:
显示符号、标题及发布日期
代码:
{dede:
arclistrow=10titlelen=36typeid="120"orderby=pubdate}
↓arcurl/]">[field:
title/]
[field:
pubdatefunction="MyDate(m-d,@me)"/]
|
{/dede:
arclist}
问答模块
功能:
包含问答分类及问答标题。
代码:
{dede:
askrow=10qtype=}
[typeurl/]>[field:
tidname/]]
url/]">[field:
title/]
{/dede:
ask}
适用于V5.5版本,其他版本未测试。
先来看一段代码:
{dede:
sqlsql='SelectA.id,A.title,D.id,D.downloadsfromdede_archivesasALeftJoindede_downloadsasDON
A.id=D.idorderbydownloadsDESClimit0,10;'}
idrunphp='yes']$id=@me;@me='';$url=GetOneArchive($id);@me=$url['arcurl'];[/field:
id]">[field:
title/]下载次数[field:
downloads/]
{/dede:
sql}
这个就是SQL调用下载排行的,已经实现了静态地址调用。
limit0,10;的意思是调用10调,想调用多少条只要修改“10”为你想要的数字,如过你想实现调用特定版块的下载排行,只需要在limit0,10;的后面加上"wheretypeid=xx"XX就是栏目ID。
比如我想调用栏目10的下载排行,代码就是这样:
{dede:
sqlsql='SelectA.id,A.title,D.id,D.downloadsfromdede_archivesasALeftJoindede_downloadsasDON
A.id=D.idWHEREtypeid=10orderbydownloadsDESClimit0,10;'}
idrunphp='yes']$id=@me;@me='';$url=GetOneArchive($id);@me=$url['arcurl'];[/field:
id]">[field:
title/]下载次数[field:
downloads/]
{/dede:
sql}
这里有个小技巧:
typeid=后面的值可以用当前栏目ID的标签,这样可以在每个栏目列表页实现当前栏目的下载排行调用,具体的望读者自己探究。
当然也可以用typeid>或者<来限定栏目范围。
特定栏目调用已经解决,那么就剩下分时段调用了,可分为日,周,月,年,甚至自定义天数或者小时,代码如下:
{dede:
sqlsql='SelectA.id,A.title,D.id,D.downloadsfromdede_archivesasALeftJoindede_downloadsasDON
A.id=D.idWHEREtypeid=10andpubdate>UNIX_TIMESTAMP(CURDATE()-INTERVAL7day)orderbydownloadsDESClimit0,10;'}
idrunphp='yes']$id=@me;@me='';$url=GetOneArchive($id);@me=$url['arcurl'];[/field:
id]">[field:
title/]下载次数[field:
downloads/]
{/dede:
sql}
注意,我这是在上一个特定栏目的前提下再加一个时间条件语句,所以,我用了and,后面蓝色字体部分为所需要的内容,如果不想特定栏目,就把有色字体部分代码和紧跟着的“AND”去掉就行。
pubdate>UNIX_TIMESTAMP(CURDATE()-INTERVAL7day)的意思是取7天内的数据,我们只需要修改数字"7"就可以实现我们的目标,比如10天就是pubdate>UNIX_TIMESTAMP(CURDATE()-INTERVAL10day),如果想调用一个月的数据,那就是pubdate>UNIX_TIMESTAMP(CURDATE()-INTERVAL1month)一年的话只要把"day"改成"year"即可。
标签到这里基本上已经完美了。
希望大家自己多多实验,多探究,多查相关资料。
如果有不懂请留言。
附送另外一个小小的标签,关于调用今日更新情况的调用:
小小说阅读【{dede:
sqlsql="SELECTcount(ID)AScFROMdede_archivesWHEREpubdate>UNIX_TIMESTAMP(CURDATE())andtypeid=特定栏目ID"}今
这个HACK是在现有的两个版本上修改而成的,没有进行完全测试,如有问题请告知。
将以下内容存为CREDIT_DEL.PHP文件
php
if(!
defined("CREDIT_DEL")){
die("AccessDenied");
}
############以下是安装方法############
/*
1.将本文件放到index.php所在目录下
2. 购买人数hack
请用数据库管理工具phpmyadmin在
TABLE:
cdb_threads的最尾
----新增----
栏位 :
buy
型态 :
INT
长度 :
3
预设值 :
0
3.将本文件放到index.php所在目录下
在viewthread.php中的32行左右
在下面代码
if(!
$forum[getattachperm]&&!
$allowgetattach){
showmessage("对不起,您的级别〔{$grouptitle}〕无法下载附件。
");
}elseif($forum[getattachperm]&&!
strstr($forum[getattachperm],"\t$groupid\t")){
showmessage("对不起,只有特定用户可以下载本论坛的附件,请返回。
");
}
的下面加上以下代码
####付款下载限制的帖加/减积分的HACK开始####
if($attach[creditsrequire]&&$attach[creditsrequire]<=$credit&&!
$ismoderator){
if(!
$credit_del_yes)
showmessage(