Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>First things first. Make sure you've cleared out your Magento application cache. All layout XML is cached by Magento, so dropping a new file in there isn't enough to trigger any changes.</p> <p>It sounds like your left hand column isn't rendering. Here's a few possible reasons for this</p> <ol> <li><p>Your root template to is being set to something other than the two column left layout</p></li> <li><p>A &lt;remove /&gt; tag is being injected into the layout somewhere that's zapping your left column</p></li> <li><p>Your "left" block is being overridden so that it doesn't have the child blocks it needs to properly render</p></li> </ol> <p>So, step 1 is to figure out which of the three this is. Place some arbitrary but noticeable text in all your php/phtml files (i tend towards something like &lt;h1&gt;one&lt;/h1&gt;, &lt;h1&gt;two&lt;/h1&gt;, etc.) so you can tell which files are <strong>actually</strong> being loaded. </p> <p>There's also a template debug setting in </p> <pre><code>System-&gt;Configuration-&gt;Developer-&gt;Debug-&gt;Template Path Hints </code></pre> <p>which does something similar. If you want to use this you'll need to drill down to a specific configuration scope (you can't set it on default) </p> <p>While doing either of these won't point to the direct problem, they will (hopefully) let you rule out individual causes. </p> <p>There's an important thing to keep in mind about layouts. The names of those XML files are arbitrary. They way layouts work is <strong>all</strong> the layout XML is combined into one giant XML file. Then, for each request, this large XML file is reduced depending on what "handles" a page request has. A handle is something like &lt;default&gt; or &lt;checkout_cart_index&gt;. In other words, something in any of your other layout files may be causing you problems on the checkout page, <strong>not</strong> just things in customer.xml.</p> <p>It's also possible that the Magento site you're working with has a controller or two that's overridden, which would change the layout handles that Magento looks for with any page request.</p> <p>Point being, there's a number of things that could be causing this, and we need to peek inside Magento's internals. Install this module in your development environment (it's an experimental debugging thing I'm working on)</p> <p><a href="http://alanstorm.com/2005/projects/Layoutviewer.tar.gz" rel="nofollow noreferrer"><a href="http://alanstorm.com/2005/projects/Layoutviewer.tar.gz" rel="nofollow noreferrer">http://alanstorm.com/2005/projects/Layoutviewer.tar.gz</a></a></p> <p>When you have it up and running, load a page in your store with the following query string</p> <pre><code>http://magento.example.com/customer/account/?showLayout=handles </code></pre> <p>This will display the handles magento uses on any request. You should see a list of something like </p> <ol> <li>default</li> <li>STORE_bare_us</li> <li>THEME_\frontend_default_default</li> <li>customer_account_index</li> <li>customer_logged_in</li> </ol> <p>If number 4 is something different (companyname_modulename_customer_account_index), that means your site has a custom controller for this request. If that's the case, you'll want to look for tags in your layouts inside &lt;companyname_modulename_customer_account_index&gt; that may be overriding what you want to do.</p> <p>Next, load a Magento URL with the following query string</p> <pre><code>http://magento.example.com/customer/account/?showLayout=page </code></pre> <p>You should see an XML file being rendered in the browser. This is you request's final layout XML. Look for a tag (most likely named root) with an output attribute set</p> <pre><code>&lt;block type="page/html" name="root" output="toHtml" template="page/2columns-left.phtml"&gt; </code></pre> <p>The output attribute means this is the template that Magento will start rendering with. If this isn't your two column layout, you're closer to solving your problem.</p> <p>Next, look for a module named left inside the root module</p> <pre><code>&lt;block type="core/text_list" name="left" as="left" ignore="1"/&gt; </code></pre> <p>If this has an ignore attribute, there will probably be a corresponding tag</p> <pre><code>&lt;remove name="left"/&gt; </code></pre> <p>somewhere in your layout. You'll want to remove this.</p> <p>Also, make sure that your root block actually has a child block with the name left. </p> <pre><code>&lt;block type="page/html" name="root" output="toHtml" ... &gt; ... &lt;block type="core/text_list" name="left" as "left" /&gt; ... &lt;/block&gt; </code></pre> <p>Finally, and this is more a sanity check</p> <pre><code>http://magento.example.com/checkout/cart/?showLayout=package </code></pre> <p>Specifying "package" in the showLayout query string parameter will show you your <strong>entire</strong> package layout. This is all your layout.xml files combined into one. You can use this to make sure magento knows about the XML you're adding (cache), and to make sure you're editing the correct files. You can also example each handle section to look for unexpected layout intrusctions that are giving you the results you're not happy with.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload