Add New Tab to Products Panel – Magento 1.4.1.1

  • by

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 ;)

Leave a Reply

Your email address will not be published. Required fields are marked *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

This site uses Akismet to reduce spam. Learn how your comment data is processed.