Yii2:处理自定义主题的资产

时间:2015-04-23 18:41:52

标签: php yii yii2

我创建了一个主题,它的工作文件,但其中一个问题是资产文件来自主题目录。

我在以下路径中创建主题

/var/www/html/project_name/themes/theme_name

我的主题文件结构是

<theme_name>
    -layouts
        main.php
    -css
        style.css
    -js
        script.js
    -images
        logo.jpg

我将所有css,js文件路径放在assets/AppAssets.php中,所以我的AppAssets.php看起来像

namespace app\assets;

use yii\web\AssetBundle;

/**
 * @author Qiang Xue <qiang.xue@gmail.com>
 * @since 2.0
 */
class AppAsset extends AssetBundle
{
    public $sourcePath = '@app/themes/bluehorse';
    public $css = [
        'css/style.css'

    ];
    public $js = [
        script.js
    ];
    public $depends = [
       'yii\web\YiiAsset',
       'yii\bootstrap\BootstrapAsset',
    ];
}

我的布局文件(例如 - main.php)看起来像

<?php
use yii\bootstrap\Nav;
use yii\bootstrap\NavBar;
use yii\widgets\Breadcrumbs;
use app\assets\AppAsset;

AppAsset::register($this);
...................



?>

您可以看到我使用AppAssets作为我的主题资源。但我不想使用AppAssets。我想在我的主题中创建自己的资源。我想把所有css,js路径放在我的获奖assets文件中,该文件将放在我的主题文件夹中。这是可能的??我需要你的帮助。

2 个答案:

答案 0 :(得分:1)

您可以将自己的资源放在主题中(完全在视图中):

/* @var $this yii\web\View */
    $this->registerJsFile('@themes/theme_name/js/name.js', ['depends' => 'yii\web\YiiAsset']) ;
    $this->registerCssFile('@themes/theme_name/css/name.css' ) ;

可以改变控制器中的布局,如:

public $layout = 'another_name_layout';

有很多方法可以提供更改主题,其中之一是:

if ($layout = 'another_name_layout') {
$this->registerCssFile('@web/css/name.css' ) ;
}

答案 1 :(得分:1)

您可以在目录资源中插入资产(css和js)。 你必须创建像appAssets这样的资产文件,添加你的自定义css和js。  小心&#34; UrlPath&#34;和&#34; BasePath&#34;必须是你的主题目录。

注意!!!您必须在主布局中设置以下内容:

<?php $this->beginPage() ?>
<?php $this->beginBody() ?>
<?php $this->head() ?>
<?php $this->endBody() ?>
<?php $this->endPage() ?>