Sage 9 перезаписывает шаблоны Woocommerce

Я пытаюсь перезаписать файлы шаблонов Woocommerce новым Wordpress Sage. Моя проблема в том, что новая версия Sage с расширением Blade не распознает старые файлы шаблонов Woocommerce.

Раньше я копировал шаблоны Woocommerce в папку моей темы, чтобы перезаписать шаблоны, которые всегда работали, но после выхода нового Sage 9 это больше не работает.

Это версия Sage, которую я использую: https://github.com/roots/sage ( 9)

Это версия Woocommerce, которую я использую: https://github.com/woocommerce/woocommerce ( 3.3.4)


person Thom van Oort    schedule 27.03.2018    source источник


Ответы (3)


Вы можете проверить https://github.com/mtx-z/Sage9-Woocommerce-Integration, последняя версия Sage 9.0.1, Woocommerce 3.4.3 (это моя версия).

Я использую его для использования функций Sage с темой, совместимой с Woocommerce.

person Mtxz    schedule 02.08.2018

Во-первых, попробуйте поместить его в resources/woocommerce.

Если это не сработает, вам может потребоваться вручную зарегистрировать путь к шаблону с помощью Blade:

Добавьте следующий код в app/filters.php и обновите это для ссылки на ваш путь WooCommerce (resources/views/woocommerce/{your-template}.php) соответственно.

Комплименты от @mmirus на форумах Roots аналогичный вопрос, который я разместил там.

Отказ от ответственности: я еще не проверял это и проверю на этой неделе. Но теория регистрации его в Blade верна.

Полезные ссылки по теме:

person Spencer Hill    schedule 20.05.2018

В файле sage_theme/app/setup.php добавьте: add_theme_support('woocommerce'); с поддержкой темы почвы.

В папке sage_theme/resources/views создайте файл woocommerce.blade.php. Добавьте в этот новый файл следующий код:

@php if ( !defined( 'ABSPATH' ) ) { exit; } @endphp

@extends( 'layouts.app' )

@section( 'content' )
    @if ( is_product() ) {{-- if single product --}}
        @php
            /**
            * woocommerce_before_main_content hook.
             *
            * @hooked woocommerce_output_content_wrapper - 10 (outputs opening divs for the content)
            * @hooked woocommerce_breadcrumb - 20
            */
            do_action( 'woocommerce_before_main_content' );
        @endphp

        @while ( have_posts() ) @php the_post(); @endphp

            @php wc_get_template_part( 'content', 'single-product' ); @endphp

        @endwhile

        @php
            /**
            * woocommerce_after_main_content hook.
            *
            * @hooked woocommerce_output_content_wrapper_end - 10 (outputs closing divs for the content)
            */
            do_action( 'woocommerce_after_main_content' );
        @endphp
    @else {{-- if product archive (any) --}}
        @if ( woocommerce_product_loop() ) 

            @php
                /**
                * 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' );

                woocommerce_product_loop_start();
            @endphp

            @if ( wc_get_loop_prop( 'total' ) ) 
                @while ( have_posts() ) @php the_post(); @endphp

                    @php
                        /**
                        * Hook: woocommerce_shop_loop.
                        *
                        * @hooked WC_Structured_Data::generate_product_data() - 10
                        */
                        do_action( 'woocommerce_shop_loop' );

                        wc_get_template_part( 'content', 'product' );
                    @endphp
                @endwhile
            @endif

            @php
                woocommerce_product_loop_end();

                /**
                * Hook: woocommerce_after_shop_loop.
                *
                * @hooked woocommerce_pagination - 10
                */
                do_action( 'woocommerce_after_shop_loop' );
            @endphp
        @else
            @php
                /**
                * Hook: woocommerce_no_products_found.
                *
                * @hooked wc_no_products_found - 10
                */
                do_action( 'woocommerce_no_products_found' );
            @endphp
        @endif
    @endif
@endsection

Создайте новую папку в папке sage_theme/resources/ с именем woocommerce. В этой папке вам понадобятся два файла: archive-product.php и single-product.php. В обоих этих файлах должно быть: <?php echo App\Template('woocommerce'); ?>.

Теперь вы можете идти.

Весь трафик Woo будет фильтроваться через страницу sage_theme/resources/views/woocommerce.blade.php, которая затем перенаправляет его в папку sage_theme/resources/woocommerce, где вы можете перезапишите файлы шаблонов Woo, как обычно.

Если вам нужно отредактировать что-то, что обычно находится в archive-product.php или single-product.php, вы можете сделать это в sage_theme/resources/ views/woocommerce.blade.php.

В sage_theme/resources/woocommerce/archive-product.php и sage_theme/resources/woocommerce/single-product.php может быть способ вместо ссылки на отдельные файлы того же файла woocommerce.blade.php, но у меня еще не было времени попробовать его.

person Nick Hogan    schedule 10.12.2018