Yii2:重载 CSS 扩展

Yii2: overloading CSS of extension

我正在使用扩展程序 dmstr/yii2-cookie-consent 进行 cookie 同意,我想修改扩展程序的 CSS。扩展中的 CSS 作为 AssetBundle 包含在内。

这是我的问题:

在开发过程中您可以使用

$this->registerCss(".your-css {}")

用于原型设计

上线时,您可以使用依赖注入重载扩展资产包

'assetManager' => [
    'bundles' => [
        'dmstr\cookieconsent\assets\CookieConsentAsset' => [
            'sourcePath' => '/path/to/your/source/path',
            'css' => [
                'css/yourstyles.css'
            ]
        ]
    ]
]

请记住,该软件包提供了根据应用程序环境加载资产的功能。在生产模式下,加载 css 的压缩版本。

https://github.com/dmstr/yii2-cookie-consent/blob/master/src/assets/CookieConsentAsset.php#L20

作为另一个选项添加

如果我没看错你正在使用小部件,我会扩展函数 run(),它正在注册脚本并使用我的自定义 css 文件创建我自己的资产 class 文件已加载。

假设您使用的是 Yii2 的 advance-app,或者相应地调整命名空间。

AssetBundle class

<?php

namespace common\assets;

use yii\web\AssetBundle;

class CookieConsentAsset extends AssetBundle
{

    public $sourcePath = __DIR__;

    public $css = [
        'path/to/custom.css',
    ];

    public $depends = [
        'dmstr\cookieconsent\assets\CookieConsentAsset'
    ];

}

并在 common\componentscommon\widgets 或任何适合您的

下扩展小部件 class
<?php
namespace common\components;

use dmstr\cookieconsent\widgets\CookieConsent as BaseCookieConsent;
use common\assets\CookieConsentAsset;

class CookieConsent extends BaseCookieConsent
{
    public function run(){
        CookieConsentAsset::register($this->view);
        parent::run();
    }
}

现在您可以通过将命名空间更改为

来使用您自己的小部件
<?php
    use common\components\CookieConsent;

    echo CookieConsent::widget();