使用 ISSLOT 标签获取插槽项目的位置

Get position of slot item using ISSLOT tag

实际上我正在使用 isslotiterator 并且我必须使用循环循环来获取具有属性 counter.

的每个插槽项的位置

我想知道是否有可能获得 <isslot> 的职位。 假设我有一个包含 3 个条目的插槽。

所以当我在插槽项 ISML 中调用 <isslot> 时,我可以这样做: #Pagelet:位置#

结果为:1 / 2 / 3

不,我不认为这是可能的。 <isslot> 不会将位置信息传递给 pagelet,它只是呈现它。为了更好地控制插槽项的呈现方式,引入了 isslotiterator 标签。

如果您不想使用计数器,您可以从 SlotPageletAssignment 对象获取位置信息。 看看demo首页的Carousel组件

app_sf_responsive_cm/release/templates/default/component/common/Carousel.isml

你可以看到他们使用 AssignmentsAlias 键来获取 SlotPageletAssignment

<isslotiterator Slot="#Pagelet:SubSlot("app_sf_responsive_cm:slot.carousel.items.pagelet2-Slot")#" AssignmentsAlias="CarouselPageletAssignments">
<isloop iterator="CarouselPageletAssignments" alias="CarouselPageletAssignment" counter="i">
    #CarouselPageletAssignment:Position# - #CarouselPageletAssignment:getSubPagelet#<br/>
</isloop>

不幸的是 position 不是类型 Pagelet 的特征。如果成功做到这一点,您需要使用 PageletAssignment。因此,您需要使用 PageletAssignment:Position.

而不是 Pagelet:Position

但是

isslot 正在为您的“插槽项目 ISML”准备渲染字典,其中不包含导致此“插槽项目”的分配。它只包含项目本身(又名。pagelet)。原因是插槽可以定义一个 Pagelet Pipeline,它完全动态地确定 pagelet,而不需要分配。

我的建议:要么使用 isslotiteratorAssignmentsAlias(简单),要么使用在插槽的插槽定义中定义的 pagelet 管道(更复杂)。