i'm fairly new to magento, so i might not get all terms right. it's also possible that i haven't fully understood the magento internals which work through layouts and templates to print a webpage to the customer. i followed some simple tutorial to add a module to magento which provides me three additional options too choose from when setting the page_layout for categories/products. so far so good. the entries show up in admin backend and the templates i associated to these page_layouts are correctly loaded if i browse to a custom layout category.
i've removed and added plenty of blocks via local.xml. i've been using <default>
(which targets all layouts iirc) and <catalog_category_default>
(which is parsed when browsing a category). so in know how to use and "<block type="foo/myblock" name="my.precious.block" />
to remove or display a block.
now i want to add a block to one of my custom layouts. my /magento/app/code/local/Foo/Layout/etc/config.xml looks like this:
<?xml version="1.0"?>
<config>
<modules>
<Foo_Layout>
<version>0.0.1</version>
</Foo_Layout>
</modules>
<global>
<page>
<layouts>
<foo_category_a module="page" translate="label">
<label>CustomCategory (A)</label>
<template>page/category_a.phtml</template>
<layout_handle>foo_cat_a</layout_handle>
<update handle="foo_cat_a" />
</foo_category_a>
</layouts>
</page>
</global>
</config>
/app/etc/modules/Foo_Layout.xml looks like this:
<?xml version="1.0"?>
<config>
<modules>
<Foo_Layout>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Page />
</depends>
</Foo_Layout>
</modules>
</config>
and my /app/design/frontend/default/foo/layout/local.xml like this:
<?xml version="1.0"?>
<layout version="0.1.0">
<default>
<reference name="head">
<action method="addCss"><stylesheet>css/foo.css</stylesheet></action>
</reference>
<reference name="header">
<remove name="topSearch" />
</reference>
<reference name="right">
<remove name="right.permanent.callout" />
</reference>
<reference name="left">
<remove name="left.permanent.callout" />
</reference>
<reference name="root">
<block type="core/template" name="top.search" as="topSearch" template="catalogsearch/form.mini.phtml" />
</reference>
</default>
<!--
category view mods
-->
<catalog_category_default>
<reference name="left">
<remove name="catalog.leftnav" />
<remove name="currency" />
<remove name="tags_popular" />
</reference>
</catalog_category_default>
<foo_cat_a>
<remove name="products.info" />
</foo_cat_a>
</layout>
so i have: layouts added: check selectable in admin: check correctly loading the specified templates: check being able to add blocks to custom layout: fail :(
what am i missing here? i searched the web up and down, tried many different locations for layout-definition and the layout-update-code, but nothing worked so far.
the predefined handles work well (e.g. <catalog_category_default>
) but not those defined by me.
greetings patrick
config.xml
notconf.xml
.foo_cat_a
handle being applied? How do you think it should work? It won't be merged to the layout instructions without being added to the layout update object via PHP or via an<update />
directive in another handle.