File: /var/www/html/wp-content/themes/thegem-elementor/woocommerce/single-product/tabs/tabs.php
<?php
/**
* Single Product tabs
*
* This template can be overridden by copying it to yourtheme/woocommerce/single-product/tabs/tabs.php.
*
* HOWEVER, on occasion WooCommerce will need to update template files and you
* (the theme developer) will need to copy the new files to your theme to
* maintain compatibility. We try to do this as little as possible, but it does
* happen. When this occurs the version of the template file will be bumped and
* the readme will list any important changes.
*
* @see https://woocommerce.com/document/template-structure/
* @package WooCommerce\Templates
* @version 9.8.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
global $product, $thegem_product_data;
$isSidebar = false;
$sidebar_data = thegem_get_output_page_settings(get_the_ID());
if(is_active_sidebar('shop-sidebar') && $sidebar_data['sidebar_show']) {
$isSidebar = true;
}
$page_layout = $thegem_product_data['product_page_layout'];
$desc_review_layout = $thegem_product_data['product_page_desc_review_layout'];
$desc_review_style = $thegem_product_data['product_page_desc_review_layout_tabs_style'];
$isFullWidth = $thegem_product_data['product_page_layout_fullwidth'];
$isVerticalTabs = $thegem_product_data['product_page_desc_review_layout_tabs_style'] == 'vertical';
switch ($desc_review_layout) {
case 'tabs':
$tabs_class = 'thegem-tabs--'.$thegem_product_data['product_page_desc_review_layout_tabs_style'];
$tabs_full_class = 'thegem-tabs--fullwidth';
$tabs_position_horizontal_class = !$isFullWidth ? 'thegem-tabs__nav--'.$thegem_product_data['product_page_desc_review_layout_tabs_alignment'] : 'thegem-tabs__nav--center';
$tabs_position_vertical_class = 'thegem-tabs__nav--'.$thegem_product_data['product_page_desc_review_layout_tabs_alignment'];
$tabsPosition = $thegem_product_data['product_page_desc_review_layout_tabs_style'] == 'horizontal' ? $tabs_position_horizontal_class : $tabs_position_vertical_class;
break;
case 'accordion':
$acc_class = 'thegem-accordion--'.$thegem_product_data['product_page_desc_review_layout_acc_position'];
$acc_full_class = 'thegem-accordion--fullwidth';
$acc_position = $thegem_product_data['product_page_desc_review_layout_acc_position'];
break;
case 'one_by_one':
$desc_review_back['description'] = $thegem_product_data['product_page_desc_review_layout_one_by_one_description_background'];
$desc_review_back['additional_information'] = $thegem_product_data['product_page_desc_review_layout_one_by_one_additional_info_background'];
$desc_review_back['reviews'] = $thegem_product_data['product_page_desc_review_layout_one_by_one_reviews_background'];
$isColorBack = $desc_review_back['description'] != '' || $desc_review_back['additional_information'] != '' || $desc_review_back['reviews'] != '';
break;
}
/**
* Filter tabs and allow third parties to add their own.
*
* Each tab is an array containing title, callback and priority.
*
* @see woocommerce_default_product_tabs()
*/
$product_tabs = apply_filters( 'woocommerce_product_tabs', array() );
$tabs_count = count($product_tabs);
if (!empty($product_tabs)): ?>
<div class="gem-tta-container woocommerce-tabs wc-tabs-wrapper gem-woocommerce-tabs" data-vc-action="collapse">
<?php if ((!empty($product_tabs) && $page_layout == 'legacy') || (!empty($product_tabs) && $page_layout != 'legacy' && $desc_review_layout == 'tabs' && $desc_review_style == 'legacy')): wp_enqueue_script( 'thegem_tabs_script' ); wp_enqueue_style( 'gem-tta_style' ); wp_enqueue_script( 'thegem-tabs' ); wp_enqueue_style( 'thegem-tabs' ); ?>
<div class="gem-tta-general gem-tta gem-tta-tabs gem-tta-color-thegem gem-tta-style-classic gem-tta-shape-square gem-tta-spacing-5 gem-tta-tabs-position-top gem-tta-controls-align-left">
<div class="gem-tta-tabs-container">
<ul class="gem-tta-tabs-list">
<?php $is_first = true; foreach ( $product_tabs as $key => $product_tab ) : ?>
<li class="gem-tta-tab<?php if($is_first) { echo ' gem-tta-active'; $is_first= false; } ?>" data-vc-tab>
<a href="#tab-<?php echo esc_attr( $key ); ?>" data-vc-tabs data-vc-container=".gem-tta">
<span class="gem-tta-title-text"><?php echo wp_kses_post( apply_filters( 'woocommerce_product_' . $key . '_tab_title', $product_tab['title'], $key ) ); ?></span>
</a>
</li>
<?php endforeach; ?>
</ul>
</div>
<div class="gem-tta-panels-container">
<div class="gem-tta-panels">
<?php $is_first = true; foreach ( $product_tabs as $key => $product_tab ) : ?>
<div class="gem-tta-panel<?php if($is_first) { echo ' gem-tta-active'; $is_first= false; } ?>" id="tab-<?php echo esc_attr( $key ); ?>" data-vc-content=".gem-tta-panel-body">
<div class="gem-tta-panel-heading">
<h4 class="gem-tta-panel-title">
<a href="#tab-<?php echo esc_attr( $key ); ?>" data-vc-accordion data-vc-container=".gem-tta-container">
<span class="gem-tta-title-text"><?php echo wp_kses_post( apply_filters( 'woocommerce_product_' . $key . '_tab_title', $product_tab['title'], $key ) ); ?></span>
</a>
</h4>
</div>
<div class="gem-tta-panel-body">
<?php if ( isset( $product_tab['callback'] ) ) {
call_user_func( $product_tab['callback'], $key, $product_tab );
}?>
</div>
</div>
<?php endforeach; ?>
</div>
</div>
</div>
<?php endif; ?>
<?php if (!empty($product_tabs) && $page_layout != 'legacy' && $desc_review_layout == 'tabs' && $desc_review_style != 'legacy'): ?>
<?php if ($thegem_product_data['product_page_skeleton_loader']): ?>
<div class="preloader skeleton product-tabs-skeleton"></div>
<?php endif; ?>
<div class="thegem-tabs <?=$tabs_class?> <?=$isFullWidth && !$isSidebar ? $tabs_full_class : null?>" data-type="<?=$desc_review_style?>">
<?php if ($tabs_count > 1) : ?>
<div class="thegem-tabs__nav <?=$tabsPosition?>" <?php if ($isFullWidth && !$isSidebar && !$isVerticalTabs): ?>style="width: 100vw; left: calc(50% - 50vw);"<?php endif;?>>
<div class="thegem-tabs__nav-list">
<?php $is_first = true; foreach ( $product_tabs as $key => $product_tab ): ?>
<div class="thegem-tabs__nav-item <?php if($is_first) { echo 'thegem-tabs__nav-item--active'; $is_first = false; } ?>" data-id="thegem-<?php echo esc_attr( $key ); ?>">
<span><?php echo wp_kses_post( apply_filters( 'woocommerce_product_' . $key . '_tab_title', $product_tab['title'], $key ) ); ?></span>
</div>
<?php endforeach; ?>
</div>
<div class="thegem-tabs__nav-line">
<div class="thegem-tabs__nav-slide"></div>
</div>
</div>
<?php endif; ?>
<div class="thegem-tabs__body" <?php if ($tabs_count == 1) : ?>style="max-width: 100%;"<?php endif; ?>>
<?php $is_first = true; foreach ( $product_tabs as $key => $product_tab ): ?>
<div class="thegem-accordion__item thegem-accordion__item--tab-view">
<div class="thegem-accordion__item-title <?php if($is_first) { echo 'thegem-accordion__item--active'; } ?>" data-id="thegem-<?php echo esc_attr( $key ); ?>">
<span><?php echo wp_kses_post( apply_filters( 'woocommerce_product_' . $key . '_tab_title', $product_tab['title'], $key ) ); ?></span>
</div>
<div id="thegem-<?php echo esc_attr( $key ); ?>" class="thegem-accordion__item-body" style="<?php if($is_first) { echo 'display: block'; $is_first = false; } ?>">
<?php
if ( isset( $product_tab['callback'] ) ) {
call_user_func( $product_tab['callback'], $key, $product_tab );
}
if(isset($product_tab['type']) && $product_tab['type'] == 'additional_tab') {
if (!empty($product_tab['text_content'])) {
echo $product_tab['text_content'];
}
if (!empty($product_tab['section_content'])) {
echo $product_tab['section_content'];
}
}
?>
</div>
</div>
<?php endforeach; ?>
</div>
</div>
<?php endif; ?>
<?php if (!empty($product_tabs) && $page_layout != 'legacy' && $desc_review_layout == 'accordion'): ?>
<div class="thegem-accordion <?=$acc_class?> <?=$isFullWidth && !$isSidebar ? $acc_full_class : null?>">
<?php $is_first = true; foreach ( $product_tabs as $key => $product_tab ): ?>
<div class="thegem-accordion__item">
<div class="thegem-accordion__item-title <?php if($is_first) { echo 'thegem-accordion__item--active'; } ?>" data-id="thegem-<?php echo esc_attr( $key ); ?>">
<span><?php echo wp_kses_post( apply_filters( 'woocommerce_product_' . $key . '_tab_title', $product_tab['title'], $key ) ); ?></span>
</div>
<div id="thegem-<?php echo esc_attr( $key ); ?>" class="thegem-accordion__item-body" style="<?php if($is_first) { echo 'display: block;'; $is_first = false; } ?>">
<?php
if ( isset( $product_tab['callback'] ) ) {
call_user_func( $product_tab['callback'], $key, $product_tab );
}
if(isset($product_tab['type']) && $product_tab['type'] == 'additional_tab') {
if (!empty($product_tab['text_content'])) {
echo $product_tab['text_content'];
}
if (!empty($product_tab['section_content'])) {
echo $product_tab['section_content'];
}
}
?>
</div>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
<?php if (!empty($product_tabs) && $page_layout != 'legacy' && $desc_review_layout == 'one_by_one'): ?>
<div class="thegem-one-by-one <?=!$isSidebar ? 'fullwidth-block' : null?>" <?php if (!$isSidebar): ?>style="width: 100vw; left: calc(50% - 50vw);"<?php endif;?>>
<?php foreach ( $product_tabs as $key => $product_tab ): ?>
<div id="thegem-<?php echo esc_attr( $key ); ?>" class="thegem-one-by-one__item <?=!$isColorBack ? 'thegem-one-by-one__item--separator' : null?>" <?php if (!empty($desc_review_back[$key])): ?>style="background-color: <?=esc_attr($desc_review_back[$key])?>;"<?php endif;?>>
<div class="<?=!$isSidebar ? 'container' : 'thegem-one-by-one__container'?>">
<?php if ($key != 'reviews'): ?>
<div class="thegem-one-by-one__item-title">
<h4 class="light"><?php echo wp_kses_post( apply_filters( 'woocommerce_product_' . $key . '_tab_title', $product_tab['title'], $key ) ); ?></h4>
</div>
<?php endif; ?>
<div class="thegem-one-by-one__item-body">
<?php
if ( isset( $product_tab['callback'] ) ) {
call_user_func( $product_tab['callback'], $key, $product_tab );
}
if(isset($product_tab['type']) && $product_tab['type'] == 'additional_tab') {
if (!empty($product_tab['text_content'])) {
echo $product_tab['text_content'];
}
if (!empty($product_tab['section_content'])) {
echo $product_tab['section_content'];
}
}
?>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
<?php do_action( 'woocommerce_product_after_tabs' ); ?>
</div>
<?php endif; ?>