Git Product home page Git Product logo

globalhandle's Introduction

GlobalHandle

Adds a new Global Handle to layouts to override anything as a final layout directive

Magento's default layout loading order is as such:

 default
 STORE_bare_us
 THEME_frontend_default_default
 helloworld_index_index
 customer_logged_out

The issue is that there is no 'last' global layout handle that allows you to make a change to any previous layout directive.
An example of such a requirement is to have the ability to globally change all the root templates

This module simply injects a new layout handle as the last layout handle called

<GLOBAL_OVERRIDE>

Using this, it is, for example possible to override all page layouts to one base template, as apart from having to refer to eache handle seperately.

<GLOBAL_OVERRIDE>
    <reference name="root">
        <action method="setTemplate"><template>page/3columns.phtml</template></action>
        <action method="setIsHandle"><applied>1</applied></action>
    </reference>
</GLOBAL_OVERRIDE>

This then effectively makes the entire site 3columns, and no page is accidentally missed, and display in the wrong column structure.

The following handles are also now injected:

CMS_<PAGE_NAME>  : example CMS_about_us<br/>
CATEGORY_<name>  : example CATEGORY_best_sellers<br/>

DYNAMIC HANDLE

Inject a new handle based on the given GET or POST variable called 'dynamic' An example would be to inject a new handle to display a custom registration page In this example we called it 'slim'

/customer/account/create/dynamic/slim/ is the url used

which will inject a new handle called : slim_dynamic_handle which you can target via layout xml:

<slim_dynamic_handle translate="label">
    <update name="customer_account_create"/>
    <label>Customer Account Slim Registration Form</label>
    <!-- Mage_Customer -->
    <remove name="right"/>
    <remove name="left"/>
    <remove name="header"/>
    <remove name="footer"/>
    <reference name="head">
        <action method="addCss"><stylesheet>css/slim.css</stylesheet></action>
    </reference>
    <reference name="root">
        <action method="setTemplate"><template>page/1column.phtml</template></action>
    </reference>
    <reference name="customer_form_register">
        <action method="setTemplate"><template>customer/form/slim.phtml</template></action>
    </reference>
</slim_dynamic_handle>

The end result of the above would be a scaled down version of the account registration, with its own template file, css etc

Another example would be to add a new field (example a coupon field) to the registration form:

/customer/account/create/dynamic/coupon/ is the url used

then in local.xml you can use:

<coupon_dynamic_handle translate="label">
    <update name="customer_account_create"/>
    <reference name="customer_form_register">
        <block type="customer/form_register" name="form.additional.info" template="customer/form/fields/coupon.phtml"/>
        <remove name="inchoo_socialconnect_register"/>
    </reference>
</coupon_dynamic_handle>

which will inject the template customer/form/fields/coupon.phtml into the registration form

The template itself would simply the the field:

<li class="fields">
    <div class="field">
       <label for="email_address" class="required"><em>*</em><?php echo $this->__('Enter Coupon') ?>
       </label>
 
       <div class="input-box">
            <input autocomplete="off" placeholder="<?php echo $this->__('Enter Your Coupon Here') ?>" type="text"
                   name="coupon" id="coupon"
                  value="<?php echo $this->escapeHtml($this->getFormData()->getCoupon()) ?>"
                  title="<?php echo $this->__('Coupon') ?>"
                  class="input-text required-entry"/>
       </div>
   </div>
</li>

Our Premium extensions:

Magento Free Gift Promotions The ultimate magento gift promotions module - clean code, and it just works!

Magento Dynamic Category Products Automate Category Product associations - assign any product to a category, using various rules.

globalhandle's People

Contributors

proxiblue avatar sprankhub avatar

Watchers

Daco de la Bretonière avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.