1

我是 Magento 新手,我正在尝试将我的购物车链接与导航栏中的其他链接分开。

我做了这些步骤:1)在下配置了一个新模块etc/modules

<?xml version="1.0"?>
<config>
    <modules>
        <Marco_TopRightLinks>
            <active>true</active>
            <codePool>local</codePool>
        </Marco_TopRightLinks>
    </modules>
</config>

2)在文件中添加app/code/local/Marco/TopRightLinks/BlockLinks.php内容如下:

class Marco_TopRightLinks_Block_Links extends Mage_Checkout_Block_Links
{
    protected function _construct()
    {
        $this->setTemplate('page/template/logged-links.phtml');
    }
}

3)添加app/code/local/Marco/TopRightLinks/etcconfig.xml文件中,内容如下:

<config>
    <modules>
        <Marco_TopRightLinks>
            <version>0.1.0</version>
        </Marco_TopRightLinks>
    </modules>
    <global>
        <blocks>
            <topright>
                <class>Marco_TopRightLinks_Block</class>
            </topright>
        </blocks>
    </global>
</config>

4)page.xml从此改变:

<block type="page/html_header" name="header" as="header">
  <block type="page/template_links" name="top.links" as="topLinks"/>

对此:

<block type="page/html_header" name="header" as="header">
  <block type="page/template_links" name="top.links" as="topLinks"/>
  <block type="topright/links" name="top.right_links" as="topRightLinks"/>

5)checkout.xml从此改变:

对此:

<!-- Mage_Checkout -->
<reference name="top.right_links">
  <block type="topright/links" name="checkout_cart_link">
    <action method="addCartLink"></action>
    <!--<action method="addCheckoutLink"></action>-->
  </block>
</reference>

[my_template]/page/templateright-links.phtml文件下添加

这会导致 Magento 异常:

Invalid method Marco_TopRightLinks_Block_Links::removeLinkByUrl(Array
(
  [0] => http://mysitecom/checkout/cart/
)

你能帮助我了解正在发生的事情以及我能做些什么吗?(我不想触及任何内部 magento 方法,我相信addCartLink它的效果很好:D)我的目标只是将购物车链接移到另一个地方到我的 html 中

编辑:如果,而不是扩展Mage_Checkout_Block_Links

class Marco_TopRightLinks_Block_Links extends Mage_Checkout_Block_Links

我扩展Mage_Page_Block_Template_Links

class Marco_TopRightLinks_Block_Links extends Mage_Page_Block_Template_Links

异常变化

Invalid method Marco_TopRightLinks_Block_Links::addCartLink
4

3 回答 3

0

尝试将 cinnfig .xml 中的 topright 替换为 toprightlinks

<config>
    <modules>
        <Marco_TopRightLinks>
            <version>0.1.0</version>
        </Marco_TopRightLinks>
    </modules>
    <global>
        <blocks>
            <toprightlinks>
                <class>Marco_TopRightLinks_Block</class>
            </toprightlinks>
        </blocks>
    </global>
</config>
于 2013-06-17T13:55:19.283 回答
0

错误是checkout.xml我不应该替换块类型。Magento 应该使用它自己的。我应该只更改块类型page.xml,因此容器正在更改,而内容保持不变

于 2013-06-17T16:33:00.107 回答
0

在这里,我给你一个想法,用你的自定义块将模板从一个更改为另一个

您可以通过布局系统添加您的块(这也是添加正常内容的方式)?

如果您还没有为您的模块定义一个布局 XML 文件:

<frontend>
    <layout>
        <updates>
            <your_module module="Your_Module">
                <file>your/module.xml</file>
            </your_module>
        </updates>
    </layout>
</frontend>

使用您的布局文件 (app/design/frontend/base/default/layout/your/module.xml) 将块添加到布局更新句柄。例子:

<?xml version="1.0"?>
<layout>
    <a_handle_for_you>
        <reference name="content">
            <block type="core/text" name="yourblock">
                <action method="setText">
                    <arg>You should see this text.</arg>
                </action>
            </block>
        </reference>
    </a_handle_for_you>
    <checkout_onepage_success>
        <update handle="a_handle_for_you" />
    </checkout_onepage_success>
    <checkout_multishipping_success>
        <update handle="a_handle_for_you" />
    </checkout_multishipping_success>
</layout>

您也可以参考Magento 知识库。深入了解解决您的问题

于 2013-06-17T14:55:13.650 回答