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