[转]Prestashop 1.3 结构分析

刚开始接触一个新的系统,最好是全面的熟悉,理解整个页面怎么输出,怎么控制的。不要刚开始就是分析某一项功能,或者只是了解需要更改的那一部分内容。对于Prestashop 这种系统,我们更要全面的了解。

接触Prestashop 这个系统有一段时间了,写个模块,更改一下显示效果,做一个页面,还是很随意的。但是一直没有认真的去分析和理解整个网站的结构。今天特意抽了一点时间来研究一下,并且将自己的分析记录下来了,理解得不是很透彻,但是通过这个还是能够帮助大家理解Prestashop 这个系统的。现在Prestashop 的最新版本是1.6了,结构有了很多改变。了解了1.3的结构,有了一定的基础,更有利于我们理解 1.6的结构和体会Prestashop在这几年中的进步。

Prestashop 1.3.7 的目录结果如下

这里主要是通过一个页面来分析整个结构,访问页面包括index.php、cart.php、address.php等等。

1. 载入 config/config.inc.php 文件

1.1 使用_autoload($className)载入classes目录下的相关class
    1.2 通过判断config/settings.inc.php文件是否存在,来判断程序是否安装,然后载入 config/settings.inc.php 文件,   settings.inc.php 文件主要定义了数据库信息:网站的_PS_BASE_URL_路径、数据库信息、主题名称
    1.3 载入 config/defines.inc.php,此文件主要设置网站的自定义变量,包括网站的各个文件夹
    1.4 设置和载入网站的基本变量,载入配置:Configuration::loadConfiguration();,载入语言:Language::loadLanguages();,加载所有区/税收关系:Tax::loadTaxZones();,设置默认的国家:$defaultCountry = new Country(intval(Configuration::get(‘PS_COUNTRY_DEFAULT’)));,设置网站时区
    1.5 引用smarty.config.inc.php,载入Prestashop 系统的 Smarty 模板的基本配置信息

2. 载入header.php文件

2.1 载入ini.php文件
2.1.1 判断模板文件是否存在,做出相应的处理
2.1.2 获取页面的名称,以id的形式显示在body
2.1.3 实例化Cookie,设置Cookie的基本变量,包括当前页面显示的语言、用户的信息、货币信息等。处理购物车的相关信息。
2.1.4 设置 smarty 模板中要使用的相关方法:dateFormat、productPrice、convertPrice、convertPriceWithoutDisplay、convertPriceWithCurrency、displayWtPrice、displayWtPriceWithCurrency、displayPrice、convertAndFormatPrice
2.1.5 定义网站链接,是http还是https模式
2.1.6 在smarty中设置相关的参数:模板路径、语言文件路径、邮件路径、页面名称、tpl路径、货币、购物车信息等。
2.1.7 判断商店是否关闭,关闭的话,显示设置相关的路径。
2.2 Smarty 中定义 HOOK_HEADER、HOOK_LEFT_COLUMN、HOOK_TOP、token等信息
    2.3 判断和载入相关的js和css文件
    2.4 载入theme中的header.tpl,header.tpl主要输出页面头部,包含HOOK_HEADER、HOOK_TOP、HOOK_LEFT_COLUMN等内容以及左侧的内容。

3. 定义在此页面输出的相关内容,赋值给 smarty,载入页面对应的 tpl文件,输出中间的内容

4. 载入 footer.php文件

  4.1 Smarty 中定义 HOOK_RIGHT_COLUMN、HOOK_FOOTER等内容
    4.2 载入theme中的footer.tpl文件,输出右侧的内容和底部的内容

转载自:http://www.phpmarker.com/218.html

时间: 2024-10-25 04:15:40

[转]Prestashop 1.3 结构分析的相关文章

prestashop 1.4代码解析:弱水三千的那一瓢

代码就不止三千了,但是在prestashop 1.4中最重要的那一瓢,就是FrontController.php. 解析 先来看看prestashop 1.4的文件加载方式,如果你new了一个类,代码首先会在controller中寻找同名的类文件,这点和之前的版本差不多.如果找不到,就去 override这个用户可以自定义类的文件夹去寻找,如果还是找不到,会用exec新建一个请求名称的类文件,然后加载classes下面的类 名+core类.所以说,真正的FrontController.php,你

【转】Prestashop SMTP模式发送邮件客户邮件(联系我们页面)收到不的解决办法

