在dedecms中,flag属性有头条、推荐、图片、幻灯、滚动等的属性值,那么想在文章或者其他页面调用这个flag的值需要如何做呢?那就需要用到它的flag标签属性来进行调用。
方法1:直接输出 flag 值
在列表模板(如 list_article.htm
)中,可以直接使用 [field:flag/]
输出当前文章的 flag
属性值。
{dede:list pagesize='20'}
文章标题:[field:title/] <br>
Flag属性值:[field:flag/] <br>
{/dede:list}
通过[field:flag/]的标签我们直接输入了flag的值。输出后我们得到内容是
文章标题:这里是文章的标题
Flag属性值:h
这我们对照标签可以看到,输出的内容包含了一个标题和flag的值,但是它的值是一个 h 字母。那是因为我们在系统中设置了 h 代表的就是推荐这个flag的值。如果我们想在网页中直接显示文字类型的flag值,那么我们就需要运用到动态判断。
{dede:list pagesize='20'}
<div>
文章标题:[field:title/] <br>
Flag属性:
[field:flag runphp='yes']
$flag = @me;
if (strpos($flag, 'h') !== false) {
@me = "推荐文章 (Flag: $flag)";
} elseif (strpos($flag, 'c') !== false) {
@me = "头条文章 (Flag: $flag)";
} else {
@me = "普通文章 (Flag: $flag)";
}
[/field:flag]
</div>
{/dede:list}
通过这样我们就直接将输出的flag代码直接更换成了文字显示。当然也可以使用图片等一系列显示方式。
方法二、通过PHP直接获取flag属性
结合 $arc->Fields 获取 flag如果想在 {dede:list} 循环外获取当前文章的 flag,可以使用 $arc->Fields:
{dede:list pagesize='20'}
<div>
文章标题:[field:title/] <br>
<?php
$currentFlag = $arc->Fields['flag'];
echo "Flag属性值:$currentFlag <br>";
if (strpos($currentFlag, 'h') !== false) {
echo "<span style='color:red;'>[推荐]</span>";
}
?>
</div>
{/dede:list}
方法三:自定义函数(推荐)
如果你需要多次判断 flag,可以在 include/extend.func.php 里定义一个函数:
// 在 include/extend.func.php 添加:
function GetFlagType($flag) {
if (strpos($flag, 'h') !== false) return '推荐';
if (strpos($flag, 'c') !== false) return '头条';
if (strpos($flag, 'p') !== false) return '图片';
return '普通';
}
自定义函数以后在htm的模板中进行调用。
{dede:list pagesize='20'}
<div>
文章标题:[field:title/] <br>
文章类型:<?php echo GetFlagType($arc->Fields['flag']); ?>
</div>
{/dede:list}
这样也可以输出dedecms内置的flag的文章标签了。
下面我们推荐一个常规的dedecms的flag标签的调用方法。
<style>
.flag-c { color: #f00; font-weight: bold; }
.flag-h { color: #09f; }
.flag-p { color: #690; font-style: italic; }
.flag-normal { color: #999; }
</style>
[field:flag runphp='yes']
$flag = trim(@me);
$tags = [];
if (strpos($flag, 'c') !== false) $tags[] = "<span class='flag-c'>头条</span>";
if (strpos($flag, 'h') !== false) $tags[] = "<span class='flag-h'>推荐</span>";
if (strpos($flag, 'p') !== false) $tags[] = "<span class='flag-p'>图文</span>";
@me = $tags ? implode(' ', $tags) : "<span class='flag-normal'>普通</span>";
[/field:flag]
推荐案例中运用了flag判断模式,内容中有那种flag就会输出到网站页面中,并且通过css设置了显示的样式。