Adding tabs to product descriptions

Because all themes are different, no single method will serve all themes perfectly. Please use this as an overview and not as an exact method.

For this demo, you will adding three tabs to all product pages. In the first tab, you will load up the product description. In a second tab, you will load up a snippet. In the third tab, you will load a static page.

Edit product.liquid

In the product.liquid template, locate your product description.

{{ product.description }}

Replace it with the following code:

{{ product.description }}
{% assign Ingredients = product.metafields.Ingredients %}
{{ Ingredients.product-ingredients }}
{% assign FAQ = product.metafields.FAQ %}
{{ FAQ.product-faq }}
{% assign Directions = product.metafields.Directions %}
{{ Directions.product-directions }}
{% assign MoreInfo = product.metafields.MoreInfo %}
{{ MoreInfo.product-moreinfo }}

Add some jQuery

Once you have your markup in place, add the following JavaScript code at the bottom of your product.liquid template:

$(document).ready(function() {
$(‘ul.tabs’).each(function(){
var active, content, links = $(this).find(‘a’);
active = links.first().addClass(‘active’);
content = $(active.attr(‘href’));
links.not(‘:first’).each(function () {
$($(this).attr(‘href’)).hide();
});
$(this).find(‘a’).click(function(e){
active.removeClass(‘active’);
content.hide();
active = $(this);
content = $($(this).attr(‘href’));
active.addClass(‘active’);
content.show();
return false;
});
});
});

Add some CSS

Here is some sample CSS to add at the bottom of your product.liquid template:

ul.tabs {
border-bottom: 1px solid #DDDDDD;
display: block;
margin: 0 0 20px;
padding: 0;
}
ul.tabs li {
display: block;
float: left;
height: 30px;
margin-bottom: 0;
padding: 0;
width: auto;
}
ul.tabs li a {
-moz-border-bottom-colors: none;
-moz-border-image: none;
-moz-border-left-colors: none;
-moz-border-right-colors: none;
-moz-border-top-colors: none;
background: none repeat scroll 0 0 #F5F5F5;
border-color: #DDDDDD !important;
border-style: solid;
border-width: 1px 1px 0 1px;
display: block;
font-size: 13px;
height: 29px;
line-height: 30px;
margin: 0;
padding: 0 20px;
text-decoration: none;
width: auto;
color: #303030;
border-bottom:none !important;
}
ul.tabs li a.active {
background: none repeat scroll 0 0 #FFFFFF;
border-left-width: 1px;
border-top-left-radius: 2px;
border-top-right-radius: 2px;
color: #111111;
height: 30px;
margin: 0 0 0 -1px;
padding-top: 4px;
position: relative;
top: -4px;
}
ul.tabs li:first-child a.active {
margin-left: 0;
}
ul.tabs li:first-child a {
border-top-left-radius: 2px;
border-width: 1px 1px 0;
}
ul.tabs li:last-child a {
border-top-right-radius: 2px;
}
ul.tabs:before, ul.tabs:after {
content: ” “;
display: block;
height: 0;
overflow: hidden;
visibility: hidden;
width: 0;
}
ul.tabs:after {
clear: both;
}