# 第一篇 基础

PS(PrestaShop简称)一开始就设定了能够在它的基础上很简单的构建第三方模块的机制,让它成为一款具有极高定制性的电子商务软件。

PS的可以在三个方面进行定制:

* 主题
* 模块
* 系统功能重载

默认情况下,PS已经内置了超过100个模块,官方的扩展站点上有超过2000个模块。

## 概念

PS是用PHP技术以面向对象的方式开发的,你如果要开发模块的话,需要具备这方面的基础知识。

模块是对PS进行以下方面的一种扩展:
* 为PS提供额外功能
* 在站点上查看额外项目
* 与其他电子商务服务(购物指南、支付平台、物流等)进行通讯
* 系统本身功能的重载,PS是完全面向对象的方式进行编码的,你可以在不修改原始代码的情况下,按你自己的需求替换或扩展核心功能

## PS的技术架构

PS基于三层架构:

* 数据对象 就是那些放在"classes"文件夹下的文件,对数据库的访问操作由它们控制
* 数据控制 根目录下的那些文对用户提供的内容提供了访问入口
* 设计 所有的主题文件放在"themes"文件夹

这与MVC架构是同样的原理,并且是一种更简单、更易理解的方式。

开发团队考虑到更佳的代码可读性,没有选择使用向Zend、Symfony或CakePHP这样的框架,因此可以进行更快速的编码工作。

这样也得到了更高的性能、因为软件只由它需要的代码构成,也不用包含一堆的补充性的通用库。

这种三层架构有很多优点:
* 软件的代码更容易阅读
* 开发者可以更快的添加和编辑代码
* 前端设计师和切片人员可以完全在/themes文件范围内工作,而不必去理解系统原理甚至阅读一行PHP代码

## 模型

模型代表了应用程序的行为:数据处理、数据库交互等等。它对被应用程序处理的数据进行声明、管理,并保证他的完整性。

## 视图

视图就是用户交互的界面部分。它的首要作用是显示由模型提供的数据,其次处理用户的动作(鼠标点击、元素选择、按钮等)、并将这些事件发送给控制器。

视图本身不进行任何数据处理,它仅仅显示模型的处理结果、和用户进行交互。

## 控制器

控制器管理模型与视图之间的同步事件,有需要的话,同时进行更新。它接收所有的用户事件并出发相应动作来执行。

动作如果要改变数据,控制器会“通知”模型去改变数据,然后模型会通知视图该数据发生了改变,以便视图进行相应更新。

## 数据库结构

