noflag属性有何作用?

99ANYc3cd6
预计阅读时长 14 分钟
位置: 首页 织梦建站 正文

什么是 noflag 属性?

noflag 是织梦CMS自定义标记({dede:})中的一个排除属性,它的作用是:在调用文章列表时,排除掉所有设置了指定标识(flag)的文章

织梦 noflag属性
(图片来源网络,侵删)

它和 flag 属性是相对的。

  • flag='h':只调用设置了 h (头条) 标识的文章。
  • noflag='h':调用所有文章,但排除掉设置了 h (头条) 标识的文章。

noflag 属性的语法和用法

noflag 属性通常用在需要循环输出文章列表的标签中,最常见的有 arclist(文章列表)、list(栏目列表)、likearticle(相关文章)等。

基本语法

{dede:标签名 noflag='标识值' ...}
    <!-- 循环体内的内容 -->
    <a href="[field:arcurl/]">[field:title/]</a>
{/dede:标签名}

标识值

noflag 属性的值是一个或多个标识字符的组合,这些字符是在后台发布文章时,在“高级选项” -> “自定义属性”中设置的。

常见的默认标识有:

  • c:推荐
  • h:头条
  • p:图片
  • j:跳转
  • s:幻灯
  • a:特荐
  • b:滚动
  • f:加粗

注意:这些标识字符是大小写敏感的,通常使用小写。

多个标识的组合

如果你想排除多个标识的文章,可以将它们直接拼接在一起,不需要任何分隔符。

  • noflag='hc':排除所有“头条”和“推荐”的文章。
  • noflag='psj':排除所有“图片”、“幻灯”和“跳转”的文章。

实战场景与示例

理解了概念,我们来看几个实际开发中非常常见的应用场景。

首页调用普通文章,排除头条和推荐

假设你的首页布局是:顶部有一个专门的头条推荐区域,下面是一个“最新文章”列表,这个“最新文章”列表里就不应该再包含头条和推荐的文章,否则内容就会重复。

实现方法:

  1. 在后台发布文章时,给需要作为“头条”或“推荐”的文章,在“自定义属性”中勾选 hc
  2. 在首页模板 (index.htm) 中,编写如下代码来调用普通文章:
<h2>最新文章</h2>
<ul>
    {dede:arclist titlelen='40' row='10' noflag='hc'}
        <li>
            <span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
            <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
        </li>
    {/dede:arclist}
</ul>

代码解析:

  • noflag='hc':这里的关键部分,它告诉织梦,在获取文章列表时,跳过所有 flag 字段中包含 hc 的记录。
  • 这样,即使你最新发布的文章被设为了头条或推荐,它也不会出现在这个列表里,完美实现了内容分离。

栏目页调用文章,排除“图片”和“跳转”文章

假设某个栏目(如“下载中心”)里的文章,一部分是图文并茂的内容(标识 p),一部分是纯文字的下载链接(标识 j),你希望在栏目页只显示纯文字的下载链接。

实现方法:

在栏目模板 (list_article.htm) 中:

<h3>下载列表</h3>
<dl>
    {dede:list pagesize='15' noflag='pj'}
        <dt><a href="[field:arcurl/]">[field:title/]</a></dt>
        <dd>[field:description function='cn_substr(@me,100)'/]...</dd>
    {/dede:list}
</dl>

代码解析:

  • noflag='pj':这个设置会排除掉所有标识为 p (图片) 和 j (跳转) 的文章,栏目页只会显示没有这两个标识的普通文章。

相关文章调用,排除“特荐”文章

页,你希望显示一些相关的普通文章,但不想让“特荐”级别的文章出现在这里,以保持相关文章的“普通”属性。

实现方法: 页模板 (article_article.htm) 中:

<div class="related">
    <h4>相关文章</h4>
    {dede:likearticle titlelen='24' row='8' noflag='a'}
        <li><a href="[field:arcurl/]">[field:title/]</a></li>
    {/dede:likearticle}
</div>

代码解析:

  • noflag='a':在调用与当前文章相关的文章时,排除了所有标识为 a (特荐) 的文章。

noflagflag 的区别与联系

这是一个容易混淆的点,这里做个清晰的对比:

属性 作用 逻辑关系 示例 (只调用普通文章)
flag 包含/只调用,只返回设置了指定标识的文章。 白名单机制。 flag='' (空字符串) 表示调用所有标识为空的文章。
noflag 排除/不调用,返回所有文章,但会过滤掉设置了指定标识的文章。 黑名单机制。 noflag='hc' 表示排除所有设置了 hc 标识的文章。

如何实现“只调用普通文章”?

“普通文章”指的是那些没有设置任何自定义属性的文章,有两种方法可以实现:

  1. 使用 flag (推荐)

    {dede:arclist flag=''}
        ...
    {/dede:arclist}

    flag='' 的意思是,只调用 flag 字段为空的文章,这正是“普通文章”的定义。

  2. 使用 noflag (可以,但不精确)

    {dede:arclist noflag='hcpsjbf'}
        ...
    {/dede:arclist}

    这种方法是把所有已知的标识都列出来进行排除,这种方法有两个缺点:

    • 不灵活:如果你以后新增了一个自定义标识(v 代表视频),你就需要回来修改模板代码。
    • 不彻底:如果有人使用了你未知的自定义标识,这些文章依然会被调用。

如果需求是“只调用普通文章”,优先使用 flag='',如果需求是“排除掉某几类特殊文章”,则使用 noflag


特性 描述
核心功能 排除指定标识的文章,不显示在列表中。
使用标签 主要用于 arclist, list, likearticle 等循环列表标签。
属性值 一个或多个标识字符的直接组合(如 'hc', 'psj'),不分大小写(但建议统一小写)。
flag 的关系 noflagflag 的反向操作。flag 是“只显示”,noflag 是“不显示”。
最佳实践 - 当需要从列表中移除特定类型的内容(如头条、推荐、图片)时,noflag 是最直接、最高效的工具。
- 当需要调用“完全普通”的文章时,使用 flag=''noflag 更精确、更灵活。

掌握 noflag 属性,能让你在织梦模板制作中更加得心应手,轻松实现复杂的内容布局和筛选需求。

-- 展开阅读全文 --
头像
dede网站打开成手机站了
« 上一篇 02-12
织梦DedePHP如何搭建与优化?
下一篇 » 02-12

相关文章

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

目录[+]