I am trying to get my module to replace the ‘media’ section on list and grid view on category list pages with my own new one, if there is a hole in Mage knowledge its the layout xml so if someone could help 🙂 I am using,
<layout>
<catalog_category_view>
<reference name="head">
<action method="addItem"><type>skin_js</type><name>js/imageover.js</name></action>
</reference>
<reference name="product_list">
<block type="catalog/product_view_media" name="product.info.media" as="media" template="lewis/imageover/media.phtml"/>
</reference>
</catalog_category_view>
</layout>
but it’s not working? :s debug toolbar shows my layout is being called but the changed aren’t being made.
Edit: Ok with some help from the post below I got it to read my layout, but turns out on the category_list page Magento doesn’t use media template the image call is made in the list.phtml file, so the only way to change it appears to be to replace that whole template file. (which seems very extreme!) is there another way to replace the image on the category list page?
What you’ve done here is effectively reinstantiate the media block with your template. If your changes are solely template-based, you can just
<reference name="product.info.media">the existing block instance from the layout and call<action method="setTemplate"><template>lewis/imageover/media.phtml</...>. If you have your module has a custom block class, you’ll need to use your module’s block class group. For more on class group notation, the factory method, etc, see Alan Storm’s article on the Magento config.