首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sage 9覆盖Woocommerce模板

Sage 9覆盖Woocommerce模板
EN

Stack Overflow用户
提问于 2018-03-27 20:45:32
回答 3查看 3K关注 0票数 0

我正在尝试用新的Wordpress Sage覆盖Woocommerce模板文件。我的问题是新的带有刀片扩展的Sage版本不能识别旧的Woocommerce模板文件。

我曾经将Woocommerce模板复制到我的主题文件夹中,以覆盖总是有效的模板,但自从新的Sage 9之后,这就不再起作用了。

这是我使用的Sage版本:https://github.com/roots/sage (9)

这是我使用的Woocommerce版本:https://github.com/woocommerce/woocommerce (3.3.4)

EN

回答 3

Stack Overflow用户

发布于 2018-08-03 03:09:52

你可以查看https://github.com/mtx-z/Sage9-Woocommerce-Integration,最新的是SAGE9.0.1,Woocommerce 3.4.3 (这是我的)。

我使用它来使用具有Woocommerce兼容主题的Sage功能。

票数 1
EN

Stack Overflow用户

发布于 2018-12-10 23:09:57

在您的sage_ theme /app/setup.php文件中,添加:add_theme_support('woocommerce');与您的土壤主题支持。

在sage_theme/resources/views文件夹中创建一个woocommerce.blade.php文件。将以下代码添加到此新文件中:

代码语言:javascript
复制
@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文件,但我还没有时间尝试。

票数 1
EN

Stack Overflow用户

发布于 2018-05-21 04:39:06

首先,试着把它放在resources/woocommerce中。

如果此方法不起作用,则可能需要手动将模板路径注册到Blade

将以下代码添加到app/filters.php,并相应地更新它以引用您的WooCommerce路径(resources/views/woocommerce/{your-template}.php)。

对于我在the Roots forums上发布的一个类似问题,我向@mmirus致以敬意。

免责声明:我还没有对此进行测试,本周将进行测试。但将其注册到Blade的理论是正确的。

有关该主题的有用链接:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49513231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档