# <stl:if> 条件判断

<stl:if
    type="测试类型"
    op="测试操作"
    value="测试值"
    context="所处上下文">
</stl:if>

# 说明

通过 stl:if 标签在模板中根据条件判断显示内容

stl:if 通常作为显示的判断条件,如果条件满足则显示,条件不满足则不显示。

stl:if 标签内可以嵌入任意代码,当条件满足时将显示嵌入的代码。如果需要根据测试是否成功显示不同的结果,需要使用子标签 <stl:yes> 和 <stl:no> ,测试条件成功时将显示 <stl:yes> 中的内容,测试条件失败时将显示 <stl:no> 中的内容。

type 属性指定测试类型,如测试栏目名称、模板名称、当前栏目是否属于指定栏目级别等。

如果需要判断自定义内容属性"XYZ",也可以将type 设置为" XYZ",系统将根据上下文判断栏目或内容的字段"XYZ"的值。

op 属性为测试操作,如是否值等于、不等于、大于、小于、属于等。

value 属性指定测试值,如op="Equals" value="123"(判断指定条件的值是否等于123)。

如果type为"AddDate"或"LastEditDate",value可以采用时间段格式"数字+日期符号",如"1y"、"3m"或"10d",分别代表一年、三个月及十天内添加或编辑的内容。

<stl:if> 标签对应的实体为{stl:if}。

# 子标签

下表显示此标签所有的子标签。

子标签 说明
stl:yes 测试成功显示模板,可以省略
stl:no 测试失败显示模板,可以省略

# 属性

属性 说明
type 测试类型
op 测试操作
value 测试值
context 所处上下文

# type - 测试类型

设置用于 if 测试的类型。

  • "IsUserLoggin" 用户是否已登录
  • "IsAdministratorLoggin" 管理员是否已登录
  • "IsUserOrAdministratorLoggin" 用户或管理员是否已登录
  • "UserGroup" 用户组
  • "ChannelName" 栏目名称
  • "ChannelIndex" 栏目索引
  • "TemplateName" 模板名称
  • "TemplateType" 模板类型,可能的 value 值:
    • "IndexPageTemplate" 首页模板
    • "ChannelTemplate" 栏目模板
    • "ContentTemplate" 内容模板
    • "FileTemplate" 单页模板
  • "TopLevel" 栏目级别
  • "UpChannel" 上级栏目
  • "UpChannelOrSelf" 当前栏目或上级栏目
  • "GroupChannel" 栏目组名称
  • "GroupContent" 内容组名称
  • "IsTop" 内容属性为置顶
  • "IsRecommend" 内容属性为推荐
  • "IsHot" 内容属性为热点
  • "IsColor" 内容属性为醒目
  • "CountOfContents" 内容数
  • "CountOfImageContents" 图片内容数
  • "CountOfChannels" 子栏目数
  • "AddDate" 添加时间
  • "LastEditDate" 最后编辑时间(仅用于判断内容)
  • "ItemIndex" 当前项序号
  • "OddItem" 是否为奇数项
  • "自定义字符串" 栏目或内容的字段名称

# op - 测试操作

设置用于 if 测试的比较操作。

  • "Empty" 值为空
  • "NotEmpty" 值不为空
  • "Equals" 值等于
  • "NotEquals" 值不等于
  • "GreatThan" 值大于
  • "LessThan" 值小于
  • "In" 值属于
  • "NotIn" 值不属于

# value - 测试值

设置用于 if 测试的比较值。

# context - 所处上下文

  • "Content" 内容
  • "Channel" 栏目
  • "SqlContent" 获取数据库数据

# 示例

# 判断值是否为空

下面的例子判断内容副标题是否为空,如果不为空将显示带有副标题的行。

<stl:if type="SubTitle" op="NotEmpty">
  <strong>副标题:</strong><stl:content type="SubTitle"></stl:content>
</stl:if>

# 判断当前栏目名称

<stl:if type="ChannelName" op="In" value="栏目1,栏目2">
  <stl:yes> <p>true</p> </stl:yes>
  <stl:no> <p>false</p> </stl:no>
</stl:if>

# 根据模板类型显示不同内容

下面的例子判断当前模板是不是内容模板。

<stl:if type="TemplateType" op="Equals" value="ContentTemplate">
  <stl:yes>
      这是内容页面
  </stl:yes>
  <stl:no>
      这不是内容页面
  </stl:no>
</stl:if>

# 根据模板名称显示不同内容

下面的例子根据当前模板的模板名称显示不同的内容。

<stl:if type="TemplateName" op="Equals" value="系统首页模板">
  <stl:yes>
      <li><A href="/" class="current">首 页</A></li>
  </stl:yes>
  <stl:no>
      <li>我不是首页</li>
  </stl:no>
</stl:if>

# 突出显示10天内更新的内容

下面的例子显示整个站点中最新更新的 20 篇内容,并突出显示 10 天内更新的内容。

<stl:contents topLevel="0" totalNum="20" order="LastEditDate" scope="All">
  <stl:if type="LastEditDate" op="LessThan" value="10d">
      <stl:yes>
          <li><stl:a target="_blank" style="color:#F00;"></stl:a></li>
      </stl:yes>
      <stl:no>
          <li><stl:a target="_blank"></stl:a></li>
      </stl:no>
  </stl:if>
</stl:contents>

# 判断用户是否登录

下面的例子根据用户是否登录显示不同的内容

<stl:if type="IsUserLoggin">
    <stl:yes>
        欢迎"{user.displayName}"
        <stl:a href="{stl.HomeUrl}">用户中心</stl:a>
        <stl:a href="{stl.LogoutUrl}">退出</stl:a>
    </stl:yes>
    <stl:no>
        <stl:a href="{stl.LoginUrl}">登陆</stl:a>
        <stl:a href="{stl.RegisterUrl}">注册</stl:a>
    </stl:no>
</stl:if>
上次更新: 2020-5-22 12:24:32