Question

I am creating a module for creating new tab in User's myaccount. I have successfully added a tab named "My Special Products". Problem is that when i click on that tab it's redirect to 404 error page. I am not able to getting the problem.

My layout xml(customtabs.xml) code is:

<?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>

My template page is at template\customer\newtab\newtab.phtml

My config.xml for module "Customtabs" is :

<?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>

Any one can help me where is the problem.

Was it helpful?

Solution

You set url for this tab as <url>customer/newtab/</url> so, you should have controller of newtab somewhere,

  1. First you need to add <routers> part in your module's config.xml, put this in <frontend>.

     <routers>
        <customtabs>
            <use>standard</use>
            <args>
                <module>Fishpig_Customtabs</module>
                <frontName>customtabs</frontName>
            </args>
        </customtabs>
    </routers>
    
  2. change <url>customer/newtab/</url> to <url>customtabs/newtab</url> in customtabs.xml file. also put,

    <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. create a controller at code/local/Fishpig/Customtabs/controllers/NewtabController.php

  4. in that your code should be

    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. Add a block file as app/code/local/Fishpig/Customtabs/Block/Customtabs.php

and put there code,

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');

    }
}

and change your block type in your customtabs.xml file

<block type="customtabs/customtabs" name="customer_newtab_newtab" template="customer/newtab/newtab.phtml" />
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top