DedeCMS非JS方法调用Discuz论坛数据(含非同一数据库下)
最近在整合dedecms5.6和discuz! x1.5,希望能通过dede首页来调用discuz的相关帖子数据,由于discuzx 后台-门户-模块管理-数据调用 只能以JS方式远程调用论坛的数据,这里说说用DEDE的标记语言直接从数据库调用,这样的优点就是方便蜘蛛的抓取,但同时也会加重服务器的负担。
一、DEDECMS官方的调用动态地址代码:
论坛新帖子: <br/> {dede:loop table="pre_forum_thread " sort="tid" row="10"} <a href="http://bbs.xx.com/viewthread.php?tid=[field:tid /]"> [field:subject function="cn_substr('@me',30)" /]([field:lastpost function="date('m-d H:M','@me')" /]) </a> <br/> {/dede:loop}
其中的 http://bbs.xx.com/ 是论坛的地址;pre_forum_thread 数据库的表名;('@me',30)调用标题的字符数30,相当于15个汉字;([field:lastpost function="date('m-d H:M','@me')" /]) 标题后调用发帖的时间,可按需要调用。
二、调用Discuz论坛伪静态地址代码,dedecms数据库和discuzx数据库不在同一库内。
{dede:loop table="discuzbbs.pre_forum_thread " sort="tid" row="10"} <a href="http://bbs.xx.com/thread-[field:tid /]-1-1.html" target="_blank"> [field:subject function="cn_substr('@me',30)" /] </a> {/dede:loop}
说明:discuzbbs.pre_forum_thread,其中红色的“discuzbbs”是discuz论坛的数据库名,pre_forum_thread是帖子表名,pre_替换为你的具体的表前缀。由此,也能看出DedeCMS的数据库和discuz的数据库不在同一个库内。
注:非同一库内的数据调用格式:discuz论坛数据库名. ps.记得后面的点。
蓝色字体就是你的论坛地址 过这这能调用第一页的内容 thread-[field:tid /]-1-*.html *代表页数
三、DEDECMS调用指定分类文章
demo1: {dede:loop table="discuzbbs.pre_forum_thread " if="fid=6 and displayorder!=-1" sort="tid" row="10" } <a href="http://bbs.xx.com/thread-[field:tid /]-1-1.html" target="_blank">[field:subject function="cn_substr('@me',28)"/]</a> [field:author /] [field:dateline function='GetDateMk(@me)'/] {/dede:loop} demo2: {dede:loop table="discuzbbs.pre_forum_thread " if="fid=1||fid=2 and displayorder!=-1" sort="tid" row="6"} <a href="http://bbs.xx.com/viewthread.php?tid=[field:tid /]" target="_blank"> [field:subject function="cn_substr('@me',50)" /] </a> {/dede:loop}
说明:[field:author /] [field:dateline function='GetDateMk(@me)'/] 调用作者和文章时间
fid=6 是discuz栏目的ID
以上代码,haibor于本地测试通过!