Prestashop 一般默认使用 mail 函数发送邮件,邮件发送的IP地址就是服务器或者共享空间的IP地址.共享空间上面的网站很多,可能存在发送垃圾邮件的网站,导致共享空间的IP地址被其 他邮件服务商(gmail.hotmail等等)加入黑名单,使用mail发送的邮件全部不能够发送成功. 更换使用第三方邮件来发送邮件,Prestashop 后台设置的发送邮件模式更换成SMTP. 经过测试发现:使用SMTP发送邮件,当发件人为非SMTP账户邮箱时,发送邮件成功,但是收件人收不到邮件. 联系我们

PNG文件结构分析 ---Png解析

PNG文件结构分析 ---Png解析 为了实现更高级的应用,我们必须充分挖掘PNG的潜力. PNG的文件结构 根据PNG文件的定义来说,其文件头位置总是由位固定的字节来描述的: 十进制数 137 80 78 71 13 10 26 10 十六进制数 89 50 4E 47 0D 0A 1A 0A 其中第一个字节0x89超出了ASCII字符的范围,这是为了避免某些软件将PNG文件当做文本文件来处理.文件中剩余的部分由3个以上的PNG的数据块(Chunk)按照特定的顺序组成,因此,一个标准的PNG文

【转载】nedmalloc结构分析

原文:nedmalloc结构分析 nedmalloc是一个跨平台的高性能多线程内存分配库,很多库都使用它,例如:OGRE.现在我们来看看nedmalloc的实现 (以WIN32部分为例)    位操作小技巧:i.获取最低位的出现位置的掩码:x&(-x)ii.判断值为2的幂:x & (x-1) == 0iii.获取从最低的值为1的位开始到左边MSB的掩码: x | (-x)iv.字节对齐:(x + 2^m) &( 2^m -1) nedmalloc设计的数据结构和使用方法有几个有趣的

chromium for android GPU进程结构分析

GPU进程的客户端(Browser进程,Render进程)都会创建一个 WebGraphicsContext3DCommandBufferImpl的实例,用于封装与GPU进程的通信. 所以我们从WebGraphicsContext3DCommandBufferImpl开始引出GPU进程的结构. 一.WebGraphicsContext3DCommandBufferImpl的创建. WebGraphicsContext3D暴露的接口基本与OpenGL ES 2.0 API对应. WebGraphi

Android 4.0 ICS SystemUI浅析——StatusBar结构分析

Android 4.0 ICS SystemUI浅析——StatusBar结构分析 分类: Android2012-06-30 14:45 23687人阅读 评论(8) 收藏 举报 androidsignal代码分析iconseclipse平台 在上一篇文章<Android 4.0 ICS SystemUI浅析——SystemUI启动流程>中以及提到了SystemUI的组成,本文主要分析其中的StatusBar结构. 1.布局概览 首先,我们通过hierarchyviewer这个工具来查看一下

转载,crtmpserver文件夹结构分析

1. 顶层(crtmpserver/) 下的文件夹结构 3rdparty/             : 对lua, xml进行解析的源代码文件夹 sources/              : 项目的核心实现源代码文件夹 builders/              : 各种环境(VS2010, android, linux)下的项目生成 configs/               : 一些预定义的配置文件和示例启动脚本 docs/                  : 项目相关的文档 man

android 系统构架和应用程序目录结构分析

一.Android系统构架 Android系统从底向上一共分了4层,每一层都把底层实现封装,并暴露调用接口给上一层. Linux内核(Linux Kernel) Android运行在linux kernel 2.6之上,但是把linux内受GNU协议约束的部分做了取代,这样在Android的程序可以用于商业目的. Linux 内核是硬件和软件层之间的抽象层. 中间件 中间件包括两部分:核心库和运行时(libraries & Android runtime) 核心库包括,SurfaceManage

Android项目目录结构分析

项目结构如下图所示,使用不同sdk版本建立的项目项目结构有所不同,总体相同,高版本增加了一些包结构 1.src 和java项目一样src存放项目源代码 2.gen 自动生成,其中R.java文件也是自动生成,ADT 插件自动根据res中文件的变化修改R.java文件,将res中的资源对应一个16进制地址,用于在在代码中引用到这些资源文件. 3.bin 项目编译输出的目录,里面有apk文件 4.res 存放资源文件 a. drawable存放图片 (1)drawable-hdpi里面存放高分辨率的