Dynamic Product Tabs Section
The Dynamic Product Tabs Section is a versatile and visually appealing feature designed to highlight your most sought-after products. This section categorizes products into tabs like "New Product," "Special Price," and "Best Sellers," providing customers with an organized and engaging shopping experience.
Liquid Code
<div class="tab-container-product page-width">
<div class="tabs-container " style="padding-top: {{ section.settings.padding_top }}px; padding-bottom: {{ section.settings.padding_bottom }}px;">
{% for block in section.blocks %}
<button class="tab-button{% if forloop.first %} active{% endif %}" data-tab="{{ block.id }}" style="color: {{ section.settings.tab_text_color }}; background-color: {{ section.settings.tab_bg_color }}">
{{ block.settings.tab_name }}
</button>
{% endfor %}
</div>
<!-- Container for Products -->
<div class="tab-content">
{% for block in section.blocks %}
{% assign collection_handle = block.settings.collection %}
{% assign collection = collections[collection_handle] %}
<!-- Each Tab Content Pane -->
<div class="tab-pane{% if forloop.first %} active{% endif %}" id="{{ block.id }}">
{% if collection and collection.products.size > 0 %}
<div class="product-grid">
{% for product in collection.products %}
<div class="product-card">
<div class="product-image">
<a href="{{ product.url }}">
<img src="{{ product.featured_image | img_url: 'master' }}" alt="{{ product.title }}">
</a>
</div>
<div class="product-details">
<span class="title-price">
<h3>{{ product.title }}</h3>
<p class="price">{{ product.price | money }}</p>
</span>
<!-- Placeholder for rating if integrated with reviews -->
<p class="rating">⭐⭐⭐⭐⭐</p>
</div>
</div>
{% endfor %}
</div>
{% else %}
<p>No products available in this collection.</p>
{% endif %}
</div>
{% endfor %}
</div>
</div>
<!-- JavaScript for Tab Switching -->
<script>
document.addEventListener("DOMContentLoaded", function() {
const tabButtons = document.querySelectorAll(".tab-button");
const tabPanes = document.querySelectorAll(".tab-pane");
tabButtons.forEach(button => {
button.addEventListener("click", function() {
// Remove active class from all buttons and panes
tabButtons.forEach(btn => btn.classList.remove("active"));
tabPanes.forEach(pane => pane.classList.remove("active"));
// Add active class to clicked button and corresponding pane
button.classList.add("active");
const tabId = button.getAttribute("data-tab");
document.getElementById(tabId).classList.add("active");
});
});
});
</script>
<!-- CSS for Styling -->
<style>
.tabs-container {
display: flex;
gap: 10px;
margin-bottom: 80px;
justify-content: center;
}
.tab-button {
padding: 10px 20px;
cursor: pointer;
font-family: 'Chiaroscura';
border-radius: 30px;
font-size: 18px;
background: none;
border: 1px solid #ddd;
}
button.tab-button.active {
border: 1px solid #000;
background: #000;
color: #ddd;
}
.tab-content {
display: flex;
flex-wrap: wrap;
}
.tab-pane {
display: none;
width: 100%;
}
.tab-pane.active {
display: flex;
flex-wrap: wrap;
}
.product-grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 15px;
width: 100%;
row-gap: 30px;
}
.product-details p.rating {
margin: 0;
font-size: 11px;
}
.product-details span.title-price h3 {
font-family: 'Poppins';
letter-spacing: 0em;
line-height: 1.4;
margin: 0;
}
.product-details span.title-price {
display: flex;
justify-content: space-between;
align-items: center;
}
.product-details span.title-price p.price {
margin: 0;
}
.product-image img {
width: 100%;
object-fit: cover;
border-radius: 15px;
height: 350px;
}
@media(min-width:1400px){
.tab-container-product.page-width {
max-width: 1400px;
margin: 0 auto;
}
}
@media(min-width:1400px){
.tab-container-product.page-width {
max-width: 1200px;
margin: 0 auto;
}
}
</style>
{% schema %}
{
"name": "Dynamic Product Tabs",
"settings": [],
"blocks": [
{
"type": "tab",
"name": "Tab",
"settings": [
{
"type": "text",
"id": "tab_name",
"label": "Tab Name",
"default": "New Product"
},
{
"type": "collection",
"id": "collection",
"label": "Select Collection for Tab"
}
]
}
],
"presets": [
{
"name": "Dynamic Product Tabs"
}
]
}
{% endschema %}
