Kentico 11:在 text/xml 转换中使用变量
Posted
技术标签:
【中文标题】Kentico 11:在 text/xml 转换中使用变量【英文标题】:Kentico 11: using variables inside text/xml transformations 【发布时间】:2021-05-06 13:59:59 【问题描述】:我正在使用带有文本/xml 转换的轮播 Web 部件。 只需尝试为页面上的每个实例创建一个唯一 ID。 接下来,我想使用 CSS 类将第一个项目设置为活动状态。
对于Webpart 容器部分:
% uniqueId = string.FormatString("carousel-0", InstanceGuid.Substring(0,5)); #%
<div id="%uniqueId%" class="carousel slide" data-ride="carousel">
<div class="carousel-inner">
□
</div>
<a class="carousel-control-prev" href="#%uniqueId%" role="button" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#%uniqueId%" role="button" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
起初这似乎可行,但由于某种原因,它会在 html 中生成一个文本节点。 如何在不生成变量输出的情况下做到这一点?
对于转换部分中的单个轮播项目:
% CssActive = IsFirst() ? "active" : string.Empty %
<div class="carousel-item %CssActive%">
<img src="%Image%" class="w-100 d-block" />
<div class="carousel-caption d-none d-md-block">
<h3>%Title%</h3>
<div>%Body%</div>
</div>
</div>
这不输出任何东西?这甚至可以在转发器中使用IsFirst()
吗?
非常感谢任何帮助!
【问题讨论】:
【参考方案1】:对于 Webpart 容器,我可以使用 HTML/CSS 解决方法:
<div class="d-none">
% uniqueId = string.FormatString("carousel-0", InstanceGuid.Substring(0,5)); #%
</div>
远非理想,所以如果其他人有更好的想法......?
【讨论】:
【参考方案2】:对于转换,您可以使用以下代码:
<div class="carousel-item% if (DataItemIndex == 0) " active" #%">
<div class="card">
<img src="%Image%" class="card-img-top" />
<div class="card-body">
<h3 class="card-title">%Title%</h3>
<div class="card-text">%Body%</div>
</div>
</div>
</div>
Doc
【讨论】:
以上是关于Kentico 11:在 text/xml 转换中使用变量的主要内容,如果未能解决你的问题,请参考以下文章
从 Kentico 10 中的自定义表重复器中过滤重复的列值
Kentico 12 - 如何将单个页面设置为需要身份验证?