Fixing the Chrome cookie problem in Magento

After having this problem several times as I installed, and re-installed Magento, I decided to post this on my own blog for future reference.
Sometimes when using Magento with a Chrome browser the cookie functionality doesn’t work, the code modification is relatively simple.
Open the app/code/core/Mage/Core/Model/Session/Abstract/Varien.php file and find the following code, somewhere near line 78:

$cookieParams = array(
//             'lifetime' => $cookie->getLifetime(),
            'path'     => $cookie->getPath(),
//             'domain'   => $cookie->getConfigDomain(),
//             'secure'   => $cookie->isSecure(),
            'httponly' => $cookie->getHttponly()
        );

Notice the three commented out lines. That is the minimum necessary to get cookies working with Chrome. You could also just comment out the whole section, as that will work as well.
That’s all there is to it. Enjoy!

Enable Template Path Hints and Block Names in Default Config Options

If you have been using Magento for even a short time you have found the usefulness of enabling the Template Path Hints and Block Names on your website. Unfortunately those options don’t exist in the default config by default.
Thankfully, due to the very configurable and modular nature of Magento, the options to turn them on are easy to change.

The only file you will need to edit is the app/code/core/Mage/Core/etc/system.xml file.
This file contains a debug element containing a fields element. Within the fields element are two elements that will concern you, the template_hints and template_hints_block. Contained within those elements are show_in_default elements that determine whether the parent option will show up in the admin interface. If the value is 1 it will be visible, 0 will not make it visible.
Below is an excerpt of my config, with the values set to 1. See the highlighted lines.

<template_hints translate="label">
    <label>Template Path Hints</label>
    <frontend_type>select</frontend_type>
    <source_model>adminhtml/system_config_source_yesno</source_model>
    <sort_order>20</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>1</show_in_store>
</template_hints>
<template_hints_blocks translate="label">
    <label>Add Block Names to Hints</label>
    <frontend_type>select</frontend_type>
    <source_model>adminhtml/system_config_source_yesno</source_model>
    <sort_order>21</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>1</show_in_store>
</template_hints_blocks>

With these settings changed, you will now be able to see the options in the developer configuration screen.

Enjoy!

Moving a block in Magento

This example is going to assume we are moving the poll block from the right side of the page to the left side of the page.

Assuming that you want to move a block on a magento page from its current location to another location on the same page, you need to do the following:

  1. Find the container the block is currently in. In this case the reference name is ‘right’.
  2. Find the name of the block. In this case, ‘right.poll’.
  3. Find the container the block is going to. In this case the reference name is ‘left’.
  4. Unset the current location, and insert to the new location.

A simple layout example file:

<layout>
	<default>
		<reference name='right'>
			<action method='unsetChild'><name>right.poll</name></action>
		</reference>
		<reference name='left'>
			<action method='insert'>
				<name>right.poll</name>
				<sibling>catalog.leftnav</sibling>
			</action>
		</reference>
	</default>
</layout>

The sibling option allows you to tell the insert where in the section the block will be inserted, in this example, after the catalog block.

That’s it. Relatively simple, but very useful if you want to rearrange your Magento site.