首页 > 解决方案 > 启用动态 CSS 后,如何在 Divi 自定义模块中包含默认模块样式?

问题描述

我创建了一个基于 Divi's Blog 模块的自定义模块。从 4.10 开始,由于动态 CSS 功能,模块的网格布局不再起作用。启用此功能后,Divi 基本上仅在使用特定模块时才加载所需的资产。因此,如果 Divi 博客模块不在页面中,则不包含所需的 CSS,并且我的自定义模块显示错误。

我看到一个过滤器应该强制默认模块的资产并在我的自定义模块中使用它:

//force the blog assets to be included inside this custom module
function include_module_assets($assets_list) {
    return ['et_pb_blog'];
}
add_filter( 'et_required_module_assets', 'include_module_assets' );

现在这添加了一些列样式,但没有设置列宽。所以仍然有一些样式没有被加载。

有人用他们的 Divi 扩展体验过吗?

谢谢

标签: wordpressthemesdivi

解决方案


由于在ET_Dynamic_Assets::get_global_assets_list中似乎没有$grid_items_deps的过滤器,您可以使用et_global_assets_list过滤器。

您可能会发现您需要在初始化模块类之前添加_filter,可能是在扩展类的构造函数中的一个级别。

function init() {
    parent::init();

    /** Removed other code the sake of simplicity **/

    add_filter( 'et_required_module_assets', array($this,  'include_module_assets') );
}

// Make sure we include gutters3_grid_items
public function include_early_global_assets($global_asset_list, $assets_args, $dynamic_assets_class){
    $assets_prefix    = et_get_dynamic_assets_path();
    $gutters_3_grid_path = $assets_prefix . '/css/gutters3_grid_items.css';
    $global_asset_list['some_custom_blog'] = array(
        'css' => $gutters_3_grid_path
    );
    return $global_asset_list;
}

希望 ET 在不久的将来为$grid_items_deps添加一个过滤器。通过提供过滤器,它们似乎确实变得更好了,还可以添加更多。

如果有人知道更好的解决方案,我会很想知道,因为下面有一个问题,即使不使用网格布局,我们也包含 gutters3_grid_items.css。

干杯


推荐阅读