使用url帮助器更新Magento layout.xml-我总是得到一个数组而不是url

使用url帮助器更新Magento layout.xml-我总是得到一个数组而不是url,magento,Magento,我想在一些将由扩展生成的站点中插入规范的元标记。因此,我在扩展的layout.xml中插入了以下代码: <reference name="head"> <action method="addLinkRel"> <rel>canonical</rel> <href><url helper="core/url/getCurrentUrl"/></hre

我想在一些将由扩展生成的站点中插入规范的元标记。因此,我在扩展的layout.xml中插入了以下代码:

    <reference name="head">
        <action method="addLinkRel">
            <rel>canonical</rel>
            <href><url helper="core/url/getCurrentUrl"/></href>
        </action>
    </reference>

典型的
但我总是得到“数组”而不是url。我做错了什么

如果我想让它工作,我是只得到
www.mystore.com/productxy.html
还是完整的url
www.mystore.com/productxy.html?page=3

因为我只需要第一个,没有参数。

我很确定你做不到。您得到的是一个
数组
,因为它将
XML节点解释为
数组
。此操作将处理函数
addLinkRel
,而不是
帮助程序(从不)

更好(也更有趣)的方法是创建一个模块,您可以在其中定义一个新的块类型来呈现

以下是我的做法,大约需要4个文件:

app/code/community/electrical/Canonical/etc/config.xml
因此,这基本上只是我在几分钟内草拟的一份草稿,我对另一类问题使用了相同的解决方案(但范围相似)。所以,如果你想的话,让它旋转一下

我很确定你不能那样做。您得到的是一个
数组
,因为它将
XML节点解释为
数组
。此操作将处理函数
addLinkRel
,而不是
帮助程序(从不)

更好(也更有趣)的方法是创建一个模块,您可以在其中定义一个新的块类型来呈现

以下是我的做法,大约需要4个文件:

app/code/community/electrical/Canonical/etc/config.xml
因此,这基本上只是我在几分钟内草拟的一份草稿,我对另一类问题使用了相同的解决方案(但范围相似)。所以,如果你想的话,让它旋转一下

您的代码几乎正确。尽管您只能在标签的
正下方的标签上使用布局xml中的
helper
属性。幸运的是,您错误地添加了额外的
标记,因此应该可以:

<reference name="head">
    <action method="addLinkRel">
        <rel>canonical</rel>
        <href helper="core/url/getCurrentUrl"/>
    </action>
</reference>

典型的

Mage\u Core\u Helper\u Url::getCurrentUrl()
$\u服务器返回
请求URI
。该变量包含查询,因此不幸的是,它没有您可能认为的那么有用。

您的代码几乎是正确的。尽管您只能在标签的
正下方的标签上使用布局xml中的
helper
属性。幸运的是,您错误地添加了额外的
标记,因此应该可以:

<reference name="head">
    <action method="addLinkRel">
        <rel>canonical</rel>
        <href helper="core/url/getCurrentUrl"/>
    </action>
</reference>

典型的
Mage\u Core\u Helper\u Url::getCurrentUrl()
$\u服务器返回
请求URI
。该变量包含查询,因此不幸的是,它没有您可能认为的那么有用。

这太长了(我是新手)。在布局XML文件中获取资源的当前URL有那么难吗?这太长了(我是新手)。在布局XML文件中获取资源的当前URL有那么难吗?
<?php $currentUrl = Mage::helper('core/url')->getCurrentUrl(); ?>
<link rel="canonical" href="<?php echo $currentUrl ?>" />
<?xml version="1.0"?>
<config>
  <modules>
    <Electricjesus_Canonical>
      <active>true</active>
      <codePool>community</codePool>
      <version>0.1.0</version>
    </Electricjesus_Canonical>
  </modules>
</config>
<reference name="head">
    <block type="canonical/link" name="canonical_link" template="canonical/link.phtml" />
</reference>
<reference name="head">
    <action method="addLinkRel">
        <rel>canonical</rel>
        <href helper="core/url/getCurrentUrl"/>
    </action>
</reference>