免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2846 | 回复: 0
打印 上一主题 下一主题

prestashop代码分析之二init.php [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-23 17:04 |只看该作者 |倒序浏览

inti.php这个文件,是由head.php每次引入的,先来分析一下head.php
第一行是一个p3p的声明,作用是cookie的跨域使用,比如你iframe一个页面,这个页面是其他网站,这时候iframe里面的页面的cookie是不能随着头部发送回去的,所以cookie也无效,但是加了这个就可以了。原因我会写文章单独讲解
header('P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"');
接下来就引入init.php文件了
接下来就是初始化hook在头部、左边和的所有module
‘HOOK_HEADER’ => Module::hookExec(’header’),
‘HOOK_LEFT_COLUMN’ => Module::hookExec(’leftColumn’),
‘HOOK_TOP’ => Module::hookExec(’top’),
css和js文件
如果网店关闭就给503状态码
现在来分析init.php
确定模板是否存在,网店是否关闭
if (!is_dir(dirname(__FILE__).'/themes/'._THEME_NAME_))
        die(Tools::displayError('Current theme unavailable. Please check your theme directory name and permissions.'));
elseif (basename($_SERVER['PHP_SELF']) != 'disabled.php' AND !intval(Configuration::get('PS_SHOP_ENABLE')))
        $maintenance = true;
缓存控制打开了,所有的输出都会被缓存,直到页面结束或者给与明确输出指令。prestashop没有用gzip压缩
ob_start();
页面信息,这些东西php没有准备好,总是要写一些东西来自己准备,虽然都不是很难,但是总是很烦
$pathinfo = pathinfo(__FILE__);
$page_name = basename($_SERVER['PHP_SELF'], '.'.$pathinfo['extension']);
$page_name = (preg_match('/^[0-9]/', $page_name)) ? 'page_'.$page_name : $page_name;//这个的值自己echo看看
设定语言
Tools::switchLanguage();
Tools::setCookieLanguage();
每一页都可能会有的登出
if (isset($_GET['logout']) OR ($cookie->logged AND Customer::isBanned(intval($cookie->id_customer))))
{
        $cookie->logout();
        Tools::redirect(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : NULL);
}
elseif (isset($_GET['mylogout']))
{
        $cookie->mylogout();
        Tools::redirect(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : NULL);
}
设定货币
$iso = strtolower(Language::getIsoById($cookie->id_lang ? intval($cookie->id_lang) : 1));//如果cookie中没有语言id,语言id默认就是1
@include(_PS_TRANSLATIONS_DIR_.$iso.'/fields.php');
@include(_PS_TRANSLATIONS_DIR_.$iso.'/errors.php');
$_MODULES = array();

$currency = Tools::setCurrency();
检查购物车
if (is_numeric($cookie->id_cart))
{
        $cart = new Cart(intval($cookie->id_cart));//初始化购物车,传cookie中的购物车id进去
        $cart->id_lang = intval($cookie->id_lang);//当前使用的语言id
        if ($cart->OrderExists())//这个购物车在数据库中真的存在吗?
                unset($cookie->id_cart, $cart);//不存在就把cookie中存的也删了
        else
        {       
                if ($cookie->id_customer)
                    $cart->id_customer = intval($cookie->id_customer);//赋值购物车的用户id
            $cart->id_currency = intval($cookie->id_currency);//赋值购物车的货币id
            $cart->update();//存一下,再执行hook在购物车上的module
    }
}
如果没有购物车,新建一个,写入语言、客户等信息
if (!isset($cart) OR !$cart->id)
{
        $cart = new Cart();
        $cart->id_lang = intval($cookie->id_lang);
    $cart->id_currency = intval($cookie->id_currency);
        $cart->id_guest = intval($cookie->id_guest);
    if ($cookie->id_customer)
            $cart->id_customer = intval($cookie->id_customer);
}
if (!$cart->nbProducts())//购物车里面所有产品的数量
        $cart->id_carrier = NULL;
设定各种本地化信息
$ps_language = new Language(intval($cookie->id_lang));
setlocale(LC_COLLATE, strtolower($ps_language->iso_code).'_'.strtoupper($ps_language->iso_code).'.UTF-8');//等同于strcoll()
setlocale(LC_CTYPE, strtolower($ps_language->iso_code).'_'.strtoupper($ps_language->iso_code).'.UTF-8'); //设定文字的显示方式
setlocale(LC_NUMERIC, 'en_EN.UTF-8');//数字间隔的方式
语言和货币,写在smarty里面
if (is_object($currency))
        $smarty->ps_currency = $currency;
if (is_object($ps_language))
        $smarty->ps_language = $ps_language;
$smarty->register_function('dateFormat', array('Tools', 'dateFormat'));//注册Tools::dateFormat成为一个smarty的函数
......
这些是为了兼容prestashop1.1版本的theme,因为1.2和1.1版本(主要是图片链接部分)有较大差异,在1.2beta测试的时候,很多人发现了这个问题,官方为了平稳的过渡,所以才有了这些部分
if (!Configuration::get('PS_THEME_V11'))
{
        define('_PS_BASE_URL_SSL_', $protocol_ssl.$server_host);
...

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/66166/showart_2129082.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP