iwebshop 詳解

概念:

iwebshop定義:

iWebShop基於iweb SI框架開發,在獲得iweb SI技術平臺的庫支持的條件下,iWebShop可以輕鬆滿足用戶量級百萬至千萬級的大型電子商務網站的性能要求。

特性:

1、創新技術構架:可連接iWebSI支持庫,輕鬆實現千萬會員同時在線;
2、領先模板引擎:自主研發編譯型模板引擎,購物過程、訂單處理更順暢;
3、出色商品管理:強大的商品分類、展示、促銷管理功能,滿足更多商業需求;
4、內置分析報表:流量分析、訂單統計等多種報表,清晰掌握運營真實情況;
5、便捷一鍵模式:軟件升級,輕點鼠標,一步到位;
6、完善後臺權限:靈活的權限分配機制,方便店員、店長、經理等不同人員協作;

技術優勢:

1、iWebSI平臺支持
iWebSI的web層、db層負載均衡,基於內存的分佈式緩存系統、分佈式文件系統、分佈式數據存儲系統可以支持站點擁有服務於百萬甚至千萬級龐大用戶羣的能力
2、編譯型模板引擎
這是一款由Jooyea技術團隊自主研發的編譯型引擎,可以以很少的系統資源來獲得最大的運行效率,與傳統解析型模板相比速度提高2-3倍
3、緩存技術
iWebShop領先的高速文本緩存極大減輕數據庫壓力,此外當緩存文件達到一定數量時,iwebcache緩存存儲引擎會還將文件進行有序目錄散列,提高緩存讀取效率
4、良好的兼容擴展
結合iWebExchanger,iWebShop不僅可以與iWebAX家族產品組合建站,也可以與其他建站程序方便整合。
5、方便二次開發
iWebShop採用php5的mvc程序架構,代碼結構清晰,註釋明確,易於理解,並提供完整的開發文檔,便於二次開發和學習交流
6、靈活插件機制
iWebShop提供非常靈活易用的插件機制,並支持熱插拔,用戶不僅能從第三方獲取資源,利用開放的API接口還可自行開發插件
7、語言包機制
iWebShop將頁面文本語言與系統分離,只需上傳語言包即可輕鬆實現不同語種的“翻譯”,結構式自動拼接設計也絲毫不會影響系統效率
8、一鍵式操作
通過網站後臺,iWebShop可以進行一鍵升級、一鍵換模板皮膚、一鍵安裝插件等便捷功能。
9、防惡意軟件
iWebShop使用開放的底層安全規範架構,由於底層架構的安全規範設計,能夠有效地保護您的網站和網絡用戶免受惡意軟件的侵害,確保網絡用戶數據免遭破壞
10、附加組件的安全機制
iWebShop事先設定了應用組件、皮膚的編寫安全規範,在該安全規範的約束下,應用組件和皮膚您可以放心使用,不會對網站後臺數據以及前臺社會化網絡用戶造成任何損失

具體操作:

主要路徑:lib/web/iweb.PHP 中可以查看一些系統內核所有類文件的詳細路徑


開啓錯誤調試:config/config.php 中'debug'==true ,使用完成之後最好關閉(首頁會報錯)


建立 後臺控制器:
建立控制器
init 方法保留 是初始化的意思   可以取出user信息 {$this->user
['username']};
建立方法  //類名和方法名不能一致
首先在classes/themeroute.php 中添加控制器方法


控制器中:

IReq::get(email)   get接值

IFilter::act()過濾前臺特殊字符 爲了防止sql注入


如果對文件名進行了修改eg:iwebshop4.1修改爲iwebshop 時 :

爲了避免緩存文件導致js文件不能使用 我們將runtime文件下的所有文件刪除


前臺應用jQuery{js:jquery}  同類下還有很多   {js:cookie}  {js:form}


1、iwebshop模板開發

