如何重写:fec_admin/views/layouts 下面的文件?

技术分享 · Fecmall · 于 5年前 发布 · 1981 次阅读

fecshop的库包yii2_fecshop 是依赖于 https://github.com/fecshop/yii2_fec_admin

在fecshop如何重写fecadmin库包里面的layout呢?

对于fecshop的@appadmin里面的layout文件,可以在本地theme里面新建相应的theme文件进行覆盖即可, 而对于fecadmin的layout文件, 有一部分已经被fecshop的@appadmin重写,在 https://github.com/fecshop/yii2_fec_admin/tree/master/views/layouts 下面 可以看到重写的一部分文件。

标注:对于 fecadmin的layout文件是在:https://github.com/fecshop/yii2_fec_admin/tree/master/views/layouts 下面 ,fecshop已经重写了一部分:https://github.com/fecshop/yii2_fecshop/tree/master/app/appadmin/theme/base/default/layouts

因此,对于这部分,您在本地theme部分新建相应的文件就可以覆盖fecshop的layout文件,来实现重写

重写theme参看文档:http://www.fecshop.com/doc/fecshop-guide/develop/cn-1.0/guide-fecshop-theme.html

2.对于header.php 等其他文件,存在于fecadmin的部分layout如何重写呢?

解析:对于 Header.php Footer.php 都是在主体layout文件中调用的,譬如在: https://github.com/fecshop/yii2_fecshop/blob/master/app/appadmin/theme/base/default/layouts/login.phphttps://github.com/fecshop/yii2_fecshop/blob/master/app/appadmin/theme/base/default/layouts/dashboard.php 进行了调用,代码如下:

use fecadmin\views\layouts\Header;

...

<?= Header::getContent();  ?>

我们你有两种方法重写,通过重写主体layout文件(譬如:dashboard.php)内容部分的方式 , 和, classMap的方式。

下面以重写Header.php为例子,手把手:

2.1 本地theme新建 layouts/login.phplayouts/dashboard.php 然后 您在本地新建一个header文件,将use fecadmin\views\layouts\Header; 改成您自己的header即可

下面是详细步骤:

2.1.1新建文件:@appadmin/theme/local/theme01/layouts/Header.php文件 , 这个文件继承 \fecadmin\views\layouts\Header,内容如下:

<?php
/**
 * FecShop file.
 *
 * @link http://www.fecshop.com/
 * @copyright Copyright (c) 2016 FecShop Software LLC
 * @license http://www.fecshop.com/license/
 */
namespace appadmin\theme\local\theme01\layouts;
use Yii;
use fec\helpers\CUrl;
class Header extends \fecadmin\views\layouts\Header{
    public static function getContent(){
        return '<div class="headerNav">
				<a target="_blank" class="logo" href="http://www.fecshop.com">FECSHOP</a>
				
				<a style="color:#fff; display: block; height: 21px;position: absolute; right: 10px;top: 18px;z-index: 31;" 
				href="'.CUrl::getUrl("fecadmin/logout").'">
					退出
				</a>
			</div>';

    }


}



?>

您想重写那个方法,就添加那个方法,这个就是您想要重写的Header.php部分的内容。

2.1.2重写dashboard.php和login.php的内容,更改调用,下面以dashboard.php为例子:

新建文件:@appadmin/theme/local/theme01/layouts/dashboard.php,将 @fecshop/app/appadmin/theme/base/default/layouts/dashboard.php的内容复制进去

然后将layouts/dashboard.php文件内容部分的 use fecadmin\views\layouts\Header; 更改成 use appadmin\theme\local\theme01\layouts\Header;,也就是上面新建的Header即可。

对于login.php也需要做类似的更改,因为目前主体layout只有dashboard.php和login.php两个,没有其他的 ,因此,您可以参考更改dashboard.php的方式更改login.php

这样就完成了Header.php文件的重写

2.2您可以通过yii2的classMap的方式重写Header.php

2.2.1添加classMap重写配置,打开文件:appadmin/config/YiiClassMap.php ,在配置数组中添加:

'fecadmin\views\layouts\Header' => '@appadmin/theme/local/theme01/layouts/Header.php',

2.2.1新建文件:@appadmin/theme/local/theme01/layouts/Header.php文件 , 将 @fecadmin/views/layouts/Header.php的内容全部复制进去.

通过classMap重写的方式,是不能使用继承的,因为这种方式是完全替换掉, 因此你需要将全部内容复制过来。

然后在文件 @appadmin/theme/local/theme01/layouts/Header.php文件 中修改您需要重写的代码函数即可。

使用classMap进行重写,参考资料:http://www.fecshop.com/doc/fecshop-guide/develop/cn-1.0/guide-fecshop-rewrite-func.html#7yii2classclassmapfecshop

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics