最新消息: 新版网站上线了!!!

ecshop 架构设计 从头看起

ecshop 架构设计 从头看起

先看看首页的模板载入流程:

从执行开始

require(dirname(__FILE__) . '/includes/init.php');

完成初始化部份

一,针对客户端的不同,加入了对手持浏览的优先分支处理

 

$ua = strtolower($_SERVER['HTTP_USER_AGENT']);

$uachar = 

"/(nokia|sony|ericsson|mot|samsung|sgh|lg|philips|panasonic|alcatel|lenovo|cldc|midp|mobile)/i";

 

if(($ua == '' 

|| preg_match($uachar, $ua))&& !strpos(strtolower($_SERVER['REQUEST_URI']),'wap'))

{

    $Loaction = 'mobile/';

    if (!empty($Loaction)) {

        ecs_header("Location: $Loaction\n");

        exit;

    }

}

二,判断是否属于ajax请求

$act = !empty($_GET['act']) ? $_GET['act'] : '';

if ($act == 'cat_rec')

{

    $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');

    $rec_type = !empty($_REQUEST['rec_type']) ? intval($_REQUEST['rec_type']) : '1';

    $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0';

    include_once('includes/cls_json.php');

    $json = new JSON;

    $result   = array('error' => 0, 'content' => '', 'type' => $rec_type, 'cat_id' => $cat_id);

    $children = get_children($cat_id);

$smarty->assign($rec_array[$rec_type] . '_goods',

      get_category_recommend_goods($rec_array[$rec_type], $children));    

// 推荐商品

    $smarty->assign('cat_rec_sign', 1);

    $result['content'] = $smarty->fetch('library/recommend_' . $rec_array[$rec_type] . '.lbi');

    die($json->encode($result));

}

 

这里是针对最好,最热,最新推荐产品的ajax 请求处理

判断 GET中 act变量 的字符串 是否等于 cat_rec

 

三,载入主页模板页面内容, 这里应用于smarty 模板缓存机制

特点:

每个模板页面基本上对应一个入口页面

每个入口页面会从头开始完成初始化流程

 

Smarty 模板机制 从某种角度把视图与处理逻辑分开。

Ecshop 的模板机制在smarty 的机制处理思想上重新加入自己的处理成分

重点体现在这个文件:

Includes\cls_template.php

 

构造$smarty 对象,在includes\init.php

 

    require(ROOT_PATH . 'includes/cls_template.php');

    $smarty = new cls_template;

 

    $smarty->cache_lifetime = $_CFG['cache_time'];

    $smarty->template_dir   = ROOT_PATH . 'themes/' . $_CFG['template'];

    $smarty->cache_dir      = ROOT_PATH . 'temp/caches';

$smarty->compile_dir    = ROOT_PATH . 'temp/compiled';

 

 

关于$_SESSION 的初始化:

一, 如果是蜘蛛的访问,那么默认为访客方式,并且不记录到日志中

二, 用户信息的初始化与session 变量中的值是紧密相关的。

三, 关于用户的信息,先找session ,再找cookie

 

转载请注明:谷谷点程序 » ecshop 架构设计 从头看起