如果条件添加链接magento?

时间:2015-10-30 06:49:18

标签: xml magento

我的xml代码:

<customer_account>
    <reference name="example_link">
        <action method="addLink" module="example" ifconfig="example/general/enable"><name>my_review</name><path>example/account/list/</path><label>My Review</label></action>
    </reference>
</customer_account>

我正在客户帐户中创建新导航现在我想在该导航中添加一个链接,但我想检查该客户是否批准作为卖家,如果它不赞成我不想在该导航中添加链接怎么能我这样做

2 个答案:

答案 0 :(得分:3)

您可以在customer_account_navigation中添加一个块,并在该块中,如果条件满足,则将链接添加到父块。

所以你的布局就是这样:

<customer_account>
    <reference name="example_link">
        <block type="[module]/customer_link" as="[module]_customer_link" name="[module]_customer_link">
            <action method="addLinkToParentBlock" />
        </block>
    </reference>
</customer_account>

你的街区类看起来像这样:

class [Namespace]_[Module]_Block_Customer_Link extends Mage_Core_Block_Abstract 
{
    public function addLinkToParentBlock() 
    {
        $parent = $this->getParentBlock();
        if ($parent) {
            if (your condition goes here) {
                $parent->addLink(
                    'Label goes here',
                    'Url goes here',
                    'title goes here',
                );

            }
        } 
    }
}

这样,您的块将被实例化。它没有输出,但会调用方法addLinkToParentBlock

参考Marius答案:https://magento.stackexchange.com/a/42547/18722

答案 1 :(得分:2)

使用处理程序并通过观察者更新.. 事件将是

   <controller_action_layout_load_before>
                <observers>
                    <add_link_indashboard>
                        <type>singleton</type>
                        <class>seller/observer</class>
                        <method>addCustomLink</method>
                    </add_link_indashboard>
                </observers>
            </controller_action_layout_load_before>

而不是观察者方法

public function addCustomLink(Varien_Event_Observer $observer){

        if(Check customer condition ){        
                     Mage::app()->getLayout()->getUpdate()->addHandle('customer_link');        
        } 

    }

并在xml中定义链接