{dede:field}
{dede:field} 标签用于获取当前文章页面的某个字段值,要调用作者,我们需要使用 writer 或 author 这两个字段名。
{dede:field.writer /}:调用文章的 作者 字段。{dede:field.author /}:调用文章的 来源 字段。
重要提示:
- 在DedeCMS的后台,发布文章时,有两个地方可以填写与作者相关的信息:
- 作者:通常指文章的撰写者。
- 来源:通常指文章的出处,如“某某新闻网”、“某某博客”等。
- 你可以根据你的需求选择调用
writer还是author,大多数情况下,调用的是writer。
页(article_article.htm)中调用
这是最常见的需求,即在文章详情页显示这篇文章的作者。
基础调用(仅显示作者名)
直接在模板文件 article_article.htm 中,你需要显示作者的位置插入以下代码:
作者:{dede:field.writer /}
效果示例:
如果后台设置的作者为“张三”,页面将显示:作者:张三
带链接的作者调用(点击作者名查看其所有文章)
如果你想实现点击作者名,跳转到该作者发表的所有文章列表页面,可以使用 arc.lists.php 文件提供的功能。
步骤:
-
修改模板文件: 在
article_article.htm中,将作者名用<a>标签包裹起来。作者:<a href="/index.php?uid={dede:field.writer /}">{dede:field.writer /}</a>index.php?uid=是DedeCMS查看作者文章列表的默认链接格式。
-
修改内核文件(关键步骤): 默认情况下,
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)。
- 按下
-
修改模板中的链接: 你需要将模板中的链接从
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
显示后台操作文章的管理员。
重要提示:
- 后台设置:确保在发布文章时,已经正确填写了“作者”或“来源”字段,否则调用后将显示为空。
- 模板缓存:修改模板文件后,如果页面没有立即更新,请去后台的“生成” -> “更新HTML”中重新生成一下对应的页面。
- 文件权限:修改
arc.archives.class.php 文件时,请确保你有服务器的文件写入权限,并建议修改前备份原文件。
希望这份详细的指南能帮助你成功地在DedeCMS中调用文章作者信息!
在列表页模板 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
显示后台操作文章的管理员。
重要提示:
- 后台设置:确保在发布文章时,已经正确填写了“作者”或“来源”字段,否则调用后将显示为空。
- 模板缓存:修改模板文件后,如果页面没有立即更新,请去后台的“生成” -> “更新HTML”中重新生成一下对应的页面。
- 文件权限:修改
arc.archives.class.php 文件时,请确保你有服务器的文件写入权限,并建议修改前备份原文件。
希望这份详细的指南能帮助你成功地在DedeCMS中调用文章作者信息!
{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 |
显示后台操作文章的管理员。 |
重要提示:
- 后台设置:确保在发布文章时,已经正确填写了“作者”或“来源”字段,否则调用后将显示为空。
- 模板缓存:修改模板文件后,如果页面没有立即更新,请去后台的“生成” -> “更新HTML”中重新生成一下对应的页面。
- 文件权限:修改
arc.archives.class.php文件时,请确保你有服务器的文件写入权限,并建议修改前备份原文件。
希望这份详细的指南能帮助你成功地在DedeCMS中调用文章作者信息!
