我正在尝试用新的Wordpress Sage覆盖Woocommerce模板文件。我的问题是新的带有刀片扩展的Sage版本不能识别旧的Woocommerce模板文件。
我曾经将Woocommerce模板复制到我的主题文件夹中,以覆盖总是有效的模板,但自从新的Sage 9之后,这就不再起作用了。
这是我使用的Sage版本:https://github.com/roots/sage (9)
这是我使用的Woocommerce版本:https://github.com/woocommerce/woocommerce (3.3.4)
发布于 2018-08-03 03:09:52
你可以查看https://github.com/mtx-z/Sage9-Woocommerce-Integration,最新的是SAGE9.0.1,Woocommerce 3.4.3 (这是我的)。
我使用它来使用具有Woocommerce兼容主题的Sage功能。
发布于 2018-12-10 23:09:57
在您的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文件,但我还没有时间尝试。
发布于 2018-05-21 04:39:06
首先,试着把它放在resources/woocommerce中。
如果此方法不起作用,则可能需要手动将模板路径注册到Blade
将以下代码添加到app/filters.php,并相应地更新它以引用您的WooCommerce路径(resources/views/woocommerce/{your-template}.php)。
对于我在the Roots forums上发布的一个类似问题,我向@mmirus致以敬意。
免责声明:我还没有对此进行测试,本周将进行测试。但将其注册到Blade的理论是正确的。
有关该主题的有用链接:
https://stackoverflow.com/questions/49513231
复制相似问题