如何获取子主题模块模板以覆盖主模块模板
How to get child theme module templates to override main module template
由于某些原因,我的子主题模板没有被识别。
我相信我遵循了正确的程序(并检查了缓存等)
/wp-content/themes/divi-child/includes/builder/module/Blog.php
应该替换
/wp-content/themes/Divi/includes/builder/module/Blog.php
(相同路径和相同文件,略有更新)
无法识别子主题模块模板(对子主题模板的更改无效)
I have tested editing the main file and this works immediately every
time.
非常感谢任何建议。
干杯
编辑
根据 Divi,下面应该可以工作,但是当我尝试时它破坏了网站。
显然仅仅将模块复制到子主题中是不够的。该文件需要复制。然后将文件复制到child-theme/custom-modules/Blog.php。在 functions.php 文件底部添加以下代码后:
function divi_custom_blog_module() {
get_template_part( '/custom-modules/Blog' );
$myblog = new custom_ET_Builder_Module_Blog();
remove_shortcode( 'et_pb_blog' );
add_shortcode( 'et_pb_blog', array( $myblog, '_render' ) );
}
add_action( 'et_builder_ready', 'divi_custom_blog_module' );
我以前遇到过类似的问题。我认为 - 也许博客模板被“父亲主题”文件夹中的另一个文件调用,例如:
$url = dirname(__FILE__)."/includes/builder/module/Blog.php";
这将导致问题。要解决此问题,有两种方法:
#1:查找并编辑调用博客模板的文件(不推荐)
#2:查找并复制调用博客模板的文件到您的子主题(您可以先尝试 index.php、content.php 或 single.php)(推荐)
还有一些其他步骤https://intercom.help/elegantthemes/en/articles/4532734-moving-blog-module-in-child-theme
在子主题文件夹中新建一个文件夹,例如includes文件夹。
现在将 Divi/includes/builder/module/Blog.php 文件从父主题复制到 child-theme/includes/ 文件夹中。
打开子主题的 Blog.php 文件并替换此行(在最顶部):
require_once 'helpers/Overlay.php';
class ET_Builder_Module_Blog extends ET_Builder_Module_Type_PostBased {
与:
get_template_part( '/includes/builder/module/helpers/Overlay.php' );
class custom_ET_Builder_Module_Blog extends ET_Builder_Module_Type_PostBased {
替换:$this->vb_support = 'on'; $this->vb_support = 'off';
从底部删除这一行:new ET_Builder_Module_Blog();
- 最后,将以下代码添加到子主题文件夹中的 functions.php 文件中:
/*================================================
#Load custom Blog Module
================================================*/
function divi_custom_blog_module() {
get_template_part( '/includes/Blog' );
$myblog = new custom_ET_Builder_Module_Blog();
remove_shortcode( 'et_pb_blog' );
add_shortcode( 'et_pb_blog', array( $myblog, '_render' ) );
}
add_action( 'et_builder_ready', 'divi_custom_blog_module' );
由于某些原因,我的子主题模板没有被识别。
我相信我遵循了正确的程序(并检查了缓存等)
/wp-content/themes/divi-child/includes/builder/module/Blog.php
应该替换
/wp-content/themes/Divi/includes/builder/module/Blog.php
(相同路径和相同文件,略有更新)
无法识别子主题模块模板(对子主题模板的更改无效)
I have tested editing the main file and this works immediately every time.
非常感谢任何建议。
干杯
编辑
根据 Divi,下面应该可以工作,但是当我尝试时它破坏了网站。
显然仅仅将模块复制到子主题中是不够的。该文件需要复制。然后将文件复制到child-theme/custom-modules/Blog.php。在 functions.php 文件底部添加以下代码后:
function divi_custom_blog_module() {
get_template_part( '/custom-modules/Blog' );
$myblog = new custom_ET_Builder_Module_Blog();
remove_shortcode( 'et_pb_blog' );
add_shortcode( 'et_pb_blog', array( $myblog, '_render' ) );
}
add_action( 'et_builder_ready', 'divi_custom_blog_module' );
我以前遇到过类似的问题。我认为 - 也许博客模板被“父亲主题”文件夹中的另一个文件调用,例如:
$url = dirname(__FILE__)."/includes/builder/module/Blog.php";
这将导致问题。要解决此问题,有两种方法:
#1:查找并编辑调用博客模板的文件(不推荐)
#2:查找并复制调用博客模板的文件到您的子主题(您可以先尝试 index.php、content.php 或 single.php)(推荐)
还有一些其他步骤https://intercom.help/elegantthemes/en/articles/4532734-moving-blog-module-in-child-theme
在子主题文件夹中新建一个文件夹,例如includes文件夹。
现在将 Divi/includes/builder/module/Blog.php 文件从父主题复制到 child-theme/includes/ 文件夹中。
打开子主题的 Blog.php 文件并替换此行(在最顶部):
require_once 'helpers/Overlay.php';
class ET_Builder_Module_Blog extends ET_Builder_Module_Type_PostBased {
与:
get_template_part( '/includes/builder/module/helpers/Overlay.php' );
class custom_ET_Builder_Module_Blog extends ET_Builder_Module_Type_PostBased {
替换:$this->vb_support = 'on'; $this->vb_support = 'off';
从底部删除这一行:new ET_Builder_Module_Blog();
- 最后,将以下代码添加到子主题文件夹中的 functions.php 文件中:
/*================================================
#Load custom Blog Module
================================================*/
function divi_custom_blog_module() {
get_template_part( '/includes/Blog' );
$myblog = new custom_ET_Builder_Module_Blog();
remove_shortcode( 'et_pb_blog' );
add_shortcode( 'et_pb_blog', array( $myblog, '_render' ) );
}
add_action( 'et_builder_ready', 'divi_custom_blog_module' );