ECSHOP 二次開發

普通模板與公共模板之間嵌套

  • 普通模板的後綴:dwtphp

  • 公共模板的後綴:lbicss

  • 普通模板能夠嵌套公共模板html

<!-- #BeginLibraryItem "/library/page_header.lbi" --><!-- #EndLibraryItem -->
  • 公共模板沒法嵌套普通模板數據庫

  • 公共模板能夠嵌套公共模板api

{insert name='member_info'}

ECSHOP目錄結構介紹

  • admin 後臺管理系統的相關文件夾緩存

  • api 對外提供數據接口的相關文件夾session

  • cert 存放證書的文件夾this

  • data 數據鏈接設置等,包括各類廣告的上傳圖片等url

  • images 上傳商品圖片文件夾插件

  • includes 前臺核心庫文件夾(重點,屬於模型層M

  • js 前臺用js腳本文件夾

  • languages 語言包文件夾

  • temp 臨時文件夾(編譯、緩存)

  • themes 模板文件夾(重點,屬於視圖層V

  • wap 手機瀏覽程序文件夾

  • widget 小插件文件夾

模板內置標籤

  • 分支流程

<!-- {if $val.max_amount > 0} -->
{$val.max_amount}
<!-- {else} -->
{$lang.nolimit}
<!-- {/if} -->
  • 循環流程

<!-- {foreach from=$val.act_range_ext item=ext} -->
{$ext.name}
<!-- {/foreach} -->

init.php 功能

  1. 參數過濾

  2. 初始化設置與數據定義

  3. 加載核心庫與類

  4. 建立數據庫鏈接與ECS對象

  5. 讀取全局配置

  6. 初始化模板引擎配置

  7. 初始化session

  8. 其餘

加載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 = 'h5/';

    if (!empty($Loaction)) {
        ecs_header("Location: $Loaction\n");

        exit;
    }
}

在.lbi或.dwt模板文件中,對數據進行處理的源碼實現

  • 代碼以下:

<div class="goods-brief">{$goods.brief|truncate:20}</div>
<div class="gos-title">{$goods.short_name|escape:html}</div>
  • 在cls_template.php文件中,第601行:

if (!empty($moddb))
        {
            foreach ($moddb AS $key => $mod)
            {
                $s = explode(':', $mod);
                switch ($s[0])
                {
                    case 'escape':
                        $s[1] = trim($s[1], '"');
                        if ($s[1] == 'html')
                        {
                            $p = 'htmlspecialchars(' . $p . ')';
                        }
                        elseif ($s[1] == 'url')
                        {
                            $p = 'urlencode(' . $p . ')';
                        }
                        elseif ($s[1] == 'decode_url')
                        {
                            $p = 'urldecode(' . $p . ')';
                        }
                        elseif ($s[1] == 'quotes')
                        {
                            $p = 'addslashes(' . $p . ')';
                        }
                        elseif ($s[1] == 'u8_url')
                        {
                            if (EC_CHARSET != 'utf-8')
                            {
                                $p = 'urlencode(ecs_iconv("' . EC_CHARSET . '", "utf-8",' . $p . '))';
                            }
                            else
                            {
                                $p = 'urlencode(' . $p . ')';
                            }
                        }
                        else
                        {
                            $p = 'htmlspecialchars(' . $p . ')';
                        }
                        break;

                    case 'nl2br':
                        $p = 'nl2br(' . $p . ')';
                        break;

                    case 'default':
                        $s[1] = $s[1]{0} == '$' ?  $this->get_val(substr($s[1], 1)) : "'$s[1]'";
                        $p = 'empty(' . $p . ') ? ' . $s[1] . ' : ' . $p;
                        break;

                    case 'truncate':
                        $p = 'sub_str(' . $p . ",$s[1])";
                        break;

                    case 'strip_tags':
                        $p = 'strip_tags(' . $p . ')';
                        break;

                    default:
                        # code...
                        break;
                }
            }
        }

        return $p;
相關文章
相關標籤/搜索