Fecmall-Furnilife应用实例讲解

为了更好的讲解开发应用的原理,特将Furnilife模板改为9.99(原599), 您可以在这块 找到Furnilife模板应用: http://addons.fecmall.com/41928926

购买后,在fecmall后台在线安装后,然后按照应用描述,配置一下就可以使用了

Fecmall-Furnilife模板应用文件

1.应用文件夹路径

安装完成后,您可以再这里找到应用文件 @addons/fecmall/furnilife_theme

@addons: 这个是应用安装的根目录

fecmall: 这个是开发者的包名(这个是terry开发的,命名的包名为fecmall)

furnilife_theme: 这个是该应用的应用文件夹名

Fecmall-Furnilife模板应用配置文件

文件路径:@addons/fecmall/furnilife_theme/config.php

furnilife_theme模板应用安装后,在数据库表extensions中的 config_file_path字段,可以看到对应的配置文件路径, 这个配置文件路径是固定的(约定优于配置)

因此您开发新应用的时候,新建应用为:

@addons/开发者package/应用文件夹名/config.php

打开这个config.php可以看到配置内容

1.设置namespace

Yii::setAlias('@fectfurnilife', dirname(dirname(dirname(__DIR__))).'/addons/fecmall/furnilife_theme/');

2.设置应用信息

'info'  => [
    'name' => 'theme_furnilife',
    'title' => 'furnilife theme',
    'description' => 'furnilife theme',
    'author' => 'terry',
],

以上信息只起一个记录的描述作用,没有其他的用处

3.插件的安装,升级,卸载

// 插件管理部分
    'administer' => [
        'install' => [
            'class' => 'fectfurnilife\administer\Install',
            // 其他引入的属性,类似yii2组件的方式写入即可
            'test' => 'test_data',
        ],
        'upgrade' => [
            'class' => 'fectfurnilife\administer\Upgrade',
        ],
        'uninstall' => [
            'class' => 'fectfurnilife\administer\Uninstall',
        ],
    ],

Install : 因为上面定义了namespace, @fectfurnilife就是文件夹@addons/fecmall/furnilife_theme, 因此install部分对应的class文件为 @addons/fecmall/furnilife_theme/administer/Install.php

必须继承:\fecshop\services\extension\InstallInterface,并定义初始安装版本号类变量 public $version = '1.0.0';

在插件安装的时候,会执行里面的 run(), 因此您可以在该方法里面写一些安装需要初始化数据表的sql, 以及文件复制等等

Upgrade: 升级文件,文件位置和install类似, 如果您的新版本需要进行一些数据库sql操作,或者文件复制等,可以写到该文件中

Uninstall:卸载文件,文件位置和install类似,

4.功能重写和扩展部分

写在 'app'里面的是功能重写和扩展部分

按照入口进行区分,如果是公用的配置,可以写到common中, 其他的写到相应的入口中即可。

'app' => [
    'common' => [
    
    ],
    'appfront' => [
    
    ],
    'appadmin' => [
    
    ],
    'apphtml5' => [
    
    ],
    'appserver' => [
    
    ],
    'appapi' => [
    
    ],
    'console' => [
    
    ],

]

4.1Yii ClassMap重写部分的配置

'yiiClassMap' => [
    
],

关于Yii classMap的资料可以参看:http://www.fecmall.com/doc/fecshop-guide/develop/cn-1.0/guide-fecshop-rewrite-func.html#7yii2classclassmapfecshop

4.2FecMall RewriteMap重写部分,用于重写block和model

'fecRewriteMap' => [
    '\fecshop\app\appfront\modules\Cms\block\home\Index'  => '\fectfurnilife\app\appfront\modules\Cms\block\home\Index',
    '\fecshop\app\appfront\modules\Customer\block\address\Edit'  => '\fectfurnilife\app\appfront\modules\Customer\block\address\Edit',
],

4.3模块配置部分

'modules' => [

],

4.4services配置部分

'services' => [

]

5.原理

这个部分的配置,和fecmall系统的配置思路是一样的,这个配置文件和fecmall的配置文件 在初始化的时候,都需要进行merge成一个config数组, 知道这个原理,您就可以灵活的添加配置,进行扩展和重写功能了