<?php
/**
 * The Template for displaying product archives, including the main shop page
 *
 * This is a custom template override from Watson plugin
 *
 * @package Watson
 * @version 1.0.0
 */

defined( 'ABSPATH' ) || exit;

// Отключаем стандартные хлебные крошки WooCommerce
remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20 );

get_header( 'shop' );

/**
 * Hook: woocommerce_before_main_content.
 *
 * @hooked woocommerce_output_content_wrapper - 10 (outputs opening divs for the content)
 * @hooked woocommerce_breadcrumb - 20
 * @hooked WC_Structured_Data::generate_website_data() - 30
 */
do_action( 'woocommerce_before_main_content' );

// Получаем настройку расположения сайдбара (можно добавить опцию в настройках)
$sidebar_position = apply_filters('watson_woocommerce_sidebar_position', 'right'); // 'right', 'left', 'none'
$layout_class = 'watson-shop-layout watson-sidebar-' . esc_attr($sidebar_position);

// Проверяем, есть ли виджеты в сайдбаре
// Проверяем наличие виджетов в сайдбаре Watson и других возможных сайдбарах
$has_sidebar = ($sidebar_position !== 'none') && (
    is_active_sidebar('watson-shop-sidebar') || 
    is_active_sidebar('sidebar-shop') || 
    is_active_sidebar('shop-sidebar') || 
    is_active_sidebar('woocommerce-sidebar') || 
    is_active_sidebar('sidebar-woocommerce')
);

?>

<div class="<?php echo esc_attr($layout_class); ?>">
    <div class="watson-shop-container container">

        
        <div class="watson-shop-content">
            <div class="watson-product-catalog">
                <?php
                /**
                 * Hook: woocommerce_shop_loop_header.
                 *
                 * @since 8.6.0
                 *
                 * @hooked woocommerce_product_taxonomy_archive_header - 10
                 */
                do_action( 'woocommerce_shop_loop_header' );

                if ( woocommerce_product_loop() ) {

                    /**
                     * Hook: woocommerce_before_shop_loop.
                     *
                     * @hooked woocommerce_output_all_notices - 10
                     * @hooked woocommerce_result_count - 20
                     * @hooked woocommerce_catalog_ordering - 30
                     */
                    do_action( 'woocommerce_before_shop_loop' );

                    // Отображаем категории продуктов перед сеткой продуктов
                    if ( is_shop() || is_product_category() ) {
                        // Получаем текущую категорию (если мы на странице категории)
                        $current_category = get_queried_object();
                        $parent_id = 0;
                        
                        if ( is_product_category() && $current_category ) {
                            $parent_id = $current_category->term_id;
                        }
                        
                        // Получаем категории продуктов
                        $args = array(
                            'taxonomy'     => 'product_cat',
                            'hide_empty'   => true,
                            'parent'       => $parent_id
                        );
                        
                        $product_categories = get_terms( $args );
                        
                        if ( !empty( $product_categories ) && !is_wp_error( $product_categories ) ) {
                            echo '<div class="ws-woocommerce-categories-wrapper">';
                            
                            $counter = 0;
                            foreach ( $product_categories as $category ) {
                                $thumbnail_id = get_term_meta( $category->term_id, 'thumbnail_id', true );
                                $image = wp_get_attachment_url( $thumbnail_id );
                                $category_link = get_term_link( $category, 'product_cat' );
                                $class = ($counter % 2 == 0) ? 'first' : 'last';
                                
                                echo '<div class="ws-woocommerce-product-category">';
                                echo '<div class="product-category product ' . esc_attr($class) . '">';
                                echo '<a aria-label="' . esc_attr(sprintf(__('Visit product category %s', 'watson'), $category->name)) . '" href="' . esc_url($category_link) . '"></a>';
                                
                                echo '<div class="ws-product-media">';
                                echo '<a aria-label="' . esc_attr(sprintf(__('Visit product category %s', 'watson'), $category->name)) . '" href="' . esc_url($category_link) . '"></a>';
                                echo '<a aria-label="' . esc_attr(sprintf(__('Visit product category %s', 'watson'), $category->name)) . '" href="' . esc_url($category_link) . '">';
                                
                                if ( $image ) {
                                    $img_attr = $counter == 0 ? 'fetchpriority="high"' : 'loading="lazy"';
                                    echo '<img ' . $img_attr . ' src="' . esc_url($image) . '" alt="' . esc_attr($category->name) . '" width="700" height="700" />';
                                } else {
                                    $img_attr = $counter == 0 ? 'fetchpriority="high"' : 'loading="lazy"';
                                    echo '<img ' . $img_attr . ' src="' . esc_url(wc_placeholder_img_src()) . '" alt="' . esc_attr($category->name) . '" width="700" height="700" />';
                                }
                                
                                echo '</a></div>';
                                echo '<div class="ws-product-content">';
                                echo '<h3 class="ws-product-title">';
                                echo '<a aria-label="' . esc_attr(sprintf(__('Visit product category %s', 'watson'), $category->name)) . '" href="' . esc_url($category_link) . '">' . esc_html($category->name) . '</a>';
                                echo '</h3>';
                                echo '<!-- /.ws-product-title -->';
                                echo '</div>';
                                echo '</div>';
                                echo '</div>';
                                
                                $counter++;
                            }
                            
                            echo '</div>';
                        }
                    }
                    
                    // Обёртка для продуктов (не категорий)
                    echo '<div class="ws-products-wrapper">';
                    
                    woocommerce_product_loop_start();

                    if ( wc_get_loop_prop( 'total' ) ) {
                        while ( have_posts() ) {
                            the_post();

                            /**
                             * Hook: woocommerce_shop_loop.
                             */
                            do_action( 'woocommerce_shop_loop' );

                            wc_get_template_part( 'content', 'product' );
                        }
                    }
                    
                    echo '</div>'; // Закрываем обёртку для продуктов

                    woocommerce_product_loop_end();

                    /**
                     * Hook: woocommerce_after_shop_loop.
                     *
                     * @hooked woocommerce_pagination - 10
                     */
                    do_action( 'woocommerce_after_shop_loop' );
                } else {
                    /**
                     * Hook: woocommerce_no_products_found.
                     *
                     * @hooked wc_no_products_found - 10
                     */
                    do_action( 'woocommerce_no_products_found' );
                }
                ?>
            </div>
        </div>
        
        <?php if ($has_sidebar): ?>
        <div class="watson-shop-sidebar">
             <div class="watson-shop-sidebar-wrap">
            <?php
            // Пробуем несколько способов подключения сайдбара
            // Сначала проверяем наш кастомный сайдбар Watson
            if (is_active_sidebar('watson-shop-sidebar')) {
                dynamic_sidebar('watson-shop-sidebar');
            } 
            // Затем проверяем другие возможные сайдбары
            elseif (is_active_sidebar('sidebar-shop')) {
                dynamic_sidebar('sidebar-shop');
            } elseif (is_active_sidebar('shop-sidebar')) {
                dynamic_sidebar('shop-sidebar');
            } elseif (is_active_sidebar('woocommerce-sidebar')) {
                dynamic_sidebar('woocommerce-sidebar');
            } elseif (is_active_sidebar('sidebar-woocommerce')) {
                dynamic_sidebar('sidebar-woocommerce');
            } else {
                // Если ни один сайдбар не активен, выводим сообщение о необходимости добавить виджеты
                echo '<div class="watson-sidebar-notice">
                    <h3>Watson Shop Sidebar</h3>
                    <p>Add widgets to this sidebar in WordPress admin: Appearance &rarr; Widgets &rarr; Watson Shop Sidebar</p>
                </div>';
            }
            ?>
        </div> </div>
        <?php endif; ?>
    </div>
</div>

<?php
/**
 * Hook: woocommerce_after_main_content.
 *
 * @hooked woocommerce_output_content_wrapper_end - 10 (outputs closing divs for the content)
 */
do_action( 'woocommerce_after_main_content' );

get_footer( 'shop' );
