You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Magento用Xtento导出产品feed时如何通过XSL substring获取分类路径第三段值

XSL截取分类路径第三段调整方案

现有逻辑问题

当前代码在截取分类路径时,仅通过两次substring-after操作跳过了前两级分类对应的分隔符,未对截取后的剩余字符串做二次截断,因此会输出从第三段开始到路径末尾的全部内容,与仅取第三段值的需求不匹配。

调整后代码

<!--product_type -->
<xsl:element name="product_type">
    <xsl:choose>
        <xsl:when test="string(xtento_mapped_category)">
            <xsl:value-of select="xtento_mapped_category"/>
        </xsl:when>
        <xsl:when test="string(cats/cat[children_count=0]/path_name)">
            <xsl:variable name="path_str" select="cats/cat[children_count=0]/path_name"/>
            <xsl:variable name="after_two_level" select="substring-after(substring-after($path_str,'&gt;'),' &gt; ')"/>
            <xsl:choose>
                <xsl:when test="contains($after_two_level, ' &gt; ')">
                    <xsl:value-of select="substring-before($after_two_level, ' &gt; ')"/>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:value-of select="$after_two_level"/>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:when>
        <xsl:otherwise>
            <xsl:variable name="path_str" select="parent_item/cats/cat[children_count=0]/path_name"/>
            <xsl:variable name="after_two_level" select="substring-after(substring-after($path_str,'&gt;'),' &gt; ')"/>
            <xsl:choose>
                <xsl:when test="contains($after_two_level, ' &gt; ')">
                    <xsl:value-of select="substring-before($after_two_level, ' &gt; ')"/>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:value-of select="$after_two_level"/>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:otherwise>
    </xsl:choose>
</xsl:element>

逻辑说明

  • 完全保留原代码的分支优先级规则:优先输出映射分类值,其次读取当前产品关联的叶子分类路径,最后读取父级产品的关联叶子分类路径
  • 截取逻辑匹配现有路径结构:以路径中的&gt;(即分隔展示的>)为分段标记,连续两次跳过前两段分类内容,和原代码的截取起点完全对齐,不会出现路径错位问题
  • 新增截断逻辑:对跳过前两段后的剩余字符串,优先匹配下一个分隔符,截取分隔符前的内容即为第三段分类值
  • 兼容边界场景:如果分类路径总长度刚好为3段、不存在后续分隔符时,直接输出剩余的字符串内容,不会出现空值报错
  • 效果验证:针对示例路径Women &gt; Undies &gt; Thong Underwear &gt; Cotton Thong Underwear,最终输出值为Thong Underwear,完全匹配需求

注:如果xtento_mapped_category返回的也是带相同分隔符的路径字符串,可将对应分支的输出逻辑替换为上述相同的截取流程,保证全字段输出规则统一。


内容的提问来源于stack exchange,提问作者ovadt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 08:06:07