Firstly a little background. Our client has two sets of products which have custom finishes. 7mm Products and 10mm Products. These are grouped in attribute sets called 7mm Finishes (attributesetid == 16) and 10mm Finishes (attributesetid == 18) .
We’ll be creating a tab which only shows if a product belongs to specific attribute set .
First, in our case, we’re going to create 2 Static Blocks.
Static Block Number 1:
Block Title: 7mm Finishes
Identifier: swatch16
Status: Enabled
Content: (your colour swatches or custom info)
Static Block Number 2:
Block Title: 10mm Finishes
Identifier: swatch18
Status: Enabled
Content: (your colour swatches or custom info)
Now… lets make some code!
app/design/frontend/default/theme/template/catalog/product/view/finishes.phtml
<?php // We are going to prepend the attribute id with the word swatch // This helps us to identify the swatch later (plus, // I'm not sure using an attribute ID as a static block name is such a good idea) $name="swatch".$this->getProduct()->getAttributeSetId(); //Did we get this far? if(strlen($name)>0){ // Block Identifier is lowercase and has no spaces $newname=strtolower(str_replace(' ',"",$name)); // Only display swatches for attributesetid 16 and 18 if (($newname=="swatch16") || ($newname=="swatch18")){ // Annnnnd output the static block! echo $this->getLayout()->createBlock('cms/block')->setBlockId($newname)->toHtml(); } }
app/design/frontend/default/theme/layout/catalog.xml
Look for this section:
<action method="addTab" translate="title" module="catalog"><alias>description</alias><title>Product Description</title><block>catalog/product_view_description</block><template>catalog/product/view/description.phtml</template></action> <action method="addTab" translate="title" module="catalog"><alias>related_products</alias><title>Related Products</title><block>catalog/product_list_related</block><template>catalog/product/list/related.phtml</template></action> <action method="addTab" translate="title" module="catalog"><alias>upsell_products</alias><title>We Also Recommend</title><block>catalog/product_list_upsell</block><template>catalog/product/list/upsell.phtml</template></action> <action method="addTab" translate="title" module="catalog"><alias>additional</alias><title>Additional Information</title><block>catalog/product_view_attributes</block><template>catalog/product/view/attributes.phtml</template></action>
Add the following:
<!-- new tab --> <action method="addTab" translate="title" module="catalog"><alias>finishes</alias><title>Finishes</title><block>catalog/product_view_finishes</block><template>catalog/product/view/finishes.phtml</template></action>
app/code/local/Mage/Catalog/Block/Product/View/Finishes.php <?php class Mage_Catalog_Block_Product_View_Finishes extends Mage_Core_Block_Template { protected $_product = null; function getProduct() { if (!$this->_product) { $this->_product = Mage::registry('product'); } return $this->_product; } }
That should be working for you – but adjust your attributeSetId’s accordingly