准备工作:确保模块已安装并开启
在调用之前,请确保你的网站已经正确安装并开启了问答模块。

- 安装模块:登录Dede后台,进入“模块” -> “模块管理”,找到并安装“Dede问答”模块。
- 生成栏目:安装后,系统会自动生成一个名为“问答”的栏目,你需要进入“栏目管理”,为这个问答栏目设置一个栏目目录(如
ask),并生成HTML。 - 开启功能:在后台“系统” -> “系统基本参数” -> “互动设置”中,确保问答功能是开启状态。
常用调用标签解析
Dede问答模块的调用主要通过 ask 标签及其属性来实现。
基本语法:
{dede:ask}
<!-- 循环体内的内容,用于显示每一条问答 -->
{/dede:ask}
核心属性:
| 属性名 | 作用 | 示例 |
|---|---|---|
row |
调用的记录条数 | row='10' (调用10条) |
type |
调用类型 | type='new' (最新问答), type='hot' (热门问答), type='reward' (悬赏问答), type='resolve' (已解决), type='unresolve' (未解决) |
orderby |
排序方式 | orderby='view' (按浏览量), orderby='dateline' (按发布时间), orderby='answernum' (按回答数) |
typeid |
指定分类ID | typeid='5' (只调用ID为5的分类下的问答) |
channelid |
指定频道ID | 问答模块的固定ID是 9,一般不需要修改。 |
实用调用代码示例
以下代码可以直接复制到你的模板文件(如 index.htm, head.htm, footer.htm 等)中使用。

示例1:调用最新问答(最常用)
通常用在首页侧边栏,展示最新的几条问题。
<h3>最新问答</h3>
<ul class="ask_list">
{dede:ask row='8' titlelen='40' type='new' orderby='dateline'}
<li>
<a href="[field:url/]">[field:title/]</a>
<span class="answer_info">([field:answernum/]个回答)</span>
</li>
{/dede:ask}
</ul>
代码解释:
row='8':调用8条最新问答,len='40'`:标题最多显示40个字符,超出部分用省略号。type='new':调用类型为“最新”。orderby='dateline':按发布时间排序。[field:url/]:问答的链接地址。[field:title/]:问答的标题。[field:answernum/]:该问答的回答数量。
示例2:调用热门问答
根据回答数量或浏览量排序,展示热门问题。
<h3>热门问答</h3>
<ul class="ask_list">
{dede:ask row='8' titlelen='40' type='hot' orderby='answernum'}
<li>
<a href="[field:url/]">[field:title/]</a>
<span class="answer_info">([field:answernum/]个回答)</span>
</li>
{dede:ask}
</ul>
代码解释:

type='hot':调用类型为“热门”。orderby='answernum':按回答数量排序,这是“热门”最常见的定义。
示例3:调用悬赏问答
用于吸引用户参与,展示有悬赏积分的问题。
<h3>悬赏问答</h3>
<ul class="ask_list">
{dede:ask row='5' titlelen='40' type='reward' orderby='reward'}
<li>
<a href="[field:url/]">[field:title/]</a>
<span class="reward_info">悬赏: [field:reward/]分</span>
</li>
{/dede:ask}
</ul>
代码解释:
type='reward':调用类型为“悬赏”。orderby='reward':按悬赏积分从高到低排序。[field:reward/]:显示该问题的悬赏积分。
示例4:调用指定分类的问答
如果你的问答模块有很多分类,只想展示某个分类下的问答。
假设“网站建设”这个分类的ID是 3。
<h3>网站建设相关问答</h3>
<ul class="ask_list">
{dede:ask typeid='3' row='10' titlelen='40' type='new' orderby='dateline'}
<li>
<a href="[field:url/]">[field:title/]</a>
</li>
{/dede:ask}
</ul>
代码解释:
typeid='3':这是关键,只调用ID为3的分类下的问答。
示例5:调用未解决问答
展示那些还未被采纳最佳答案的问题,鼓励用户去回答。
<h3>待解决</h3>
<ul class="ask_list">
{dede:ask row='10' titlelen='40' type='unresolve' orderby='dateline'}
<li>
<a href="[field:url/]">[field:title/]</a>
<span class="unresolve_info">尚未解决</span>
</li>
{/dede:ask}
</ul>
代码解释:
type='unresolve':调用类型为“未解决”。
在首页或列表页调用问答数据
我们希望在网站的首页或文章列表页旁边,展示一个问答板块,这需要用到 include 标签来引入一个独立的模板文件。
步骤如下:
-
创建模板文件: 在你的模板目录(如
/templets/default/)下,新建一个文件,命名为ask_list.htm。 -
编写调用代码: 将示例1或示例2的代码写入
ask_list.htm文件中。<!-- /templets/default/ask_list.htm --> <div class="ask_box"> <h3>最新问答</h3> <ul class="ask_list"> {dede:ask row='8' titlelen='40' type='new' orderby='dateline'} <li> <a href="[field:url/]">[field:title/]</a> <span class="answer_info">([field:answernum/]个回答)</span> </li> {/dede:ask} </ul> </div> -
在首页模板中引入: 打开你的首页模板文件
index.htm,在你想显示问答列表的位置,加入以下代码:<!-- 在首页模板 index.htm 中 --> <div class="main"> <div class="left_content"> <!-- 这里是你的文章列表等内容 --> </div> <div class="right_sidebar"> <!-- 使用 include 标签引入问答列表模板 --> {dede:include file='ask_list.htm'/} <!-- 你还可以再引入一个热门问答 --> {dede:include file='ask_hot_list.htm'/} </div> </div>
注意:使用 include 标签时,被引入的模板文件中的 {dede:ask} 标签会被正确解析。
常见问题与注意事项
-
为什么调用不出来数据?
- 最常见原因:没有为问答栏目设置栏目目录,并且没有生成HTML,请进入“栏目管理”检查并设置。
- 缓存问题:Dede有强大的缓存机制,修改模板后,请务必在后台“更新” -> “更新主页HTML”或“更新栏目HTML”,让新的调用生效。
- 路径错误:确保你使用的
{dede:include file='...'}路径是相对于模板目录的,如file='ask/ask_list.htm'。
-
如何自定义样式? 调用出来的代码只是HTML结构,它的样式由你的CSS文件控制,你可以为
.ask_list,.ask_list li,.ask_list a等CSS类编写样式,来美化问答列表的显示效果。 -
如何获取更多字段? 除了
title,url,answernum,reward,你还可以使用其他字段,[field:userid/]:提问用户ID[field:username/]:提问用户名[field:pubdate function="MyDate('Y-m-d H:i',@me)"/]:提问时间,需要用函数格式化
希望这份详细的指南能帮助你顺利地在Dede中调用问答模块!
