dede问答模块如何正确调用?

99ANYc3cd6
预计阅读时长 20 分钟
位置: 首页 DEDE建站 正文

准备工作:确保模块已安装并开启

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

dede问答模块调用
(图片来源网络,侵删)
  1. 安装模块:登录Dede后台,进入“模块” -> “模块管理”,找到并安装“Dede问答”模块。
  2. 生成栏目:安装后,系统会自动生成一个名为“问答”的栏目,你需要进入“栏目管理”,为这个问答栏目设置一个栏目目录(如 ask,并生成HTML。
  3. 开启功能:在后台“系统” -> “系统基本参数” -> “互动设置”中,确保问答功能是开启状态。

常用调用标签解析

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 等)中使用。

dede问答模块调用
(图片来源网络,侵删)

示例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>

代码解释:

dede问答模块调用
(图片来源网络,侵删)
  • 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 标签来引入一个独立的模板文件。

步骤如下:

  1. 创建模板文件: 在你的模板目录(如 /templets/default/)下,新建一个文件,命名为 ask_list.htm

  2. 编写调用代码: 将示例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>
  3. 在首页模板中引入: 打开你的首页模板文件 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} 标签会被正确解析。


常见问题与注意事项

  1. 为什么调用不出来数据?

    • 最常见原因:没有为问答栏目设置栏目目录,并且没有生成HTML,请进入“栏目管理”检查并设置。
    • 缓存问题:Dede有强大的缓存机制,修改模板后,请务必在后台“更新” -> “更新主页HTML”或“更新栏目HTML”,让新的调用生效。
    • 路径错误:确保你使用的 {dede:include file='...'} 路径是相对于模板目录的,如 file='ask/ask_list.htm'
  2. 如何自定义样式? 调用出来的代码只是HTML结构,它的样式由你的CSS文件控制,你可以为 .ask_list, .ask_list li, .ask_list a 等CSS类编写样式,来美化问答列表的显示效果。

  3. 如何获取更多字段? 除了 title, url, answernum, reward,你还可以使用其他字段,

    • [field:userid/]:提问用户ID
    • [field:username/]:提问用户名
    • [field:pubdate function="MyDate('Y-m-d H:i',@me)"/]:提问时间,需要用函数格式化

希望这份详细的指南能帮助你顺利地在Dede中调用问答模块!

-- 展开阅读全文 --
头像
C语言中object究竟指什么?
« 上一篇 04-21
C语言RichEdit控件如何初始化与文本操作?
下一篇 » 04-21

相关文章

取消
微信二维码
支付宝二维码

目录[+]