最近要仿一个网站,准备用prestashop来做,一直没怎么深入研究过这个东西,都只是在改一些外部
的东西,从今天开始好好看看,方便做后面的开发。
从头开始index.php:
来看看header.php:
然后是footer.php:
从上面三个文件中,可以很清晰的看出prestashop的页面结构:
上面三个文件都有类似:'HOOK_RIGHT_COLUMN' => Module::hookExec('rightColumn')
这样的模块加载函数,有必要去看看里面的代码。
classes/Module.php中的hookExec函数:
大致的意思是这样,通过挂载点名称取得在这个挂载点上的模块的信息,然后遍历这些模块,
产生模块的实例,然后执行模块中的相应hook+hook_name的函数返回相应的html代码,
所有模块的html代码都以字符串型似记录在$output这个变量中,所以hook_Exec函数返回的就是
一个很长的构造好的html字符串,可以分配给tpl的变量直接使用。
这里用到了call_user_func()函数来动态执行模块中的方法,这个技巧很不错。