iWebShop 前端文件統一放置在程序根目錄下的views 目錄下,層次模型圖:



      根據上述兩張樹狀圖我們可以很清晰瞭解整個shop的前端文件存放位置,shop系統中默認的主題和皮膚名稱都是default。主題的組成:佈局模板,普通模板,主題相關的JavaScript,皮膚。皮膚的組成:CSS,圖片,皮膚相關的javascript。如果要新建主題或皮膚只需要在指定的目錄位置中新建文件夾即可(文件夾名稱就是方案的名稱),系統允許存放多個主題,且每個主題又可以擁有多套皮膚,在網站運行時可以從中選擇一種主題和一種皮膚進行使用。

       由於網站的控制器功能模塊沒有區分網站的前臺和後臺,所以主題和皮膚必須同時對應前後臺,這也就是意味着用戶可以自由修改網站後臺的樣式。新shop的模板分爲兩種類型:佈局模板(layouts)和普通模板。可以簡單的理解爲共性化的公共模板和個性化的局部模板,對於一個網站來說,很多頁面的head(網站頭部,包括導航,廣告,引入的js,css等)和foot(網站底部,包括備案信息)往往都是相同的,不同的是頁面的主體部分,針對這種情況,shop的頁面在絕大部分情況下采取佈局模板和普通模板拼接組合而成(有些特殊情況可以沒有佈局)。佈局模板的創建有利於模板代碼共用,更便於模板的升級與維護,所以合理的使用佈局是很重要的。


iwebshop首頁位置   /views/default/layouts/site.html


2.顯示sql語句

query 方法

3.生成日誌

1、sql語句生成

找到 query 方法寫入:

2、數組日誌生成

eg:

找到classes/log.php,自定義一個日誌類型

找到controllers/site.php

在商品詳情方法中加入代碼,運行前臺商品詳情頁面即可生成日誌


3.數據在前臺頁面的展示

控制器中


傳值方式1、$this->setRenderData($goods_info);  //傳值 必須是一個數組     前臺顯示 用其下標當變量就可以  eg:價格:{$price}  ;

傳值方式2、$this->test='小明'      //前臺顯示 爲    姓名:{$this->test}

$this->redirect('products');   //跳轉前臺頁面      views/default      後臺頁面   views/sysdefault


foreach在前臺使用:

{foreach:items=$breadGuide}

    <a href="{url:/site/pro_list/cat/$item[id]}">{$item['name']}</a>

{/foreach}

if的使用:

{if:$promo == 'time'}

     內容

{else:}

     內容

{/if}


前臺接值

{set:$type = IReq::get('type') == 'checkbox' ? 'checkbox' : 'radio'}
{set:$cate_id = IReq::get('cate_id') ? base64_decode(IReq::get('cate_id')):0}




前臺頁面js傳值

1、如在a.html頁js 中設置'li'

art.dialog.data("li",'xiaohj');
2、在b.html頁面js中取出li
var li=art.dialog.data('li');
console.log(li);

該功能的實現是運用了art.dialog插件這裏只是其數據讀寫的功能而已,它還有很多功能






{query}{/query}標籤在前臺運用

eg:

{set:$user_id = $this->user['user_id']}
<p class="text">您當前的邀請人數爲:{query:name=user where=invite eq $user_id}{/query}<b class="brown">{set:$count=count($items)}{$count}</b></p>
//分頁
<thead><tr><th>被邀請人用戶名</th><th>註冊時間</th></tr></thead>
<tbody>
{set:$page= (isset($_GET['page'])&&(intval($_GET['page'])>0))?intval($_GET['page']):1;}
{query:
name=user as u 
join=left join member as m on m.user_id eq u.id 
where=u.invite eq $user_id fields=u.username,m.time 
page=$page 
pagesize=1
}
<tr>
    <td>{$item['username']}</td><td>{$item['time']}</td>
</tr>
{/query}
<tr><td colspan='3'>{$query->getPageBar()}</td></tr>
</tbody>

4.前臺url示例

引用當前主題

eg:

<script type="text/javascript" src="{theme:javascript/awardRotate.js}"></script>
位置文件:default/javascript/awardRotat.js

引用當前皮膚下文件

eg:

<link rel="stylesheet" href="{skin:css/demo.css}" type="text/css" />
位置文件:views/skin/default/css/demo.css



