---恢复内容开始---

以前没有怎么接触过shopnc,感觉界面挺漂亮的,不过后来自己需要开发一个电商系统,就顺便参考了下,感觉构架垃圾的一塌糊涂。不过平时做这个系统二次开发的业务比较多,所以简单的总结下。

shopnc有三款产品,b2b2c,c2c和o2o,用的同一个mvc框架和相同的开发规范,所以了解了其中一个,其他两款产品也就算理解了。

shopnc使用的自己开发的mvc框架,粗略的看了下,还是比较简单的。

先从文件结构说起

├─admin
│ ├─config
│ ├─control
│ ├─framework
│ │ └─libraries
│ ├─include
│ ├─language
│ │ ├─zh
│ │ └─zh_cn
│ └─templates
│ └─default
│ ├─css
│ │ └─font
│ │ └─font-awesome
│ │ ├─css
│ │ └─font
│ ├─images
│ │ ├─login
│ │ ├─mac
│ │ ├─member
│ │ └─sky
│ └─layout
├─chat
│ ├─config
│ ├─control
│ ├─language
│ │ └─zh_cn
│ ├─resource
│ │ └─js
│ └─templates
│ └─default
│ ├─css
│ └─images
├─circle
│ ├─config
│ ├─control
│ ├─framework
│ │ ├─function
│ │ └─libraries
│ ├─language
│ │ ├─zh
│ │ └─zh_cn
│ ├─model
│ ├─resource
│ │ └─js
│ │ └─miniditor
│ └─templates
│ └─default
│ ├─css
│ ├─images
│ │ ├─member-card
│ │ ├─shareicon
│ │ └─smilier
│ └─layout
├─cms
│ ├─config
│ ├─control
│ ├─framework
│ │ ├─function
│ │ └─libraries
│ ├─language
│ │ └─zh_cn
│ ├─model
│ ├─resource
│ │ └─js
│ └─templates
│ └─default
│ ├─css
│ ├─images
│ │ ├─attitude
│ │ ├─dialog
│ │ └─shareicon
│ └─layout
├─core
│ ├─framework
│ │ ├─cache
│ │ ├─core
│ │ ├─db
│ │ ├─function
│ │ └─libraries
│ └─language
├─data
│ ├─api
│ │ ├─snsapi
│ │ │ ├─qqweibo
│ │ │ ├─qqzone
│ │ │ │ ├─comm
│ │ │ │ ├─oauth
│ │ │ │ ├─share
│ │ │ │ └─user
│ │ │ └─sinaweibo
│ │ ├─taobao
│ │ │ └─request
│ │ └─xs
│ │ ├─app
│ │ ├─lib
│ │ └─util
│ │ └─skel
│ │ ├─css
│ │ └─img
│ ├─area
│ ├─cache
│ │ ├─adv
│ │ ├─fields
│ │ ├─index
│ │ ├─rec_position
│ │ └─tpl
│ ├─config
│ ├─crontab
│ │ └─include
│ ├─log
│ ├─model
│ ├─resource
│ │ ├─examples
│ │ ├─font
│ │ ├─highcharts
│ │ ├─js
│ │ │ ├─ajaxfileupload
│ │ │ ├─cms
│ │ │ ├─colorpicker
│ │ │ ├─dialog
│ │ │ │ └─images
│ │ │ ├─fileupload
│ │ │ ├─jcarousel
│ │ │ │ └─skins
│ │ │ │ ├─ie7
│ │ │ │ ├─personal
│ │ │ │ └─tango
│ │ │ ├─jquery-ui
│ │ │ │ ├─i18n
│ │ │ │ └─themes
│ │ │ │ ├─smoothness
│ │ │ │ │ └─images
│ │ │ │ └─ui-lightness
│ │ │ │ └─images
│ │ │ ├─jquery-ui-timepicker-addon
│ │ │ ├─jquery.imgareaselect
│ │ │ ├─jquery.Jcrop
│ │ │ ├─jquery.nyroModal
│ │ │ │ ├─img
│ │ │ │ └─styles
│ │ │ ├─jquery.raty
│ │ │ │ └─img
│ │ │ ├─map
│ │ │ ├─qtip
│ │ │ ├─slidesjs
│ │ │ └─smilies
│ │ │ └─images
│ │ ├─kindeditor
│ │ │ ├─attached
│ │ │ ├─lang
│ │ │ ├─php
│ │ │ ├─plugins
│ │ │ │ ├─anchor
│ │ │ │ ├─autoheight
│ │ │ │ ├─baidumap
│ │ │ │ ├─clearhtml
│ │ │ │ ├─code
│ │ │ │ ├─emoticons
│ │ │ │ │ └─images
│ │ │ │ ├─filemanager
│ │ │ │ │ └─images
│ │ │ │ ├─flash
│ │ │ │ ├─image
│ │ │ │ │ └─images
│ │ │ │ ├─insertfile
│ │ │ │ ├─lineheight
│ │ │ │ ├─link
│ │ │ │ ├─map
│ │ │ │ ├─media
│ │ │ │ ├─multiimage
│ │ │ │ │ └─images
│ │ │ │ ├─pagebreak
│ │ │ │ ├─plainpaste
│ │ │ │ ├─preview
│ │ │ │ ├─quickformat
│ │ │ │ ├─table
│ │ │ │ ├─template
│ │ │ │ │ └─html
│ │ │ │ └─wordpaste
│ │ │ └─themes
│ │ │ ├─common
│ │ │ ├─default
│ │ │ ├─qq
│ │ │ └─simple
│ │ ├─phpqrcode
│ │ │ ├─bindings
│ │ │ │ └─tcpdf
│ │ │ ├─cache
│ │ │ │ ├─mask_0
│ │ │ │ ├─mask_1
│ │ │ │ ├─mask_2
│ │ │ │ ├─mask_3
│ │ │ │ ├─mask_4
│ │ │ │ ├─mask_5
│ │ │ │ ├─mask_6
│ │ │ │ └─mask_7
│ │ │ ├─temp
│ │ │ └─tools
│ │ ├─seccode
│ │ │ ├─font
│ │ │ │ ├─ch
│ │ │ │ └─en
│ │ │ └─gif
│ │ │ └─ShopNC
│ │ └─web_config
│ ├─session
│ ├─smilies
│ └─upload
│ ├─circle
│ │ └─group
│ ├─cms
│ │ ├─article
│ │ └─index_html
│ ├─microshop
│ └─shop
│ ├─activity
│ ├─adv
│ ├─article
│ ├─auth
│ ├─avatar
│ ├─brand
│ ├─common
│ ├─complain
│ ├─editor
│ ├─groupbuy
│ │ └─1
│ ├─inform
│ ├─login
│ ├─member
│ ├─membertag
│ ├─mobile
│ │ ├─ad
│ │ └─category
│ ├─pointprod
│ ├─rec_position
│ ├─store
│ │ ├─1
│ │ ├─2
│ │ ├─goods
│ │ │ ├─1
│ │ │ └─2
│ │ └─slide
│ ├─store_joinin
│ ├─voucher
│ └─watermark
├─microshop
│ ├─config
│ ├─control
│ ├─framework
│ │ ├─function
│ │ └─libraries
│ ├─language
│ │ └─zh_cn
│ ├─model
│ ├─resource
│ │ └─js
│ │ ├─fileupload
│ │ ├─jcarousel
│ │ │ └─skins
│ │ │ └─personal
│ │ └─smilies
│ │ └─images
│ └─templates
│ └─default
│ ├─css
│ ├─images
│ │ ├─dialog
│ │ ├─ie6
│ │ ├─index-temp
│ │ ├─member-card
│ │ └─shareicon
│ └─layout
├─mobile
│ ├─api
│ │ └─payment
│ │ └─alipay
│ │ ├─images
│ │ ├─key
│ │ └─lib
│ ├─config
│ ├─control
│ ├─framework
│ │ └─function
│ ├─language
│ │ └─zh_cn
│ ├─model
│ ├─readme
│ │ ├─api_files
│ │ └─sql
│ └─templates
│ └─default
│ └─layout
├─shop
│ ├─api
│ │ ├─payment
│ │ │ ├─alipay
│ │ │ ├─chinabank
│ │ │ └─tenpay
│ │ │ └─classes
│ │ ├─qq
│ │ │ ├─comm
│ │ │ ├─oauth
│ │ │ └─user
│ │ └─sina
│ ├─config
│ ├─control
│ ├─framework
│ │ ├─function
│ │ └─libraries
│ ├─install
│ │ ├─css
│ │ ├─data
│ │ ├─images
│ │ └─include
│ ├─language
│ │ ├─zh
│ │ └─zh_cn
│ ├─resource
│ │ ├─font
│ │ │ └─font-awesome
│ │ │ ├─css
│ │ │ └─font
│ │ └─js
│ └─templates
│ └─default
│ ├─buy
│ ├─css
│ ├─home
│ ├─images
│ │ ├─buy
│ │ ├─ie6
│ │ ├─member
│ │ │ └─shareicon
│ │ ├─member-card
│ │ ├─payment
│ │ ├─seller
│ │ │ └─login
│ │ ├─shop
│ │ ├─sns
│ │ ├─store_joinin
│ │ └─treetable
│ ├─layout
│ ├─member
│ ├─seller
│ ├─sns
│ │ └─style
│ │ ├─skin01
│ │ ├─skin02
│ │ ├─skin03
│ │ ├─skin04
│ │ ├─skin05
│ │ └─skin06
│ └─store
│ └─style
│ ├─default
│ │ └─images
│ ├─style1
│ │ └─images
│ ├─style2
│ │ └─images
│ ├─style3
│ │ └─images
│ ├─style4
│ │ └─images
│ └─style5
│ └─images
└─wap
├─bug
├─css
├─html
│ └─web
│ ├─css
│ ├─images
│ ├─js
│ │ └─tmpl
│ ├─tmpl
│ │ ├─member
│ │ └─order
│ └─upload
├─images
├─js
│ └─tmpl
├─tmpl
│ ├─member
│ └─order
└─upload

