dedecms调用discuz论坛信息按照ID分类调用附详细说明

这里说的不是dizcuz后台的js调用方法,那个一是不能很好的按照自己需求排版,二是对搜索引擎不友好。这里要得是loop标签模式。


代码如下:

//获得任意表的内容
    function GetTable($tablename="",$row=6,$sort="",$ifcase="",$InnerText=""){
        $InnerText = trim($InnerText);
        if($tablename==""||$InnerText=="") return "";
        $row = AttDef($row,6);
        if($sort!="") $sort = " order by $sort desc ";
        if($ifcase!="") $ifcase=" where $ifcase ";
        $revalue="";
        $this->dsql->SetQuery("Select * From $tablename $ifcase $sort limit 0,$row");
        $this->dsql->Execute();
        $ctp = new DedeTagParse();
        $ctp->SetNameSpace("field","[","]");
        $ctp->LoadSource($InnerText);
        while($row = $this->dsql->GetArray())
    {
          foreach($ctp->CTags as $tagid=>$ctag){
            if(!empty($row[$ctag->GetName()]))
            { $ctp->Assign($tagid,$row[$ctag->GetName()]); }
          }
          $revalue .= $ctp->GetResult();
        }
        return $revalue;
    }

从上面的代码看出来if里的参数实际就是判断语句,大家可以参考表进行任意输出了
1 论坛最新主题调用方法:

代码

{ dede:loop table="cdb_threads" sort="tid" row="10" }
<a href="/dz/viewthread.php?tid=[field:tid /]">
·[field:subject function="cn_substr(' at me',30)" /]([field:lastpost function="date('m-d H:M','@me')" /])
</a>
<br/>
{ /dede:loop }

2 论坛指定版块调用方法:
{ dede:loop table="cdb_threads" if="fid=1 or fid=2 and displayorder!=-1" sort="tid" row="6" }
<a href="/bbs/viewthread dot php?tid=[field:tid /]" target="_blank">
·[field:subject function="cn_substr(' at me',50)" /]
</a>
<br/>
{ /dede:loop }

3 论坛置顶版块调用方法2:
{ dede:loop table="cdb_threads" sort="dateline" if="fid='3' and typeid='51'" row="10" }
<a href="/a/bbs/viewthread dot php?tid=[field:tid /]" target="_blank">
·[field:subject function="cn_substr(' at me',30)" /]</a> <br>
{ /dede:loop }

4 论坛版块名称调用方法:
{ dede:loop table="cdb_forums" sort="displayorder" row="16" col="4" }
 <a href="/bbs/viewthread dot php?fid=[field:fid /]">·[field:name function="cn_substr(' at me',30)" /]
</a>
{ /dede:loop }
注:这个还有点问题,它会将论坛分区、版块都调出来。

附:dedecms的LOOP 标记规则

