不是,DedeCMS文章来源的代码是一个“单标签”。

(图片来源网络,侵删)
下面我为你详细解释一下,以及为什么你会觉得它像“双标签”。
什么是单标签和双标签?
在DedeCMS的模板引擎(类似PHP)中,标签分为两种:
-
双标签:有开始标签和结束标签,中间包裹需要循环或处理的内容。
- 语法:
<标签名>内容</标签名> - 例子:文章列表标签
{dede:arclist}和{/dede:arclist},它们之间是循环输出的文章内容。
- 语法:
-
单标签:只有开始标签,没有独立的结束标签,通常用于获取一个单一的值。
(图片来源网络,侵删)- 语法:
<标签名 属性='值' />或者<标签名 属性='值'> - 例子标签
{dede:field.title /}、文章时间标签{dede:field.pubdate function='MyDate('Y-m-d', @me)'/}。
- 语法:
文章来源的代码
在DedeCMS的文章详情页模板(通常是 article_article.htm)中,获取文章来源的代码是:
{dede:field.source /}
或者,更完整地,它也可以这样写(带有一个默认值):
{dede:field.source function='(@me ? "来源:@me" : "本站原创")' /}
从上面的代码可以看出,{dede:field.source /} 完全符合单标签的特征:
- 它没有像
{dede:arclist}那样的结束标签{/dede:arclist}。 - 它的作用是直接获取当前文章的
source字段值并显示出来。
为什么你会觉得它像“双标签”?
你会有这个疑问,很可能是因为在后台编辑文章时,文章来源的输入框是两个:

(图片来源网络,侵删)
- 来源选择:一个下拉菜单,可以选择“本站原创”、“转载”、“其他”等。
- 来源名称:一个文本输入框,可以手动输入具体的来源名称,CSDN”、“百度百科”、“某某新闻网”等。
这个后台的UI设计可能会让你误以为在前台模板中也需要用两个标签来分别获取这两个值,但实际上,DedeCMS在保存文章时,会将这两个字段的值合并成一个字符串,存入数据库的 dede_archives 表的 source 字段里。
- 如果你只选择了“来源选择”,
source字段里就只存那个值(如“转载”)。 - 如果你填写了“来源名称”,
source字段里会存“来源选择”的值 + “来源名称”的值(如“转载:CSDN”)。
在前台模板中,你只需要一个 {dede:field.source /} 标签就能获取到完整的来源信息。
如何更好地使用文章来源标签?
我们不希望来源为空的时候什么都不显示,或者只显示一个空标签,我们可以利用它的 function 属性来美化输出。
场景1:如果来源为空,显示“本站原创”
{dede:field.source function='(@me ? @me : "本站原创")' /}
@me代表标签本身当前的值(即数据库里的source字段值)。- 是三元运算符,意思是:
@me有值(非空),就显示@me;否则,显示“本站原创”。
场景2:给来源文字加上链接
{dede:field.source function='(@me ? "<a href=\'http://www.example.com\' target=\'_blank\'>@me</a>" : "本站原创")' /}
- 这个例子中,如果来源存在,它会将来源文字包裹在一个
<a>标签里,点击可以跳转到指定网站。
场景3:只显示来源名称(去掉前面的“转载:”等前缀)
如果你的来源总是以“来源类型:来源名称”的格式保存(转载:CSDN”),但你只想显示“CSDN”,可以用下面的方法:
{dede:field.source function='(@me ? str_replace("转载:", "", @me) : "本站原创")' /}
- 这里用
str_replace()函数将字符串中的“转载:”替换为空。
| 特性 | |
|---|---|
| 标签类型 | 单标签,不是双标签。 |
| 标准代码 | {dede:field.source /} |
| 作用 | 获取并显示文章在后台设置的来源信息。 |
| 常见用法 | 结合 function 属性进行条件判断和格式化,以处理空值或美化显示。 |
希望这个解释能帮助你彻底理解DedeCMS中文章来源标签的使用!
