Yii2:重载 CSS 扩展
Yii2: overloading CSS of extension
我正在使用扩展程序 dmstr/yii2-cookie-consent 进行 cookie 同意,我想修改扩展程序的 CSS。扩展中的 CSS 作为 AssetBundle 包含在内。
这是我的问题:
- 如何在删除期间用我的 CSS 重载扩展的 CSS(没有 AssetBundle,没有缓存)?
- 如何在生产中使用我的 CSS,即是否可以永久覆盖扩展的 CSS(当然使用缓存)?
在开发过程中您可以使用
$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\components
或 common\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();
我正在使用扩展程序 dmstr/yii2-cookie-consent 进行 cookie 同意,我想修改扩展程序的 CSS。扩展中的 CSS 作为 AssetBundle 包含在内。
这是我的问题:
- 如何在删除期间用我的 CSS 重载扩展的 CSS(没有 AssetBundle,没有缓存)?
- 如何在生产中使用我的 CSS,即是否可以永久覆盖扩展的 CSS(当然使用缓存)?
在开发过程中您可以使用
$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\components
或 common\widgets
或任何适合您的
<?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();