# <stl:if> Conditional judgment
<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>