可以去下载一份PrestaShop 1.5 的[数据库结构一览表](http://doc.prestashop.com/download/attachments/9404440/pdw-1.5-20130605.pdf?version=1&modificationDate=1373965853000&api=v2),或者[MySQL Workbench的模型文件格式](http://doc.prestashop.com/download/attachments/9404440/pdm-1.5-20130605.mwb?version=1&modificationDate=1373965837000&api=v2)。

[译]PrestaShop开发者指南 第一篇 基础的更多相关文章

  1. 译 PrestaShop开发者指南 第二篇 代码规范

    原文:<http://doc.prestashop.com/display/PS15/Coding+Standards> 废话不多译了,讲重点. 代码风格验证工具:CodeSniffer( ...

  2. 译 PrestaShop开发者指南 第四篇 深入PrestaShop核心开发

    ## 访问数据库 ### 数据库结构 PrestaShop的数据库表默认带有ps_的前缀,前缀在安装时可以自定义. 所有表名都是小写,以下划线分割.当一个表表示要在两个实体间建立连接时,表名中两个实体 ...

  3. 译 PrestaShop开发者指南 第三篇 设置本地安装环境

    ## 环境要求 - Unix, Linux 或 Windows - Web服务器:Apache 1.3 或更高的版本 - PHP:5.2或更高版本 - MySQL:5.0或更高版本 PrestaSho ...

  4. 深入学习jQuery选择器系列第一篇——基础选择器和层级选择器

    × 目录 [1]id选择器 [2]元素选择器 [3]类选择器[4]通配选择器[5]群组选择器[6]后代选择器[7]兄弟选择器 前面的话 选择器是jQuery的根基,在jQuery中,对事件处理.遍历D ...

  5. 【转帖】Mysql多维数据仓库指南 第一篇 第1章

     Mysql多维数据仓库指南 第一篇基本原理 章节列表: 第1章:基本组成 第2章:维度历史 第3章:维度可加性 第4章:维度查询 本篇概述 你将运用关系数据库来实施一个维度数据仓库.事实表和维表这两 ...

  6. Webpack系列-第一篇基础杂记

    前言 公司的前端项目基本都是用Webpack来做工程化的,而Webpack虽然只是一个工具,但内部涉及到非常多的知识,之前一直靠CV来解决问题,之知其然不知其所以然,希望这次能整理一下相关的知识点. ...

  7. [Python笔记]第一篇:基础知识

    本篇主要内容有:什么是python.如何安装python.py解释器解释过程.字符集转换知识.传参.流程控制 初识Python 一.什么是Python Python是一种面向对象.解释型计算机程序设计 ...

  8. TypeScript学习指南第一章--基础数据类型(Basic Types)

    基础数据类型(Basic Types) 为了搭建应用程序,我们需要使用一些基础数据类型比如:numbers,strings,structures,boolean等等. 在TypeScript中除了Ja ...

  9. 初学 Canvas <第一篇-基础篇>

    本文摘自:兴趣部落大神(为你一生画眉)-讲一讲canvas究竟是个啥? HTML5 的标准已经出来好久了,但是似乎其中的 Canvas 现在并没有在太多的地方用到.一个很重要的原因是,Canvas 的 ...

随机推荐

  1. 调用 webapi的put和delete 报"Method Not Allowed" 405 错误。

    修改引用到webapi的Dll文件对应的项目的web.config 选择生成读写方法webapi会生成四个读写的方法(CRUD),两个获取数据的.一个更新.一个删除,默认情况下更新和删除是不对外开外的 ...

  2. 解决play-1.4.0在linux或mac下提示No such file or directory的问题

    问题原因:"play"脚本中有特殊符号. 解决方案:写脚本去掉即可. 代码:fixplay.py 放在play-1.4.0目录下执行.亲测在osx与ubuntu下均可用. with ...

  3. spark MySQL jar 包

    /** * Created by songcl on 2016/6/24. */ import java.sql.DriverManager //val sqlContext = new org.ap ...

  4. 简谈ubuntu之DIY发行版

    2007.05.13    二十一世纪到了,每个人都强调自己的个性,于是一种叫做DIY的东西悄然兴起. 操作系统作为全人类智慧的结晶,自然DIY起来难度极大,因而DIY出一个操作系统成就感绝对比买宜家 ...

  5. 十四、EnterpriseFrameWork框架核心类库之简易ORM

    在写本章前先去网上找了一下关于ORM的相关资料,以为本章做准备,发现很多东西今天才了解,所以在这里也对ORM做不了太深入的分析,但还是浅谈一下EFW框架中的设计的简易ORM:文中有一点讲得很有道理,D ...

  6. HTML5大数据可视化效果(二)可交互地铁线路图

    前言 最近特别忙,承蒙大伙关照,3D机房的项目一个接着一个,领了一帮小弟,搞搞传帮带,乌飞兔走,转眼已经菊黄蟹肥……有个小弟很不错,勤奋好学,很快就把API都摸透了,自己折腾着做了个HTML5的魔都的 ...

  7. ExtJs Column 显示文字内容过长 使用Tootip显示全部内容

    { text: 'Column Header Blah', dataIndex: 'blah', renderer: function(value, metaData, record, rowIdx, ...

  8. WCF学习日记

    图书馆借阅了<WCF高级编程>,从6.11开始学习wcf,希望尽快熟悉原理和编程模型以及常用编程方法.     WCF是一个平台,也是一个框架,从Net.3.0 就在Net framewo ...

  9. HTML5[7]: 实现网页版的加载更多

    理所当然,jQuery出场: $(function() { $(window).scroll(function() { if($(this).scrollTop() + $(this).innerHe ...

  10. 模拟Jquery选择器

    目前实现的功能有以下几点: 1.$("#adom"); // 返回id为adom的DOM对象 2.$("a"); // 返回一个a标签的数组 3.$(" ...