如何在Dedecms问答系统中调用首页所有问题的列表?
- 行业动态
- 2024-10-14
- 2
在DedeCMS中,要调用问答首页的所有问题列表,你可以使用自定义标签和SQL语句。以下是一个示例方法:,,1. 打开你的模板文件(通常是 index.htm或类似的文件)。,2. 在需要显示 问题列表的位置插入以下代码:,,“ html,{dede:sql name=getQuestions},SELECT * FROM #@__qa_question ORDER BY id DESC,{/dede:sql},{dede:list row='10' titlelen='50' orderby='pubdate'},[field:title function="cn_substr(@me,1,50)"/],{/dede:list},` ,,这个代码做了以下几件事:,,1. 使用{dede:sql} 标签执行一个SQL查询,从#@__qa_question 表中选择所有记录,并按id 降序排列。,2. 使用{dede:list} 标签循环遍历查询结果,并显示每个问题的标题。,3. row=’10’ 表示每页显示10条记录。,4. titlelen=’50’ 表示标题长度限制为50个字符。,5. orderby=’pubdate’ 表示按发布日期排序。,,请根据你的具体需求调整这些参数。如果你想要显示更多或更少的问题,可以修改row`的值。如果表名或字段名不同,请相应地修改SQL查询中的表名和字段名。,,希望这能帮助到你!
在DedeCMS中,要实现问答首页调用所有问题列表,可以通过修改模板文件和编写自定义标签来实现,以下是一个详细的步骤指南:
1. 创建自定义标签
我们需要创建一个自定义标签来获取所有的问答数据,打开include/arc.tagdefault.class.php 文件,添加如下代码:
/** * 获取问答列表 */ function getQAList($recommend = 'n', $typeid = '1', $num = 20, $orderway = 'desc', $cache = 0) { global $dsql; $row = $dsql>GetOne("SELECT count(*) as total FROM dede_ask where status=1"); if ($row['total'] == 0) return ''; $pagesize = $num; $pagenum = $this>PageSet($row['total'], $pagesize); $limitSql = " limit " . ($pagenum['start'] 1) * $pagesize . ", $pagesize"; $orderSql = ($orderway == 'desc' ? ' order by id desc' : ' order by id asc'); $list = $dsql>GetList("SELECT * from dede_ask where status=1 $orderSql $limitSql"); return $list; }
2. 修改模板文件
我们需要在模板文件中调用这个自定义标签,假设你的问答首页模板文件是templets/default/article_qa_list.htm,编辑该文件并添加如下代码:
{dede:getQAList} <ul> {loop $list $item} <li> <h3><a href="{dede:field name='url'/}">{dede:field name='title'/}</a></h3> <p>{dede:field name='content' function='cn_substr(@me,80)'/}</p> <span >{dede:field name='pubdate' function='MyDate("Ymd",@me)'/}</span> </li> {/loop} </ul> {/dede:getQAList}
3. 刷新缓存
完成上述步骤后,刷新DedeCMS的缓存,以确保新标签生效,进入后台 > 系统管理 > SQL命令行工具,执行以下SQL语句:
DELETE FROM dede_cache WHERE mark='index';
重新生成首页即可看到效果。
FAQs
1. 如何更改每页显示的问题数量?
在模板文件中,你可以看到这样的一行代码:
{dede:getQAList num='10'}
这里的num='10' 表示每页显示10个问题,你可以将数字改为你需要的数量,例如num='20' 表示每页显示20个问题。
2. 如果我想按时间倒序排列问题,该如何操作?
同样在模板文件中,有这样一行代码:
{dede:getQAList orderway='desc'}
这里的orderway='desc' 表示按时间倒序排列,如果你想按时间正序排列,可以将desc 改为asc。
序号 | 方法名称 | 参数说明 | 返回结果 | 说明 |
1 | {dede:arclist} | row='10' page='1' titlelen='30' typeid='0' nnews='10' orderby='id' rOrderBy='desc' nopic='1' flag='0' channelid='0' classid='0' listtemp='content/index_article_list' getlastpost='1' } | 问题列表及其相关信息 | 使用此标签调用指定类别的所有问题,参数可以根据需要进行调整。row表示每页显示的条数,page表示当前页码,titlelen长度,typeid表示分类ID,nnews表示新闻数量,orderby表示排序方式,rOrderBy表示降序或升序,nopic表示是否显示图片,flag表示是否显示推荐,channelid表示频道ID,classid表示栏目ID,listtemp表示列表模板,getlastpost表示获取最后一条帖子 |
2 | {dede:arctype} | id='0' typeid='0' row='10' col='1' titlelen='30' classid='0' listtemp='content/index_article_list' channeltype='0' reid='0' } | 分类列表 | 使用此标签调用指定分类的问题列表,参数可以根据需要进行调整。id表示分类ID,typeid表示分类类型,row表示每页显示的条数,col表示每行显示的条数,titlelen长度,classid表示栏目ID,listtemp表示列表模板,channeltype表示频道类型,reid表示推荐ID |
3 | {dede:arctype} | id='0' typeid='0' row='10' col='1' titlelen='30' classid='0' listtemp='content/index_article_list' channeltype='0' reid='0' } | 栏目列表 | 使用此标签调用指定栏目的所有问题列表,参数可以根据需要进行调整。id表示栏目ID,typeid表示分类类型,row表示每页显示的条数,col表示每行显示的条数,titlelen长度,classid表示栏目ID,listtemp表示列表模板,channeltype表示频道类型,reid表示推荐ID |
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:http://www.xixizhuji.com/fuzhu/124591.html