功能说明:用于调用任意表的数据,一般用于调用论坛贴子之类的操作
适用范围:所有模板
(1) 基本语法
{ dede:loop table=' sort='' row='' if='' } 
底层模板
{ dede:loop } 
(2) 属性
[1] table 表示查询的数据表
[2] sort 用于排序的字段
[3] row 返回结果的条数
[4] if 查询条件
(3)底层模板变量
这个标记的底层模板变量即是被查询表的所有字段

===========================================

论坛最新主题:<br/>
{dede:loop table="cdb_threads" if="fid=9 and displayorder!=-1" sort="tid" row="10"}
<a href="/dz/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}

(0)

相关推荐

  • discuz论坛 用户登录 后台程序代码

    还好,用户登录这里通过一个小小的方法可以实现和论坛同步了.可以不用passport接口. 这是我整理的数据,仅供参考. 登录传两值过来就行(username和password); 复制代码 代码如下: <?php session_start(); define('NOROBOT', TRUE); define('CURSCRIPT', 'logging'); require_once './include/common.inc.php'; require_once DISCUZ_ROOT.'./

  • 浅谈discuz密码加密的方式

    discuz注册时,会把密码按一个规则加密. 比如我的密码是123456 复制代码 代码如下: echo md5("123456"); 会输出: 复制代码 代码如下: e10adc3949ba59abbe56e057f20f883e 而数据库的值却为: 复制代码 代码如下: 7839dc9437013b5c11a5d86e9b8350e9 注意到: 有个叫salt的字段,其值为:d82a35 其实这是一个随机的字符串. 第一次md5后的值再加上盐值(salt)再进行md5,就是要得到的

  • DISCUZ论坛的UBB编辑器(增加灵活调用,支持ASP UBB解析)打包下载

    复制代码 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  <html>  <head>  <meta http-equiv="Content-Type" content="text/html; charset=gbk">  <title>Discuz编辑器</title>  <m

  • Discuz论坛密码与密保加密规则

    Discuz密码加密规则: md5(md5('字符串').'固定字串'): 固定字符串是在注册用户的时候随机生成的,且保存在数据表pre_ucenter_members的salt字段中. 举例:假如密码为 123456789 ,固定字符串为jb51,  那么加密规则为:md5(md5('123456789').'jb51'); 得出的结果就是:96122ff0dd306c912aab15adccf21df1 Discuz密保加密规则: 加密过程是value的值先加密一次,比如我的提问是"驾驶执照

  • DISCUZ 论坛管理员密码忘记的解决方法

    DISCUZ论坛管理员密码忘记了怎么办? 今天,一个朋友在QQ上问我,"如果DISCUZ论坛管理员密码忘记了 从MYSQL 哪里找啊?", 他用的是HostMonster的虚拟主机. yun~~~, 自己也没用过DISCUZ,只好说,"这个不是很清楚,可以直接去改一下数据库的记录试一下, 但是不知道DISCUZ是否对密码加密了 " 后来他登录cPanel,用phpMyAdmin进去查看, 又晕了,一堆表不知道是哪个,在google一下查到了"Discuz

  • php用户密码加密算法分析【Discuz加密算法】

    本文实例讲述了php用户密码加密算法.分享给大家供大家参考,具体如下: 今天在拿Discuz进行二次开发时需要在代码里验证Discuz的用户名密码,结果不小心掉进了坑里,因为Discuz的论坛有两张表来存储用户数据,一张在Discuz的数据库ultrax里面的pre_common_member里面,另一个是存储在了UCenter的数据库ucenter的uc_members表里.花了很大功夫在研究ultrax库里那张pre_common_member的数据,研究它的密码是如何生成的,结果搜了一下发

  • dedecms调用discuz论坛信息按照ID分类调用附详细说明

    这里说的不是dizcuz后台的js调用方法,那个一是不能很好的按照自己需求排版,二是对搜索引擎不友好.这里要得是loop标签模式. 复制代码 代码如下: //获得任意表的内容     function GetTable($tablename="",$row=6,$sort="",$ifcase="",$InnerText=""){         $InnerText = trim($InnerText);         i

  • destoon调用discuz论坛中带图片帖子的实现方法

    在destoon开发中有时候我们需要调用论坛的帖子,但是带有图片的帖子该怎么调用出来呢,本文就来实例展示一个可以调用discuz论坛带图片的帖子的方法: 标签代码如下: <!--{php $tags=tag("table=pre_forum_thread i,pre_forum_threadimage t&prefix=&condition=i.tid=t.tid&length=36&order=i.tid desc&pagesize=9&t

  • Discuz论坛标题和底部去掉版权信息实例讲解

    需求: 一.标题:打开template/default/common/header_common.htm文件,里面的代码如下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/

  • 千万级记录的Discuz论坛导致MySQL CPU 100%的优化笔记

    发现此主机运行了几个 Discuz 的论坛程序, Discuz论坛的好几个表也存在着这个问题.于是顺手一并解决,cpu占用再次降下来了. 前几天,一位朋友通过这篇文章找到了我,说他就是运行最新的 discuz 版本,MySQL 占用 CPU 100%,导致系统假死,每天都要重启好几次,花了一个多月的时间一直没有解决,希望我帮忙一下.经过检查,他的这个论坛最重要的几个表中,目前 cdb_members 表,有记录 6.2 万:cdb_threads 表,有记录 11万:cdb_posts表,有记录

  • Discuz!论坛install.php书写错误漏洞

    书写错误,导致恶意用户构造语句可以写入webshell,进而控制整个服务器. 前几个晚上,把前台文件,只要是数据库调用中的变量都看了一遍.看看是不是有过滤不严的地方,看完后觉得,过滤不严的地方的确不少,但是都已经被单引号保护起来了.在php中,如果magic_qoute_gpc=on(默认的)编译器会自动把单引号等特殊字符转义,而这个时候我们想改变程序的执行流程是非常困难的.这样大大的增加了入侵的难度,在某种程度上,也的确保证了其安全.这也是为什么朋友提出一定要在magic_qoute_gpc为

  • php中通过curl模拟登陆discuz论坛的实现代码

    libcurl同时也支持HTTPS认证.HTTP POST.HTTP PUT. FTP 上传(这个也能通过PHP的FTP扩展完成).HTTP 基于表单的上传.代理.cookies和用户名+密码的认证. php的curl真的是相当好用,网上一搜索相关文章都是关于curl模拟登陆的,很少人提供模拟discuz发贴的源码. 复制代码 代码如下: <?php $discuz_url = 'http://127.0.0.1/discuz/';//论坛地址 $login_url = $discuz_url

  • MySQL针对Discuz论坛程序的基本优化教程

    过了这么久,discuz论坛的问题还是困扰着很多网友,其实从各论坛里看到的问题总结出来,很关键的一点都是因为没有将数据表引擎转成InnoDB导致的,discuz在并发稍微高一点的环境下就表现的非常糟糕,产生大量的锁等待,这时候如果把数据表引擎改成InnoDB的话,我相信会好很多.这次就写个扫盲贴吧. 1. 启用innodb引擎,并配置相关参数 #skip-innodb innodb_additional_mem_pool_size = 16M #一般16M也够了,可以适当调整下 innodb_b

  • destoon首页调用求购供应信息的地区名称的方法

    本文实例主要实现了在destoon首页调用求购供应信息的地区名称.这是destoon开发中比较实用的的一个技巧. 实现代码如下: {loop $tags $k $t} [{area_pos($t[areaid], '/', 1)}]{$t[title]} {/loop} 代码说明如下: $t[areaid], '/', 1 第二个参数是地区与子地区的分隔符 第三个参数可选:设为1只显示一级地区分类:设为2显示二级地区分类等.

随机推荐