概念:
iwebshop定義:
iWebShop基於iweb SI框架開發,在獲得iweb SI技術平臺的庫支持的條件下,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變量定義
如下圖所示:
- public static $menu = array(
- //交流QQ:82530662
- '商品'=>array(
- '商品管理'=>array(
- '/goods/goods_list' => '商品列表',
- '/goods/goods_edit' => '商品添加'
- ),
- '商品分類'=>array(
- '/goods/category_list' => '分類列表',
- '/goods/category_edit' => '添加分類'
- ),
- '品牌'=>array(
- '/brand/category_list' => '品牌分類',
- '/brand/brand_list' => '品牌列表'
- ),
- '模型'=>array(
- '/goods/model_list'=>'模型列表',
- '/goods/spec_list'=>'規格列表',
- '/goods/spec_photo'=>'規格圖庫'
- ),
- '搜索'=>array(
- '/tools/keyword_list' => '關鍵詞列表',
- '/tools/search_list' => '搜索統計'
- )
- ),
- )