5.控制器的建立

****注意:類名不能與方法名一致******

在controllers/建立 eg:test.php

必須使用init方法   初始化方法  其方法中設置了user信息     前臺可以直接取 {$this->user['username']}

顯示頁面和ci用法基本一致 前臺在default/下建立 views/test/index.html 

//此時該控制器下的方法還不能顯示頁面 必須在classes/themeroute.php 中添加控制器方法中添加該控制器名:








*****************數據寫讀**************************

sql語句方法

1、IModel 簡單的寫讀  //位置  lib/web/model/model_class.php

2、IQuery  比較複雜的sql語句 比如:兩表聯查 having  、 group by       //位置   lib/core/query_class.php

 

增、刪、改、查

IMdel 操作

1、查詢:

1.單挑數據查詢

2.查詢多條數據


2、添加數據


返回是自增id

3、修改數據


4、刪除數據



IQuery 操作

兩表聯查:



配置文件新建:

打開config/文件 eg:建立cate_config.php

再打開config/config.php,添上以下代碼
'configExt'=> array('site_config'=>'config/site_config.php',
       'cate_config'=>'config/cate_config.php'
   ),


iwebshop配置文件的寫讀


寫eg:

$arr=array();
array_push($arr,$name);
$newtypename=serialize($arr);
$inputArray=(array('parentType'=>$newtypename));
$siteObj = new Config('site_config');
$siteObj->write($inputArray);
iwebshop中會默認給該字符串添加‘/’過濾  此時我們要在

classes/config.php的$safeKey中添加一個鍵值,使其不添加轉義符。

eg:

//不需要過濾的鍵名
private static $safeKey = array('index_slide','service_online','parentType');




讀eg:

$siteConfigObj = new Config("site_config");
$siteConfigObj->sms_platform;
$this->AccountSid =$siteConfigObj->sms_accountSid;(配置文件中的鍵值)
$this->AccountToken =$siteConfigObj->sms_accountToken;
$this->AppId =$siteConfigObj->sms_appId;

郵箱使用:

163郵箱:



qq郵箱:


前臺腳本ajax應用:

{js:jquery}

<script type='text/javascript'>
    $(function(){
        $("#sub").click(function(){
            var ajaxUrl = '{url:/ucenter/invitePro}';
            var email=$("#mail").val();
            $.getJSON(ajaxUrl,{'email':email},function(msg){
                //console.log(msg);
                alert(msg.message);
            })
        })
    })
</script>

iwebshop的後臺菜單爲固定的三級菜單,定義菜單的類在/classes/menu.php文件中,由$menu變量定義

如下圖所示:

  1. public static $menu = array(  
  2.     //交流QQ:82530662  
  3.     '商品'=>array(  
  4.         '商品管理'=>array(  
  5.               
  6.             '/goods/goods_list' => '商品列表',  
  7.             '/goods/goods_edit' => '商品添加'  
  8.         ),  
  9.         '商品分類'=>array(  
  10.             '/goods/category_list'  =>   '分類列表',  
  11.             '/goods/category_edit'  =>   '添加分類'  
  12.         ),  
  13.         '品牌'=>array(  
  14.             '/brand/category_list'  =>   '品牌分類',  
  15.             '/brand/brand_list'     =>   '品牌列表'  
  16.         ),  
  17.         '模型'=>array(  
  18.             '/goods/model_list'=>'模型列表',  
  19.             '/goods/spec_list'=>'規格列表',  
  20.             '/goods/spec_photo'=>'規格圖庫'  
  21.         ),  
  22.         '搜索'=>array(  
  23.             '/tools/keyword_list' => '關鍵詞列表',  
  24.             '/tools/search_list' => '搜索統計'  
  25.         )  
  26.     ),  
  27. )  
以商品列表爲例說明路徑的意義: goods是控制器(即url中的controller參數),goods_list是動作(即url中的action參數) 調用菜單初始化函數(init)的入口點在:/views/layouts/admin.html模板中,且看下圖:
發佈了17 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章