ecshop学习四

1.ecshop的主体结构
<script type="Text/Javascript" language="JavaScript">
<!--
{literal}
if (window.top != window)
{
  window.top.location.href = document.location.href;
}
{/literal}
//-->
</script>

<frameset rows="76,*" framespacing="0" border="0">
  <frame src="index.php?act=top" >
  <frameset cols="180, 10, *" framespacing="0" border="0" >
    <frame src="index.php?act=menu" >
    <frame src="index.php?act=drag" >
    <frame src="index.php?act=main" >
  </frameset>
</frameset>
  <frameset rows="0, 0" framespacing="0" border="0">
  <frame src="http://api.ecshop.com/record.php?mod=login&url={$shop_url}" >
  </frameset>

  

top表示最*的窗口,也就是最外层的窗口。如果一个大窗口中嵌套了几个小窗口,那么在小窗口中使用top就表示最外面的大窗口,就是这个意思了。

  

<li><a href="javascript:window.top.frames['main-frame'].document.location.reload();window.top.frames['header-frame'].document.location.reload()">{$lang.refresh}</a></li>
刷新     

 

document 表示的是一个文档对象,windows 表示一个窗口对象。 
一个窗口下面可以有很多的document对象。每个document 都有 一个URL。 

但是,这不是所有的区别。当你ctrl + F5 一个链接 http://www.jb51.net/#server 
打印 alert(document.URL ); 和 alert(windows.location.href); 
发现,这两个的值不一样, 

document.URL : http://www.jb51.net/ 
windows.location.href :http://www.jb51.net/#server 

所以,如果要用 fragment 进行相应的处理的话,最好是用 windows.location.href 
否则会出现很奇怪的错误。

  

 

2.ecshop的地区,支付方式,配送方式

    $smarty->assign('countries', get_regions());
    $smarty->assign('provinces', get_regions(1, 1));
    $smarty->assign('cities', get_regions(2, 2));
  

function get_regions($type = 0, $parent = 0)
{
    $sql = 'SELECT region_id, region_name FROM ' . $GLOBALS['ecs']->table('region') .
            " WHERE region_type = '$type' AND parent_id = '$parent'";

    return $GLOBALS['db']->GetAll($sql);
}
  

//获取配送方式
    $directory = ROOT_PATH . 'includes/modules/shipping';
    $dir = @opendir($directory);
    $set_modules = true;
    $modules = array();

    while (false !== ($file = @readdir($dir))) {
        if (preg_match("/^.*?.php$/", $file)) {


            if ($file != 'express.php') {

                include_once($directory . '/' . $file);
            }
        }
    }
    @closedir($dir);
    unset($set_modules);

    foreach ($modules AS $key => $value) {
        ksort($modules[$key]);
    }
    ksort($modules);