我有一个带有两个复选框的复选框列表。我想在检查其中任何一个时输出一个链接。两个复选框可以同时检查,或只检查一个,或者根本不检查。
我有一个名为value的变量,我得到的是dataType 2084,它是复选框列表。
如何检查列表中的单个复选框。 preValues有99和101。
任何可以提供帮助的人都非常感谢!
以下是我的尝试。
<xsl:param name="currentPage"/>
<xsl:param name="parentNode" select="/macro/parentNode"/>
<xsl:template match="/">
<xsl:for-each select="$currentPage/OperationsMap[@id=$parentNode]/MarkerItem">
<xsl:variable name="value" select="umbraco.library:GetPreValues('2084')"/>
<div class="popup-box">
<xsl:if test="$value/preValue[@alias='99'] = '1'">
<div class="colorbox-link-container">
<a href="#" class="colorboxLink">View current gallery</a>
</div>
</xsl:if>
<xsl:if test="$value/preValue[@alias='101'] = '1'">
<div class="colorbox-link-container">
<a href="#" class="colorboxLink">View historical project progress</a>
</div>
</xsl:if>
</div>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:1)
GetPreValues
返回umbraco原始数据类型的数据集,而不是在任何特定内容节点上检查它们的状态。
假设(未指明):
您的数据类型如下所示:
<preValues>
<preValue id="99">Red</preValue>
<preValue id="100">Green</preValue>
<preValue id="101">Blue</preValue>
</preValues>
在将数据类型添加到文档类型时,不知道您给出了复选框列表的属性别名,我将使用以下
MarkerItem/colours
<强>代码:强>
此代码是动态编写的,因此没有时间对其进行测试。
<xsl:for-each select="$currentPage/OperationsMap[@id=$parentNode]/MarkerItem">
<div class="popup-box">
<!-- get the colours checked on MarkerItem -->
<xsl:variable name="colours" select="./colours"/>
<xsl:variable name="coloursValues" select="umbraco.library:Split($colours, ',')" />
<!-- cycle through each of the checked colours -->
<xsl:for-each select="$coloursValues/value">
<xsl:choose>
<xsl:when test=". = 'Red'">
<div class="colorbox-link-container">
<a href="#" class="colorboxLink">View current gallery</a>
</div>
</xsl:when>
<xsl:when test=". = 'Blue'">
<div class="colorbox-link-container">
<a href="#" class="colorboxLink">View historical project progress</a>
</div>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</div>
希望这对你有用。显然,将对颜色及其值的任何引用更新为特定于您的内容。