文件夹功能如下

admin            后台

chat               在线im

circle              圈子

cms               cms文章系统

core               公共文件

data               数据存放

microshop       微商城

mobile             手机app服务端

shop               前台

wap                wap端

先看前台,前台的逻辑和模板都在shop目录中,web目录中index.php会自动转向到shop目录

shop的目录文件功能如下:

api                     外部api调用

config                 配置文件

control               控制器(业务逻辑)

framework          框架

install                 安装文件

language            多语言配置文件目录

resource             素材

templates           模板目录

mvc 框架中的 m 在上级目录中 data/model 中,v 在当前目录 templates 中 ,而 c 就是 control 文件夹

明白了文件夹含义,修改相对应的逻辑就比较简单了

shopnc二次开发(一)的更多相关文章

  1. shopnc二次开发(二)

    一般来说二次开发,多数就是修改界面和增加功能这两个需求 先说修改界面 mvc 架构的程序,在界面这里,基本就是调用数据. 常见的界面数据构架有三种 1.是业务端或者是控制端数据驱动界面,基本上是后台输 ...

  2. sitemap.xml 静态和动态生成页面 shopnc二次开发 动态生成sitemap.xml

    Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页.最简单的 Sitemap 形式,就是XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间.更改的 ...

  3. shopnc 二次开发 每日签到积分领取

    /* 开始shopnc!!!!! url:xxx.com/index.php?act=index&op=userjf 一个四线城市的半吊子程序员~ 实现:前台模板文件 随便加入<a> ...

  4. jQuery 验证实例(shopnc二次开发)

    shopnc 商家用户实现添加用户与前台用户分离, jQuery 验证实例 equalTo:等于 <div id="saleRefund" show_id="1&q ...

  5. shopnc 二次开发问题(一)

    1.关于shopnc商品详情页面多规格抢购,价格显示都是显示的抢购价格问题 路径: data/model/groupbuy.model.php 方法:getGroupbuyInfoByGoodsCom ...

  6. Navisworks API 简单二次开发 (自定义工具条)

    在Navisworks软件运行的时候界面右侧有个工具条.比较方便.但是在二次开发的时候我不知道在Api那里调用.如果有网友知道请告诉我.谢谢. 我用就自己设置一个工具.界面比较丑!没有美工. 代码: ...

  7. [连载]《C#通讯(串口和网络)框架的设计与实现》- 12.二次开发及应用

    目       录 第十二章     二次开发及应用... 2 12.1        项目配制... 3 12.2        引用相关组件... 4 12.3        构建主程序... 5 ...

  8. OBS-Studio二次开发记录

    OBS-Studio 是一款跨平台的,开源的视频直播客户端软件. 公司需要对他进行二次开发,开发的目的是使用它的录屏功能. 开发的要求是:定制全新的界面,所见即所得,window系统兼容要好. 开发步 ...

  9. 小猪cms微信二次开发之怎样分页

    $db=D('Classify'); $zid=$db->where(array('id'=>$this->_GET('fid'),'token'=>$this->tok ...

随机推荐

  1. ZOJ 3329 【概率DP】

    题意: 给你三个均匀k面筛子. 分别有k1 k2 k3个面,每个面朝上的概率是相等的. 如果第一个筛子出现a第二个筛子出现b第三个筛子出现c那么置零. 否则在当前和加上三个点数之和. 求当前和大于n需 ...

  2. Nginx作为静态内容服务器(Windows环境)

    1.简单安装 1)下载 http://nginx.org/en/download.html 2)解压后的路径 E:\Study\nginx\nginx-1.7.6 3)执行nginx.exe,访问ht ...

  3. 在weblogic11g上发布项目遇到的一个错误(不支持web-app_3_0)

    错误信息如下: 消息图标 - 错误 [HTTP:101064][WebAppModule(ssh1:ssh1.war)] Error parsing descriptor in Web appplic ...

  4. ARM开发板挂载U盘

    ARM开发板运行Linux系统后,插入U盘,通过串口打印系统识别到U盘如下: 系统识别U盘盘符为sda4 那么需要挂载后才能操作U盘:挂载命令 mount -t vfat /dev/sda4 /mnt ...

  5. [原创] IIS7下顶级域名301跳转到WWW域名

    百度搜索了众多方法,居然没有一个全面的IIS7下301域名跳转能用的教程,最终自己研究出了个可以用的供大家参考.1.绑定域名01ruodian.cn www.01ruodian.cn到空间: 2.在I ...

  6. Effective Modern C++翻译(7)-条款6:当auto推导出意外的类型时,使用显式的类型初始化语义

    条款6:当auto推导出意外的类型时,使用显式的类型初始化语义 条款5解释了使用auto来声明变量比使用精确的类型声明多了了很多的技术优势,但有的时候,当你想要zag的时候,auto可能会推导出了zi ...

  7. VB datagrid指定行着色

    有图有真相: 关键点:使用datagrid的FetchRowStyle委托. (Form界面的datagrid名称:dgv) 使用FetchRowStyle委托,要先打开开关: dgv.FetchRo ...

  8. js实现自动登陆的按钮

    自动按钮,只要实现当移入是提示用户不要在公共地方使用自动登陆 主要用onmouseover函数,本来提示div隐藏,当移入时div显示. <style type="text/css&q ...

  9. js 函数function的几种形式

    //有的时候我们一直都在使用函数,但是却不知道函数使用的正真含义 //其中一个重要的目的是为了提高代码的复用率 //其二函数可以传递参数并有返回值 //函数声明 //不带参数,不带返回值 functi ...

  10. Jmeter笔记1:使用Badboy录制脚本,作为JMeter测试的素材

    接触Badboy,是因为JMeter要引用Badboy导出的脚本 Badboy的录制提供两个模式:Request(默认模式) 和navigation模式.点击下图N,切换模式:但是要导出到Jmeter ...