1

ユーザーの myaccount に新しいタブを作成するためのモジュールを作成しています。「My Special Products」という名前のタブが正常に追加されました。問題は、そのタブをクリックすると 404 エラー ページにリダイレクトされることです。問題を取得できません。

私のレイアウト xml(customtabs.xml) コードは次のとおりです。

<?xml version="1.0"?>
<layout version="0.1.0">
<customer_account>
    <!-- Mage_Review -->
    <reference name="customer_account_navigation" before="-" >
        <action method="addLink" translate="label" module="customer">
            <name>newtab</name>
            <url>customer/newtab/</url>
            <label>My Special Products</label>
        </action>
    </reference>
</customer_account>


<customer_account translate="label">
 <label>Customer My Special Products</label>
    <update handle="customer_account"/>
     <reference name="my.account.wrapper">
        <block type="customer/newtab_newtab" name="customer_newtab_newtab" template="customer/newtab/newtab.phtml"/> 
    </reference>
</customer_account>
</layout>

テンプレート ページは template\customer\newtab\newtab.phtml にあります。

モジュール「Customtabs」の私のconfig.xmlは次のとおりです。

<?xml version="1.0"?>

<config>
<modules>
    <Fishpig_Customtabs>
        <version>0.1.0</version>
    </Fishpig_Customtabs>
</modules>
<global>
    <blocks>
        <customtabs>
            <class>Fishpig_Customtabs_Block</class>
        </customtabs>
    </blocks>
    <models>
        <customtabs>
            <class>Fishpig_Customtabs_Model</class>
        </customtabs>
    </models>
     <helpers>
        <customtabs>
            <class>Fishpig_Customtabs_Helper</class>
        </customtabs>
    </helpers>
</global>
<frontend>
    <layout>
        <updates>
            <customtabs>
                <file>Customtabs.xml</file>
            </customtabs>
        </updates>
    </layout>
</frontend>
<adminhtml>
    <layout>
        <updates>
            <customtabs>
                <file>customtabs.xml</file>
            </customtabs>
        </updates>
    </layout>
    <events>
        <catalog_product_save_after>
            <observers>
                <fishpig_save_product_data>
                    <type>singleton</type>
                    <class>customtabs/observer</class>
                    <method>saveProductTabData</method>
                </fishpig_save_product_data>
            </observers>
        </catalog_product_save_after>
    </events>
</adminhtml>
</config>

どこに問題があるのか​​ 、誰でも私を助けることができます。

4

1 に答える 1

1

このタブのURLを設定すると、どこかに<url>customer/newtab/</url> コントローラーが必要です。newtab

  1. <routers>まず、モジュールの config.xml に partを追加する必要があります。これを .xml に入れ<frontend>ます。

     <routers>
        <customtabs>
            <use>standard</use>
            <args>
                <module>Fishpig_Customtabs</module>
                <frontName>customtabs</frontName>
            </args>
        </customtabs>
    </routers>
    
  2. customtabs.xml ファイルに変更<url>customer/newtab/</url>します。<url>customtabs/newtab</url>また、

    <customtabs_newtab_index>
        <update handle="customer_account"/>
         <reference name="my.account.wrapper">
            <block type="customer/newtab_newtab" name="customer_newtab_newtab" template="customer/newtab/newtab.phtml"/> 
        </reference>
    </customtabs_newtab_index>
    
  3. code/local/Fishpig/Customtabs/controllers/NewtabController.php にコントローラーを作成します。

  4. あなたのコードは

    class Fishpig_Customtabs_NewtabController extends Mage_Core_Controller_Front_Action
    {
        public function indexAction()
        {         
    
            if(!Mage::getSingleton('customer/session')->isLoggedIn())
            {
                Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('customer/account'));
                return false;
            }    
            $this->loadLayout();
            $this->_initLayoutMessages('customer/session');
    
            $this->getLayout()->getBlock('head')->setTitle($this->__('My Special Products'));
            $this->renderLayout();
        }
    
    }
    
  5. app/code/local/Fishpig/Customtabs/Block/Customtabs.php としてブロック ファイルを追加します。

そこにコードを入れて、

class Fishpig_Customtabs_Block_Customtabs extends Mage_Core_Block_Template
{
    public function _prepareLayout()
    {
        return parent::_prepareLayout();
    }

    public function getCustomtabs()     
    { 
        if (!$this->hasData('customtabs')) {
            $this->setData('customtabs', Mage::registry('customtabs'));
        }
        return $this->getData('customtabs');

    }
}

customtabs.xml ファイルでブロック タイプを変更します。

<block type="customtabs/customtabs" name="customer_newtab_newtab" template="customer/newtab/newtab.phtml" />
于 2013-07-10T06:54:45.587 に答える