cancel
Showing results for 
Search instead for 
Did you mean: 

Module aggregation and page redesign

Module aggregation and page redesign

I'm need need of a few pointers regarding a website built using Magento, which I inherited the maitenance.

 

I must say that I'm a complete noob when it comes to Magento (although I'm familiar with Joomla and a bit of Wordpress) and I've already read some documentation regarding module creation and configuration.

 

The site is built and fully functional but now the client has requested a redesign to the "customer dashboard" part of the site (basically, where the customers manage their account, orders, personal information and so on) and I'm completely lost with how things should be done which is frustrating.

 

So, currently the "customer dashboard" thing is a two column layout on which a column on the left has a menu to point/navigate to different parts of the customer account data, which, I already understood, point to different modules (is this the correct term??) like, e.g., "customer/account/", "sales/order/history/", "customerdashboard/deliverydetails/edit/" and so on..

 

Current layout example:

+-----------------+
| ----- | ------- |
| menu  | module  |
| items |  data   |
| ----- | ------- |
+-----------------+

 

What we want now is to have a different layout in which, instead of navigating through menus to see different modules, we want to have a single page in which the different menus represent a portion of the page (similar to a single page site layout without it being exactly one), e.g.:

 

The intended layout:

+------------------+
| ------ | ------- |
| module | module  |
|    1   |    2    |
| -----  | ------- |
| module | module  |
|    3   |    4    |
| ------ | ------- |
+------------------+

 

Given that the code is already there and just a few visual tweaks are required to said modules (in order to fit in the new layout) how can I achieve this?
I thought that all I would need to do would be to define the base page (customerdashboard), re-arrange the layout and "copy/paste" the code from the other pages into this new layout but that doesn't seem to be working.

Now, the items in which I need some help:

 

  1. Is my way of thinking correct?
  2. Do I need to do major changes to the "Blocks", "etc", "controllers" and so on?
  3. Do I need to have a new config.xml or edit the existing one(s)?
  4. Should I just create a completely new page and respective components, controllers, models, etc (and so on), in order to achieve what I need?

 

Best Regards,

1 REPLY

Re: Magento page redesing and module aggregation

I'm sorry to press on this matter again, but could anyone give a little help please?

 

I've already come to the conclusion that at least the local.xml file I'll have to modify, but I'm having trouble realizing how can I get all these modules on a single page. For now, I've done this analysis:

 

Current modules navigated to by left menu items:

/customer/account/

/customer/account/edit/

/sales/order/history/

/discounts/

/customerdashboard/index/paymentdetails/

/customerdashboard/index/changepassword/

/customerdashboard/deliverydetails/edit/

 

Example:

 

Once the user logs in, he is taken into "/customerdashboard/" which then redirects to "/customer/account/".

 

On the local.xml file I have:

 

 

<customer_account>
        <remove name="cms.category.sidebar.container"/>
        <reference name="left">
            <action method="unsetChild">
                <name>reorder</name>
            </action>
        </reference>
        <reference name="my.account.wrapper">
            <action method="setElementClass">
                <value>my-account</value>
            </action>
        </reference>
        <reference name="content">
            <action method="insert">
                <blockName>customer_account_navigation</blockName>
            </action>
        </reference>
        <reference name="customer_account_navigation">
            <action method="addLink" translate="label"><name>discounts</name><path>discounts</path><label>Discounts</label></action>
            <action method="addLink" translate="label"><name>paymentdetails</name><path>customerdashboard/index/paymentdetails</path><label>Payment Details</label></action>
            <action method="addLink" translate="label"><name>changepassword</name><path>customerdashboard/index/changepassword</path><label>Change password</label></action>
            <action method="addLink" translate="label"><name>deliverydetails</name><path>customerdashboard/deliverydetails/edit</path><label>Delivery Details</label></action>
            <action method="addLink" translate="label"><name>referral</name><path>myClientName/referral</path><label>Refer a friend</label></action>
        </reference>
    </customer_account>

 

 

Then, I've realized that the template for these pages is based on 2columns-left.phtml which has the following code:

 

<?php echo $this->getChildHtml('after_body_start') ?>
<div class="container customer-top-page">
    <div class="customer-dashboard-box">
        <?php echo $this->getChildHtml('global_notices') ?>
        <?php echo $this->getChildHtml('header') ?>
        <?php echo $this->getChildHtml('breadcrumbs') ?>
			<div class="row main-container col2-left-layout">
			
          <div class="sidebar col-left col-md-4 hidden-sm hidden-xs">
                <?php echo $this->getChildHtml('left') ?>
            </div>
            <div class="col-main col-md-8">
                <?php echo $this->getChildHtml('global_messages') ?>
                <?php echo $this->getChildHtml('content') ?>
            </div>
        </div>
        <!-- Moved footer out of customer dashboard box -->
    </div>
    <?php echo $this->getChildHtml('footer') ?>
</div>

 

Also, this 2columns-left.phtml belongs to \app\design\frontend\carbon\myClientName\template\page

 

So, the local.xml code I've pasted builds the left side menu (<?php echo $this->getChildHtml('left') ?>), but I can't understand how the content is being inserted or, how to get rid of this menu and just get all the content that is currently spread across multiple modules into one page.