缩短Magento输出文件中的文件名

时间:2016-08-02 14:52:27

标签: magento xslt

首先,如果我在帖子中说出愚蠢的话,请接受我的道歉!我真的不明白这种编程语言,到目前为止只通过反复试验!

我正在尝试将Magento订单输出到文件中,准备上传到我们的POS。

到目前为止,这是我的模板:

<?xml version="1.0"?>
<files>
<file filename="%lastincrementid%.txt">
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl">
<xsl:output method="text"/>

<xsl:variable name="sepstart" select="'&#34;'"/> <!-- &#34; field start seperator, including '' -->
<xsl:variable name="sepend" select="'&#34;,'"/> <!-- field end seperator, including '' -->

<xsl:template match="/">

<xsl:for-each select="orders/order">
<xsl:for-each select="items/item">
<xsl:value-of select="$sepstart" /><xsl:value-of select="normalize-space(sku)"/><xsl:value-of select="$sepend" />
<xsl:value-of select="$sepstart" /><xsl:value-of select="normalize-space(qty)"/><xsl:value-of select="$sepend" />
<xsl:value-of select="$sepstart" /><xsl:value-of select="normalize-space(price)"/><xsl:value-of select="$sepend" />
<xsl:value-of select="$sepstart" /><xsl:value-of select="normalize-space(row_total)"/><xsl:value-of select="$sepend" />
<xsl:value-of select="$sepstart" /><xsl:value-of select="normalize-space(../../increment_id)"/><xsl:value-of select="$sepend" />

<xsl:text>&#xD;&#xA;</xsl:text>
</xsl:for-each>
</xsl:for-each>
</xsl:template>

</xsl:stylesheet>
</file>
</files>

%lastincrementid%的格式是一个9位数字,例如100007654.

文件名目前设置为这个9位数字但我希望它只是最后4位数字,即7654。

任何人都可以请我告诉我如何去做吗?我将永远感激........: - )

1 个答案:

答案 0 :(得分:1)

尝试使用substring() ...

<xsl:value-of select="substring(normalize-space(../../increment_id),6,4)"/>

编辑(完全猜测试图完成的内容)

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:php="http://php.net/xsl">
  <xsl:output method="text"/>

  <xsl:variable name="sepstart" select="'&#34;'"/>
  <!-- &#34; field start seperator, including '' -->
  <xsl:variable name="sepend" select="'&#34;,'"/>
  <!-- field end seperator, including '' -->

  <xsl:template match="/">
    <xsl:variable name="id">%lastincrementid%</xsl:variable>
    <files>
      <file filename="{substring($id,6,4)}.txt">

        <xsl:for-each select="orders/order">
          <xsl:for-each select="items/item">
            <xsl:value-of select="$sepstart"/>
            <xsl:value-of select="normalize-space(sku)"/>
            <xsl:value-of select="$sepend"/>
            <xsl:value-of select="$sepstart"/>
            <xsl:value-of select="normalize-space(qty)"/>
            <xsl:value-of select="$sepend"/>
            <xsl:value-of select="$sepstart"/>
            <xsl:value-of select="normalize-space(price)"/>
            <xsl:value-of select="$sepend"/>
            <xsl:value-of select="$sepstart"/>
            <xsl:value-of select="normalize-space(row_total)"/>
            <xsl:value-of select="$sepend"/>
            <xsl:value-of select="$sepstart"/>
            <xsl:value-of select="normalize-space(../../increment_id)"/>
            <xsl:value-of select="$sepend"/>

            <xsl:text>&#xD;&#xA;</xsl:text>
          </xsl:for-each>
        </xsl:for-each>
      </file>
    </files>
  </xsl:template>

</xsl:stylesheet>