0

我正在使用的购物车下拉插件具有以下 XML,我无法将其移动到顶部链接。

<?xml version="1.0"?>
<layout version="0.1.0">
    <default>
        <reference name="head">
            <action method="addCss"  ifconfig="cartdrop/general/enabled"><stylesheet>css/cartdrop.css</stylesheet></action>
            <action method="addJs"  ifconfig="cartdrop/general/enabled"><script>lib/jquery-1.4.2.min.js</script></action>
            <action method="addJs"  ifconfig="cartdrop/general/enabled"><script>lib/cartdrop.js</script></action>
        </reference>

     <reference name="top.container">
            <!--<action method="setTemplate" ifconfig="cartdrop/general/enabled"><template>cartdrop/template/header.phtml</template></action>-->

<block type="core/template" name="cartheader_sidebar" template="cartdrop/cartheader.phtml">         
    <block type="checkout/cart_sidebar" name="cart_sidebar" template="checkout/cart/sidebar.phtml" before="-">
        <action method="addItemRender"><type>simple</type><block>checkout/cart_item_renderer</block><template>checkout/cart/sidebar/default.phtml</template></action>
        <action method="addItemRender"><type>grouped</type><block>checkout/cart_item_renderer_grouped</block><template>checkout/cart/sidebar/default.phtml</template></action>
        <action method="addItemRender"><type>configurable</type><block>checkout/cart_item_renderer_configurable</block><template>checkout/cart/sidebar/default.phtml</template></action>
        <block type="core/text_list" name="cart_sidebar.extra_actions" as="extra_actions"/>
    </block>
</block>

        </reference>
    </default> 
</layout>

我尝试将参考名称更改为reference name="topLinks"reference name="top.Links"

我也尝试复制块并将其粘贴到 local.xml 下<reference name="top.links"> 并将其放入 page.xml 但无济于事。



4

2 回答 2

0

应该是<reference name="top.links">属性所说的->引用NAME

不显示的问题是:-看top.links->的定义<block type="page/template_links" name="top.links" as="topLinks"/> -然后去Mage/Page/Block/Template/Links.php

class Mage_Page_Block_Template_Links extends Mage_Core_Block_Template
{
    ...

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

    ...
}

现在我们知道top.links从 扩展core/template。对于那些从core/template需要模板扩展的块(不是很简单),它将显示模板内的所有内容(在您的情况下,模板是page/template/links.phtml

对于模板,为了能够渲染它的子模板,它应该显式调用getChildHtml

<?php echo $this->getChildHtml(); ?>-> 将渲染它下面的所有孩子

<?php echo $this->getChildHtml('cartheader_sidebar'); ?>-> 将使用别名/名称呈现孩子cartheader_sidebar

这意味着如果你想cartheader_sidebar显示top.links,你需要<?php echo $this->getChildHtml('cartheader_sidebar'); ?>输入page/template/links.phtml

PS:我没有检查你的布局,我认为它已经是正确的

于 2012-08-20T03:07:56.383 回答
0

布局 XML:

 <block class="Magento\Framework\View\Element\Html\Link" name="cart-link" template="Magento_Theme::cart_link.phtml">
            <arguments>
                <argument name="label" xsi:type="string" translate="true">Cart</argument>
                <argument name="path" xsi:type="string" translate="true">#/</argument>
            </arguments>
        </block>

和:

    <move element="minicart" destination="cart-link" />

购物车链接.phtml:

 <li>My Cart
 <?php echo $block->getChildHtml('minicart');?>
 </li>
于 2020-04-01T14:05:23.160 回答