dede如何调用文章作者信息?

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

{dede:field}

{dede:field} 标签用于获取当前文章页面的某个字段值,要调用作者,我们需要使用 writerauthor 这两个字段名。

  • {dede:field.writer /}:调用文章的 作者 字段。
  • {dede:field.author /}:调用文章的 来源 字段。

重要提示

  • 在DedeCMS的后台,发布文章时,有两个地方可以填写与作者相关的信息:
    1. 作者:通常指文章的撰写者。
    2. 来源:通常指文章的出处,如“某某新闻网”、“某某博客”等。
  • 你可以根据你的需求选择调用 writer 还是 author,大多数情况下,调用的是 writer

页(article_article.htm)中调用

这是最常见的需求,即在文章详情页显示这篇文章的作者。

基础调用(仅显示作者名)

直接在模板文件 article_article.htm 中,你需要显示作者的位置插入以下代码:

作者:{dede:field.writer /}

效果示例: 如果后台设置的作者为“张三”,页面将显示:作者:张三

带链接的作者调用(点击作者名查看其所有文章)

如果你想实现点击作者名,跳转到该作者发表的所有文章列表页面,可以使用 arc.lists.php 文件提供的功能。

步骤:

  1. 修改模板文件: 在 article_article.htm 中,将作者名用 <a> 标签包裹起来。

    作者:<a href="/index.php?uid={dede:field.writer /}">{dede:field.writer /}</a>
    • index.php?uid= 是DedeCMS查看作者文章列表的默认链接格式。
  2. 修改内核文件(关键步骤): 默认情况下,uid 参数接收的是会员ID,而不是作者名,为了让它能通过作者名来查找,我们需要修改一个核心文件。

    打开并编辑文件:/include/arc.archives.class.php

    • 按下 Ctrl + F 搜索 MakeLoop 函数。
    • 在这个函数内部,找到类似 if($ctag->GetName()=="arcurl") 的判断分支。
    • 在该分支内部,添加一个新的 else if 判断,用于处理 uid 参数。

    找到这段代码(大约在第342行左右,版本不同可能略有差异):

    else if($ctag->GetName()=="typelink")
    {
        $revalue = GetOneTypeUrl($this->TypeLink->TypeInfos);
    }

    在它后面添加如下代码:

    else if($ctag->GetName()=="uid")
    {
        // 通过作者名获取其UID
        $row = $this->dsql->GetOne("SELECT mid FROM `dede_admin` WHERE uname = '{$this->Fields['writer']}'");
        if(is_array($row))
        {
            $revalue = $row['mid'];
        }
        else
        {
            $revalue = 0; // 如果没找到,则设为0,避免报错
        }
    }
    • 代码解释:这段代码的作用是,当模板中调用 {dede:field.uid /} 时,它会去 dede_admin 表里查找 uname 字段等于当前文章作者名({$this->Fields['writer']})的记录,并返回其对应的会员ID(mid)。
  3. 修改模板中的链接: 你需要将模板中的链接从 uid={dede:field.writer /} 改为 uid={dede:field.uid /}

    作者:<a href="/index.php?uid={dede:field.uid /}">{dede:field.writer /}</a>

    这样,当页面生成时,{dede:field.uid /} 会被替换为作者的会员ID,链接就能正确指向该作者的文章列表了。


在列表页(list_article.htm)中调用

如果你想在文章列表页(如栏目页、首页文章列表)中显示每篇文章的作者,可以使用 {dede:list}{dede:arclist} 标签循环。

使用 {dede:list}

在列表页模板 list_article.htm 的循环体内使用:

{dede:list pagesize='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>作者:[field:writer/]</span>
    </li>
{/dede:list}
  • [field:writer/] 在列表循环中同样可以调用作者。

使用 {dede:arclist}

{dede:arclist} 是一个更强大的标签,常用于首页等地方。

{dede:arclist titlelen='30' row='5'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>作者:[field:writer/]</span>
    </li>
{/dede:arclist}
  • [field:writer/]arclist 中同样有效。

调用当前登录的管理员/编辑

有时候你可能想在文章页显示“本文编辑”或“发布者”的信息,这可以通过 {dede:adminname} 标签实现。

适用场景:文章发布或修改后,显示操作人的信息。

代码

本文编辑:{dede:adminname /}

这个标签会调用当前登录并发布/修改文章的后台管理员用户名。


总结与注意事项

需求场景 核心代码 适用模板 备注
显示作者名 {dede:field.writer /} article_article.htm 最基础、最常用的方法。
作者名带链接 <a href="/index.php?uid={dede:field.uid /}">{dede:field.writer /}</a> article_article.htm 需要修改 arc.archives.class.php 文件。
在列表页显示作者 [field:writer/] list_article.htm, index.htm {dede:list}{dede:arclist} 循环内使用。
显示发布/编辑者 {dede:adminname /} article_article.htm 显示后台操作文章的管理员。

重要提示

  1. 后台设置:确保在发布文章时,已经正确填写了“作者”或“来源”字段,否则调用后将显示为空。
  2. 模板缓存:修改模板文件后,如果页面没有立即更新,请去后台的“生成” -> “更新HTML”中重新生成一下对应的页面。
  3. 文件权限:修改 arc.archives.class.php 文件时,请确保你有服务器的文件写入权限,并建议修改前备份原文件。

希望这份详细的指南能帮助你成功地在DedeCMS中调用文章作者信息!

-- 展开阅读全文 --
头像
dede客服系统插件怎么安装使用?
« 上一篇 今天
dede为何无法上传图片?
下一篇 » 今天

相关文章

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