1

カスタムphtmlにトップリンクを追加することに少し行き詰まっています.xmlのリンクブロックを削除しました.<remove name="top.links"/>いくつかの条件が真になった後、このブロックを再度追加したいと思います.トップメニューにこのコードを使用すると機能しますが、リンク

$block = Mage::getSingleton('core/layout');     
        echo $block->createBlock('catalog/navigation')->setTemplate('catalog/navigation/top.phtml')->toHtml();

これは機能し、トップ メニューが表示されますが、以下のコードでは何も表示されません。

        $block = Mage::getSingleton('core/layout');
        echo $block->createBlock('page/template_links')->setTemplate('page/template/links.phtml')->toHtml();

何か助けて???

4

1 に答える 1

0

オブザーバーを使用した後、当分の間問題を解決します。これは別の方法だと思います。私の設定では、oberserを次のように定義します。

 <frontend>
        <events>
            <controller_action_layout_generate_xml_before>
                <observers>
                    <Mymodule>
                        <class>Mymodule_Model_Observer</class>
                        <method>addmyblock</method>
                    </Mymodule>
                </observers>
            </controller_action_layout_generate_xml_before>
        </events> 
</frontend>

oberser では、単純にブロックをチェックして削除します。

<?php
class Mymodule_Model_Observer
{
    public function addmyblock(Varien_Event_Observer $observer)
    {
         if(Mage::getStoreConfig("mymodule/general/enable")==1) 
    {
        $layout = $observer->getLayout();
        $layout->getUpdate()->addUpdate('<remove name="top.search"/>
        <remove name="top.links"/>');              
         $layout->generateXml();
     }
    }
}.

また、xml からコードを<remove name="top.links"/>削除しました。そのため、コードは条件が true になったときにのみブロックを削除します。

于 2013-05-23T06:53:35.900 に答える