zoukankan      html  css  js  c++  java
  • shopnc二次开发(二)

    一般来说二次开发,多数就是修改界面和增加功能这两个需求

    先说修改界面

    mvc 架构的程序,在界面这里,基本就是调用数据。

    常见的界面数据构架有三种

    1.是业务端或者是控制端数据驱动界面,基本上是后台输出啥数据,界面表现啥数据。这样麻烦的地方在于如果要更换模板的话动刀会动的比较大,除非没有更换模板的需求。如果不修改控制端的数据的话,那么界面设计这里受到的限制就比较多。

    2.是界面驱动数据,界面自定义调用数据,多数的 cms 基本都是这样搞的,通过标签或者定义个通用的 php 调用数据函数来获取数据。这样对界面设计这里比较友好,但是切图套代码的话就会比较麻烦些。

    3.第三种难度有点大,就是后台通过所见即所得的模式,定义前端调用模块,并通过系统配置或者手动配置来定义数据,然后生成 html 数据,前台一次性读取即可,设定合理缓存的间隔即可。像淘宝,shopex就是这样的模式,对后台开发的压力比较大。

    shopnc的程序属于第一种,后台数据驱动界面的。所以要改界面,通常要改控制器和视图两个地方,最好是记录好修改的文件,否则将来升级了,源文件被替换了,就会非常麻烦。

    shopnc的url通常是这样的

    http://localhost/shopnc/shop/index.php?act=show_groupbuy&op=index

    act 参数代表的是控制器,而 op 则代表的是控制器中的业务函数名称

    回顾下 shopnc 的目录结构,我们到控制器目录中寻找 show_groupbuy.php ,这就是控制器的业务逻辑

    简单的看下代码

    class show_groupbuyControl extends BaseHomeControl {
    
        ...
    
    }    

    控制器的名称跟一个 Control 字符串并继承于 BaseHomeControl

    而 op 就是 show_groupbuyControl 类中的函数

    /**
     * 默认跳转到进行中的团购列表
     */
    public function indexOp() {
        $this->groupbuy_listOp();
    }

    命名以 url 中的 op 参数加 Op 字符串组合而成

    如果要更改前台显示的数据,则需要找到对应的控制器和函数,修改其中的代码

    前台的模板也有规律

    templates/default 目录下的文件夹功能含义如下:

    buy                    购买功能模板,比如购物车、订单等模板

    css                     样式文件夹

    home                  前台展示功能模块的模板都在这里

    images                模板图片文件夹

    layout                 布局文件夹,如果要找各个功能区的头文件都在这里

    member              会员中心模板

    seller                  卖家中心模板

    sns                    sns 功能模板

    store                  卖家店铺模板

    到对应的文件夹中寻找相关的文件模板即可修改视图逻辑

    刚开始找对应视图可能有点蒙,因为视图和控制器并不对应,不过从 op 参数上判断也比较好找,当然还是建议从控制器代码中找

    找到对应 op 函数

    在函数最后末尾,找到类似 Tpl::showpage('index'); 的字样,有这样的字样就代表从对应的文件夹中调用 index 的视图,所以我们找到 index.php 就是对应的视图文件了

    如果没有 Tpl::showpage('index'); 的字样,通常是调用了其他函数或者不输出视图文件,比如说直接输出字符串或者输出 json 。

    找到了视图文件,就需要找到对应的数据显示模块才可以修改。

    我们先返回找到对应的控制器看下代码,我们找到首页文件,以团购为例

    //团购专区
    Language::read('member_groupbuy');
    $model_groupbuy = Model('groupbuy');
    $group_list = $model_groupbuy->getGroupbuyCommendedList(array(), null, '', '*', 4);
    Tpl::output('group_list', $group_list);

    除去注释的第一句,不用看也能猜出来,是调用语言文件的

    第二句是调用 model 的,model 的位置在上层目录中的 data 里,而 model 文件的文件名就是 Model('groupbuy'); 中的 groupbuy 加上 .php 后缀

    第三句调用 model 中的函数获取想要取得的数据

    第四句则是将已取得的数据赋值给模板中的变量 group_list 

    我们打开视图文件,找到 group_list 即可定位模板中要找的位置了,而模板都是纯 php 语法,直接就可以修改,记得要备份啊!

  • 相关阅读:
    linux 11201(11203) ASM RAC 安装
    [学习笔记]多项式对数函数
    linux 10201 ASM RAC 安装+升级到10205
    tar
    [学习笔记]多项式开根
    gzip
    小朋友和二叉树
    zip
    bzoj5016 一个简单的询问
    unzip
  • 原文地址:https://www.cnblogs.com/iuyes/p/4338495.html
Copyright © 2011-2022 走看看