EcShop开发手册
Ecshop文件結(jié)構(gòu)
ecshop文件架構(gòu)說明 ECShop 結(jié)構(gòu)圖及各文件相應(yīng)功能介紹 ECShop upload 的目錄 ┣ activity.php 活動列表 ┣ affiche.php 廣告處理文件 ┣ affiliate.php 生成商品列表 ┣ article.php 文章內(nèi)容 ┣ article_cat.php文章分類 ┣ auction.php 拍賣前臺文件 ┣ brand.php 品牌列表 ┣ captcha.php 生成驗(yàn)證碼 ┣ catalog.php 列出所以分類及品牌 ┣ category.php 商品分類 ┣ comment.php 提交用戶評論 ┣ compare.php 商品比較程序 ┣ cycle_image.php 輪播圖片程序 ┣ feed.php RSS Feed 生成程序 ┣ flow.php 購物流程 ┣ gallery.php 商品相冊 ┣ goods.php 商品詳情 ┣ goods_script.php 生成商品列表 ┣ group_buy.php 團(tuán)購商品前臺文件 ┣ index.php 首頁文件 ┣ myship.php 支付配送DEMO ┣ pick_out.php 選購中心 ┣ receive.php 處理收回確認(rèn)的頁面 ┣ region.php 地區(qū)切換程序 ┣ respond.php 支付響應(yīng)頁面 ┣ robots.txt ┣ search.php 搜索程序 ┣ sitemaps.php google sitemap 文件 ┣ snatch.php 奪寶奇兵前臺頁面 ┣ tag_cloud.php 標(biāo)簽云 ┣ topic.php 專題前臺 ┣ user.php 會員中心 ┣ vote.php 調(diào)查程序 ┣ wholesale.php 批發(fā)前臺文件 ┣ admin文件夾 ┃ ┣ account_log.php 管理中心帳戶變動記錄 ┃ ┣ admin_logs.php 記錄管理員操作日志 ┃ ┣ ads.php 廣告管理程序 ┃ ┣ adsense.php 站外JS投放的統(tǒng)計(jì)程序 ┃ ┣ ad_position.php廣告位置管理程序 ┃ ┣ affiliate.php 程序說明 ┃ ┣ affiliate_ck.php 程序說明 ┃ ┣ agency.php 管理中心辦事處管理 ┃ ┣ area_manage.php 地區(qū)列表管理文件 ┃ ┣ article.php 管理中心文章處理程序文件 ┃ ┣ articlecat.php 文章分類管理程序 ┃ ┣ article_auto.php ┃ ┣ attention_list.php ┃ ┣ attribute.php 屬性規(guī)格管理 ┃ ┣ auction.php 管理中心拍賣活動管理 ┃ ┣ bonus.php 紅包類型的處理 ┃ ┣ brand.php管理中心品牌管理 ┃ ┣ captcha_manage.php ┃ ┣ card.php 賀卡管理程序 ┃ ┣ category.php 商品分類管理程序 ┃ ┣ check_file_priv.php 系統(tǒng)文件檢測 ┃ ┣ comment_manage.php 用戶評論管理程序 ┃ ┣ convert.php 轉(zhuǎn)換程序 ┃ ┣ cron.php 計(jì)劃任務(wù) ┃ ┣ database.php 數(shù)據(jù)庫管理 ┃ ┣ ebao_commend.php 易寶推薦 ┃ ┣ edit_languages.php 管理中心語言項(xiàng)編輯(前臺語言項(xiàng)) ┃ ┣ email_list.php 郵件列表管理 ┃ ┣ favourable.php 管理中心優(yōu)惠活動管理 ┃ ┣ flashplay.php ┃ ┣ flow_stats.php 綜合流量統(tǒng)計(jì) ┃ ┣ friend_link.php 友情鏈接管理 ┃ ┣ gen_goods_script.php 生成顯示商品的js代碼 ┃ ┣ get_password.php 找回管理員密碼 ┃ ┣ goods.php 商品管理程序 ┃ ┣ goods_auto.php ┃ ┣ goods_batch.php 商品批量上傳、修改 ┃ ┣ goods_booking.php 缺貨處理管理程序 ┃ ┣ goods_export.php ┃ ┣ goods_type.php 商品類型管理程序 ┃ ┣ group_buy.php 管理中心團(tuán)購商品管理 ┃ ┣ guest_stats.php 客戶統(tǒng)計(jì) ┃ ┣ index.php 控制臺首頁 ┃ ┣ integrate.php 第三方程序會員數(shù)據(jù)整合插件管理程序 ┃ ┣ magazine_list.php ┃ ┣ mail_template.php 管理中心模版管理程序 ┃ ┣ message.php 管理中心管理員留言程序 ┃ ┣ navigator.php ┃ ┣ order.php 訂單管理 ┃ ┣ order_stats.php 訂單統(tǒng)計(jì) ┃ ┣ pack.php 包裝管理程序 ┃ ┣ payment.php 支付方式管理程序 ┃ ┣ picture_batch.php 圖片批量處理程序 ┃ ┣ privilege.php 管理員信息以及權(quán)限管理程序 ┃ ┣ sale_general.php 銷售概況 ┃ ┣ sale_list.php 銷售明細(xì)列表程序 ┃ ┣ sale_order.php 商品銷售排行 ┃ ┣ searchengine_stats.php 搜索引擎關(guān)鍵字統(tǒng)計(jì) ┃ ┣ search_log.php ┃ ┣ shipping.php 配送方式管理程序 ┃ ┣ shipping_area.php 配送區(qū)域管理程序 ┃ ┣ shophelp.php 幫助信息管理程序 ┃ ┣ shopinfo.php 網(wǎng)店信息管理頁面 ┃ ┣ shop_config.php 管理中心商店設(shè)置 ┃ ┣ sitemap.php 站點(diǎn)地圖生成程序 ┃ ┣ sms.php 短信模塊 之 控制器 ┃ ┣ snatch.php 奪寶奇兵管理程序 ┃ ┣ sql.php sql管理程序 ┃ ┣ tag_manage.php 后臺標(biāo)簽管理 ┃ ┣ template.php 管理中心模版管理程序 ┃ ┣ topic.php 專題管理 ┃ ┣ users.php 會員管理程序 ┃ ┣ users_order.php 會員排行統(tǒng)計(jì)程序 ┃ ┣ user_account.php 會員帳目管理(包括預(yù)付款,余額) ┃ ┣ user_msg.php 客戶留言 ┃ ┣ user_rank.php 會員等級管理程序 ┃ ┣ view_sendlist.php ┃ ┣ virtual_card.php 虛擬卡商品管理程序 ┃ ┣ visit_sold.php 訪問購買比例 ┃ ┣ vote.php 調(diào)查管理程序 ┃ ┣ wholesale.php 管理中心批發(fā)管理 ┃ ┣ help 的目錄 后臺操作幫助文件 ┃ ┣ images 的目錄 ┃ ┣ includes 的目錄 ┃ ┃ ┣ cls_exchange.php 后臺自動操作數(shù)據(jù)庫的類文件 ┃ ┃ ┣ cls_google_sitemap.php Google sitemap 類 ┃ ┃ ┣ cls_phpzip.php ZIP 處理類 ┃ ┃ ┣ cls_sql_dump.php 數(shù)據(jù)庫導(dǎo)出類 ┃ ┃ ┣ inc_menu.php 管理中心菜單數(shù)組 ┃ ┃ ┣ init.php 管理中心公用文件 ┃ ┃ ┣ lib_goods.php 管理中心商品相關(guān)函數(shù) ┃ ┃ ┣ lib_main.php 管理中心公用函數(shù)庫 ┃ ┃ ┗ lib_template.php 管理中心模版相關(guān)公用函數(shù)庫 ┃ ┣ styles 的目錄 ┃ ┣ templates 的目錄 ┃ ┗ js 的目錄 ┃ ┣ colorselector.js ┃ ┣ common.js ┃ ┣ listtable.js ┃ ┣ md5.js ┃ ┣ selectzone.js ┃ ┣ tab.js ┃ ┣ todolist.js ┃ ┣ topbar.js ┃ ┗ validator.js 表單驗(yàn)證類 ┣ api 的目錄 ┃ ┣ checkorder.php 檢查訂單 API ┃ ┣ cron.php ┃ ┗ init.php API 公用初始化文件 ┣ cert 的目錄 ┣ data 的目錄 ┃ ┣ ffiliate.html ┃ ┣ goods_script.html ┃ ┣ order_print.html ┃ ┣ afficheimg 的目錄 ┃ ┣ brandlogo 的目錄 ┃ ┣ captcha 的目錄 驗(yàn)證碼背景圖片存放位置 ┃ ┣ cardimg 的目錄 ┃ ┣ feedbackimg 的目錄 ┃ ┣ images 的目錄 ┃ ┣ packimg 的目錄 ┃ ┗ sqldata 的目錄 ┣ images 的目錄 ┃ ┗ upload 的目錄 ┃ ┣ File 文件上傳存放處 ┃ ┣ Flash flash上傳存放處 ┃ ┣ Image 圖片上傳存放處 ┃ ┗ Media 視頻上傳存放處 ┣ includes 的目錄 ┃ ┣ cls_captcha.php 驗(yàn)證碼圖片類 ┃ ┣ cls_ecshop.php 基礎(chǔ)類 ┃ ┣ cls_error.php 用戶級錯誤處理類 ┃ ┣ cls_iconv.php 字符集轉(zhuǎn)換類 ┃ ┣ cls_image.php 后臺對上傳文件的處理類(實(shí)現(xiàn)圖片上傳,圖片縮小, 增加水印) ┃ ┣ cls_json.php JSON 類 ┃ ┣ cls_mysql.php MYSQL 公用類庫 ┃ ┣ cls_rss.php RSS 類 ┃ ┣ cls_session.php SESSION 公用類庫 ┃ ┣ cls_sms.php 短信模塊 之 模型(類庫) ┃ ┣ cls_smtp.php SMTP 郵件類 ┃ ┣ cls_sql_executor.php SQL語句執(zhí)行類。 ┃ ┣ cls_template.php 模版類 ┃ ┣ cls_transport.php 服務(wù)器之間數(shù)據(jù)傳輸器 ┃ ┣ inc_constant.php 常量 ┃ ┣ init.php 前臺公用文件 ┃ ┣ lib.debug.php ┃ ┣ lib_article.php 文章及文章分類相關(guān)函數(shù)庫 ┃ ┣ lib_clips.php ECSHOP 用戶相關(guān)函數(shù)庫 ┃ ┣ lib_code.php 加密解密類 ┃ ┣ lib_common.php 公用函數(shù)庫 ┃ ┣ lib_goods.php 商品相關(guān)函數(shù)庫 ┃ ┣ lib_insert.php 動態(tài)內(nèi)容函數(shù)庫 ┃ ┣ lib_main.php 前臺公用函數(shù)庫 ┃ ┣ lib_order.php 購物流程函數(shù)庫 ┃ ┣ lib_passport.php 用戶帳號相關(guān)函數(shù)庫 ┃ ┣ lib_payment.php 支付接口函數(shù)庫 ┃ ┣ lib_time.php 時間函數(shù) ┃ ┣ lib_transaction.php ECSHOP 用戶交易相關(guān)函數(shù)庫 ┃ ┣ codetable 的目錄 ┃ ┃ ┣ big5-gb.table ┃ ┃ ┣ big5_utf8.php ┃ ┃ ┣ gb-big5.table ┃ ┃ ┣ gb_utf8.php ┃ ┃ ┗ ipdata.dat ┃ ┣ fckeditor 的目錄 fckeditor編輯器目錄 ┃ ┗ modules 的目錄 ┃ ┣ convert 的目錄 ┃ ┃ ┣ shopex46.php vshopex4.6轉(zhuǎn)換程序插件 ┃ ┃ ┗ shopex47.php shopex4.7轉(zhuǎn)換程序插件 ┃ ┣ cron 的目錄 ┃ ┃ ┣ auto_manage.php 自動上下架管理 ┃ ┃ ┗ ipdel.php 定期刪除 ┃ ┣ integrates 的目錄 ┃ ┃ ┣ bmforum.php 會員數(shù)據(jù)處理類 ┃ ┃ ┣ discuz.php ┃ ┃ ┣ discuz55.php ┃ ┃ ┣ dvbbs.php ┃ ┃ ┣ ecshop.php ┃ ┃ ┣ integrate.php ┃ ┃ ┣ ipb.php ┃ ┃ ┣ molyx.php ┃ ┃ ┣ phpbb.php ┃ ┃ ┣ phpwind.php ┃ ┃ ┣ phpwind5.php ┃ ┃ ┗ vbb.php ┃ ┣ payment 的目錄 ┃ ┃ ┣ alipay.php 支付寶插件 ┃ ┃ ┣ balance.php 余額支付插件 ┃ ┃ ┣ bank.php 銀行匯款(轉(zhuǎn)帳)插件 ┃ ┃ ┣ cappay.php 首信易支付插件 ┃ ┃ ┣ chinabank.php 網(wǎng)銀在線插件 ┃ ┃ ┣ cncard.php 云網(wǎng)支付插件 ┃ ┃ ┣ cod.php 貨到付款插件 ┃ ┃ ┣ ctopay.php Ctopay 支付插件 ┃ ┃ ┣ express.php express支付系統(tǒng)插件 ┃ ┃ ┣ ips.php ips支付系統(tǒng)插件 ┃ ┃ ┣ kuaiqian.php 快錢插件 ┃ ┃ ┣ nps.php NPS支付插件 ┃ ┃ ┣ pay800.php 800pay 支付寶插件 ┃ ┃ ┣ paypal.php 貝寶插件 ┃ ┃ ┣ paypalcn.php 貝寶中國插件 ┃ ┃ ┣ post.php 郵局匯款插件 ┃ ┃ ┣ tenpay.php 財(cái)付通插件 ┃ ┃ ┣ udpay.php 網(wǎng)匯通插件 ┃ ┃ ┣ xpay.php 易付通插件 ┃ ┃ ┗ yeepay.php YeePay易寶插件 ┃ ┗ shipping 的目錄 ┃ ┣ cac.php 上門取貨插件 ┃ ┣ city_express.php 城際快遞插件 ┃ ┣ ems.php EMS插件 ┃ ┣ flat.php 郵政包裹插件 ┃ ┣ fpd.php 到付運(yùn)費(fèi)插件 ┃ ┣ post_express.php 郵政包裹插件 ┃ ┣ post_mail.php 郵局平郵插件 ┃ ┣ presswork.php 掛號印刷品插件 ┃ ┣ sf_express.php 順豐速運(yùn) 配送方式插件 ┃ ┣ sto_express.php 申通快遞 配送方式插件 ┃ ┣ yto.php 圓通速遞插件 ┃ ┗ zto.php 中通速遞插件 ┣ install 的目錄 安裝文件目錄 ┣ js 的目錄 ┃ ┣ auto_complete.js ┃ ┣ calendar.php ┃ ┣ common.js ┃ ┣ compare.js ┃ ┣ global.js ┃ ┣ lefttime.js ┃ ┣ myship.js ┃ ┣ region.js ┃ ┣ shopping_flow.js ┃ ┣ transport.js ┃ ┣ user.js ┃ ┣ utils.js ┃ ┗ calendar 的目錄 ┣ languages 的目錄 語言風(fēng)格文件 ┃ ┣ zh_cn 的目錄 ┃ ┃ ┣ ┃ ┃ ┣ admin 的目錄 ┃ ┃ ┣ convert 的目錄 ┃ ┃ ┣ cron 的目錄 ┃ ┃ ┣ payment 的目錄 ┃ ┃ ┗ shipping 的目錄 ┃ ┗ zh_tw 的目錄 ┃ ┣ admin 的目錄 ┃ ┣ convert 的目錄 ┃ ┣ cron 的目錄 ┃ ┣ payment 的目錄 ┃ ┗ shipping 的目錄 ┣ plugins 的目錄 ┣ templates 的目錄 ┃ ┣ backup 的目錄 ┃ ┃ ┗ ibrary 的目錄 ┃ ┣ caches 的目錄 ┃ ┗ compiled 的目錄 ┃ ┗ admin 的目錄 ┣ themes 的目錄 ┃ ┣ default 的目錄 ┃ ┃ ┣ images 的目錄 ┃ ┃ ┗ library 的目錄 ┃ ┗ sport 的目錄 ┣ wap 的目錄 ┃ ┣ article.php ┃ ┣ brands.php ┃ ┣ buy.php ┃ ┣ category.php ┃ ┣ comment.php ┃ ┣ goods.php ┃ ┣ goods_list.php ┃ ┣ index.php ┃ ┣ user.php ┃ ┣ includes 的目錄 ┃ ┃ ┣ init.php ┃ ┃ ┣ lib_main.php ┃ ┗ templates 的目錄 ┃ ┣ article.wml ┃ ┣ article_list.wml ┃ ┣ brands.wml ┃ ┣ buy.wml ┃ ┣ category.wml ┃ ┣ comment.wml ┃ ┣ goods.wml ┃ ┣ goods_img.wml ┃ ┣ goods_list.wml ┃ ┣ index.wml ┃ ┣ login.wml ┃ ┣ order_list.wml ┃ ┗ user.wml ┗ widget 的目錄 ┣ blog_sohu.php ┣ blog_sohu.xhtml ┗ images 的目錄 View CodeECShop的庫項(xiàng)目功能
認(rèn)識一下ECShop的庫項(xiàng)目功能。一、認(rèn)識ECShop模板管理。 1.進(jìn)入EC的后臺,進(jìn)入“模板管理”–>“設(shè)置模板”,如圖ecshop 增加“庫項(xiàng)目”并且添加到模板中-》非可編輯區(qū)改為可編輯區(qū) - pepsl - Pepsl的心情可以看到模板編輯頁面在此我可以編輯不用頁面的區(qū)塊(庫項(xiàng)目)是否顯示、顯示位置、甚至是顯示商品的數(shù)量,如圖 ecshop 增加“庫項(xiàng)目”并且添加到模板中-》非可編輯區(qū)改為可編輯區(qū) - pepsl - Pepsl的心情在此對模板進(jìn)行的修改都會顯示在頁面。(EC好強(qiáng)大呀~~^3^)二、認(rèn)識庫項(xiàng)目 1.一個庫項(xiàng)目眷漲個庫文件。 打開ECShop的裝置目錄,進(jìn)入 themes/default/library文件夾。你會看到許多以 “.lbi”(擴(kuò)展名)結(jié)尾的文件。如圖:ecshop 增加“庫項(xiàng)目”并且添加到模板中-》非可編輯區(qū)改為可編輯區(qū) - pepsl - Pepsl的心情ad_position?廣告位嗎? category_tree?分類樹嗎? recommend_new?新品推薦嗎?對了,這里放的眷漲頁面上一塊一塊可以編輯的庫項(xiàng)目的文件了。沒錯,如果你想加一個自己的顯示庫項(xiàng)目,就在此添加。其實(shí)ECShop提供了編輯庫文件編輯的地方,就在管理后臺的“模板管理”–>“庫文件管理”。那么這些庫項(xiàng)目是如何顯示在頁面上的呢?讓我們以“新品推薦”為例。往下看。2.庫項(xiàng)目的頁面添加。進(jìn)入themes/default文件夾,用編輯器(文本打開也可以)打開index.dwt文件。ctrl + f ,查找recommend_new會找到一行代碼:對,眷漲這個“東西”把recommend_new.lbi里的內(nèi)容加宰出來并成為頁面的一部分的。但是這只是他的開始部分,完整的應(yīng)該是:有開始,有結(jié)束。 而這個: 和這個 將頁面劃分為幾個不同的大區(qū)域,這樣后臺就可以把那些庫項(xiàng)目在這些區(qū)域里排序了。所以如果你僅僅想添加一塊自己的定義的庫文件顯示,那么僅需要在library里添加了自己的lbi文件后,用加到頁面合適位置就可以了。如果想以后在后臺的“模板管理”里編輯它,那還需要做下面的工作。 三、為后臺添加可配置(設(shè)置)的庫項(xiàng)目1.在根目錄/themes/default/library 中添加一個”test.lbi” 空文件。然后開打 根目錄/languages/zh_cn/admin/template.php(注意大宇用的語言包是簡體中文,所以是zh_cn),找到 $_LANG['template_libs'],在此上面添加一行“$_LANG['template_libs']['test'] = ‘test測試’;”。好了,現(xiàn)在你可以打開你的管理后臺,進(jìn)入“模板管理”–>”庫文件管理” 然后點(diǎn)開庫文件列表的下拉菜單找找看,是不是有一個 “test.lbi – test測試”。哈哈,我們給它加點(diǎn)內(nèi)容吧:我眷漲測試一下下ps:第一行是設(shè)置編碼用的。不明白沒關(guān)系。繼續(xù)…2.打開 根目錄/admin/includes/lib_template.php。大致看一下這個文件,你會發(fā)現(xiàn),原來后臺的“設(shè)置模板”的初始配置都是在這里聲明的。在這里可以編輯 “可以設(shè)置內(nèi)容的模板”,還可以編輯“每個模板允卷設(shè)置的庫項(xiàng)目”。也眷漲說,這里聲明了哪個模板里可以設(shè)置哪些庫項(xiàng)目。相關(guān)數(shù)組都有注釋,相當(dāng)方便。下面我們要把自己定義的“test.lbi”添加到到index.dwt里。找到 “’index’ => array(” 這一行,一般在文件的120行。這里是個數(shù)組。往數(shù)組里添加一行:“’/library/test.lbi’ => 4”,如圖:ecshop 增加“庫項(xiàng)目”并且添加到模板中-》非可編輯區(qū)改為可編輯區(qū) - pepsl - Pepsl的心情我們給它設(shè)置的默認(rèn)顯示數(shù)量為4。好了,現(xiàn)在點(diǎn)開 “模板管理” –> “設(shè)置模板”,可以在首頁的編輯模板里看到我們的庫項(xiàng)目了。如圖ecshop 增加“庫項(xiàng)目”并且添加到模板中-》非可編輯區(qū)改為可編輯區(qū) - pepsl - Pepsl的心情但是,它的“顯示”框式灰色的,不能選中,而且“區(qū)域”里也不能設(shè)置顯示區(qū)域。該怎么辦呢?這么辦:打開 根目錄/themes/default/libs.xml查找“”,在region標(biāo)簽里添加一行“test”,如圖:ecshop 增加“庫項(xiàng)目”并且添加到模板中-》非可編輯區(qū)改為可編輯區(qū) - pepsl - Pepsl的心情保存后,再次進(jìn)入“模板管理” –> “設(shè)置模板”,看看我們的test庫項(xiàng)目是不是可以編輯了。呵呵編輯好看看效果吧~~~如圖ecshop 增加“庫項(xiàng)目”并且添加到模板中-》非可編輯區(qū)改為可編輯區(qū) - pepsl - Pepsl的心情 View Code?
ecshop 實(shí)現(xiàn)全站調(diào)用購物車功能
此功能是根據(jù)網(wǎng)友提供的方法,然后自己實(shí)際操作后發(fā)現(xiàn)了一些問題,更改了部分代碼,完美了一些,下面的代碼都貼出來了 今天給一朋友解決一個問題,需要在商城每個頁面中的購物車處都顯示購物車詳情!其實(shí),這個功能很簡單,現(xiàn)在很多商城都在用(PS:雖然我的成都零食網(wǎng)現(xiàn)在還沒有使用這個功能,并且以后暫時也沒有打算使用這個功能,今天還是把這個寫出來分享給大家。)。要實(shí)現(xiàn)并不是難事,就是在訂單模板中加幾個關(guān)于訂單詳情的顯示嘛。如果需要在這里面加入刪除或更新也只需要結(jié)合JS進(jìn)行調(diào)用就行了。現(xiàn)在將我實(shí)現(xiàn)這個功能的方法公布如下: 可以從圖中看出,我主要是添加了購物車詳單和刪除操作。其它都是一樣的。以下是具體實(shí)現(xiàn)方法和簡單原理: 要實(shí)現(xiàn),首先要知道這一塊是怎么出來的,做過ECSHOP二次開發(fā)的朋友對這個肯定不陌生了,模板文件在模板文件夾中的庫文件夾的cart_info.lbi(找不到的同志可以搜索一下),原來這個模板里的東西很簡單,就是添顯示了“購物車?yán)镉蠿個商品,去結(jié)算”這類的信息。今天,我們要將其全部顯示。 其次,我們要顯示詳情,肯定需要將這個詳情使用彈出的方式來顯示,不能直接顯示,直接顯示誰都會,那樣有打開訂單結(jié)算頁有什么區(qū)別呢?占有太多地方了,這里就要用到css和js的一些基礎(chǔ)知識了。 我的代碼和注釋如下: <!--{if $goods11}--><ul id="mcart-mz"> {foreach from=$goods11 item=goods11 name=goods11} <li><div class="p-img fl"><a href="{$goods11.url}" target="_blank"><img src="{$goods11.goods_thumb}" alt="" height="50" width="50"></a></div> <div class="p-name fl"><a href="{$goods11.url}" target="_blank">{$goods11.short_name}</a></div> <div class="p-detail fr ar"> <span class="p-price"><strong>{$goods11.goods_price}</strong>×{$goods11.goods_number}</span><br> <span class="hl-green">小計(jì):{$goods11.subtotal}</span><br> <a class="del" href="javascript:" onClick="deleteCartGoods({$goods11.rec_id})">[刪除]</a> </div> </li><hr class="hr1"/><!--{/foreach}--></ul><div class="smb ar">共<b>{$goods_number}</b>件商品 共計(jì)<strong>¥:{$order_amount}</strong><br><a href="flow.php"> <img src="themes/chengrenyongpin/images/car1_14.jpg" width="120" alt="去結(jié)算"> </a></div> <!--{else}-->您的購物車暫無商品<!--{/if}--> 以上代碼僅供參考。如需要使用,需要結(jié)合以下CSS代碼,請同步復(fù)制到相應(yīng)目錄文件或嵌入相關(guān)文件中 .car_ul {background: none repeat scroll 0 0 #FFFFFF;border: 1px solid #F5859D;display: none;float: left;margin-top: 4px;padding: 5px;position: absolute;right: -1px;top: 20px;width: 270px; } .car_ul li {padding: 3px 0; } .car_ul li {line-height: 22px;width: 270px; } .car_ul .f_l {float: left;width: 177px; } .car_ul .f_r {float: right;padding-top: 2px;text-align: right;width: 90px; } car_ul .name {float: left;height: 46px;line-height: 23px;overflow: hidden;padding: 2px 0 0 5px;width: 117px; } .car_ul .f_r b {color: #FF0000; } .car_ul .f_r .del {color: #999999; } 復(fù)制代碼當(dāng)然。這里默認(rèn)這個詳單是display:none的。需要您通過js進(jìn)行調(diào)用將期display:block。 接下來,就是要改程序了: 打開/include/lib_insert.php找到function insert_cart_info()。將其改成以下內(nèi)容 function insert_cart_info1() {$sql = 'SELECT c.*,g.goods_name,g.goods_thumb,g.goods_id,c.goods_number,c.goods_price' .' FROM ' . $GLOBALS['ecs']->table('cart') ." AS c "." LEFT JOIN ".$GLOBALS['ecs']->table('goods')." AS g ON g.goods_id=c.goods_id "." WHERE session_id = '" . SESS_ID . "' AND rec_type = '" . CART_GENERAL_GOODS . "'";$row = $GLOBALS['db']->GetAll($sql);$arr = array();foreach($row AS $k=>$v){$arr[$k]['goods_thumb'] =get_image_path($v['goods_id'], $v['goods_thumb'], true);$arr[$k]['short_name'] = $GLOBALS['_CFG']['goods_name_length'] > 0 ?sub_str($v['goods_name'], $GLOBALS['_CFG']['goods_name_length']) : $v['goods_name'];$arr[$k]['url'] = build_uri('goods', array('gid' => $v['goods_id']), $v['goods_name']);$arr[$k]['goods_number'] = $v['goods_number'];$arr[$k]['goods_name'] = $v['goods_name'];$arr[$k]['goods_price'] = price_format($v['goods_price']);$arr[$k]['rec_id'] = $v['rec_id'];}$sql = 'SELECT SUM(goods_number) AS number, SUM(goods_price * goods_number) AS amount' .' FROM ' . $GLOBALS['ecs']->table('cart') ." WHERE session_id = '" . SESS_ID . "' AND rec_type = '" . CART_GENERAL_GOODS . "'";$row = $GLOBALS['db']->GetRow($sql);if ($row){$number = intval($row['number']);$amount = floatval($row['amount']);}else{$number = 0;$amount = 0;}$GLOBALS['smarty']->assign('str',sprintf($GLOBALS['_LANG']['cart_info'], $number, price_format($amount, false)));$GLOBALS['smarty']->assign('goods11',$arr);$GLOBALS['smarty']->assign('goods_number',$number);$GLOBALS['smarty']->assign('order_amount',$amount);$output = $GLOBALS['smarty']->fetch('library/car_info.lbi');return $output; }這樣,就大功告成了!!購物車詳細(xì)內(nèi)容會顯示了。但關(guān)鍵的是購物車中的刪除。這個就要我們重新寫入相應(yīng)程序了才行。 我們在網(wǎng)站根目錄建一個文件為delete_cart_goods.php。它的作用,來專門負(fù)責(zé)購物車進(jìn)行更新的那么一個程序(其實(shí)只用于刪除購物車的訂單) <?php define('IN_ECS', true); require(dirname(__FILE__) . '/includes/init.php'); include_once('includes/cls_json.php'); $result = array('error' => 0, 'message' => '', 'content' => '', 'goods_id' => ''); $json = new JSON; if($_POST['id']) { $sql = 'DELETE FROM '.$GLOBALS['ecs']->table('cart')." WHERE rec_id=".$_POST['id']; $GLOBALS['db']->query($sql); } $sql = 'SELECT c.*,g.goods_name,g.goods_thumb,g.goods_id,c.goods_number,c.goods_price' .' FROM ' . $GLOBALS['ecs']->table('cart') ." AS c "." LEFT JOIN ".$GLOBALS['ecs']->table('goods')." AS g ON g.goods_id=c.goods_id "." WHERE session_id = '" . SESS_ID . "' AND rec_type = '" . CART_GENERAL_GOODS . "'"; $row = $GLOBALS['db']->GetAll($sql); $arr = array(); foreach($row AS $k=>$v) {$arr[$k]['goods_thumb'] =get_image_path($v['goods_id'], $v['goods_thumb'], true);$arr[$k]['short_name'] = $GLOBALS['_CFG']['goods_name_length'] > 0 ?sub_str($v['goods_name'], $GLOBALS['_CFG']['goods_name_length']) : $v['goods_name'];$arr[$k]['url'] = build_uri('goods', array('gid' => $v['goods_id']), $v['goods_name']);$arr[$k]['goods_number'] = $v['goods_number'];$arr[$k]['goods_name'] = $v['goods_name'];$arr[$k]['goods_price'] = price_format($v['goods_price']);$arr[$k]['rec_id'] = $v['rec_id']; } $sql = 'SELECT SUM(goods_number) AS number, SUM(goods_price * goods_number) AS amount' .' FROM ' . $GLOBALS['ecs']->table('cart') ." WHERE session_id = '" . SESS_ID . "' AND rec_type = '" . CART_GENERAL_GOODS . "'"; $row = $GLOBALS['db']->GetRow($sql); if ($row) {$number = intval($row['number']);$amount = floatval($row['amount']); } else {$number = 0;$amount = 0; } $GLOBALS['smarty']->assign('str',sprintf($GLOBALS['_LANG']['cart_info'], $number, price_format($amount, false))); $GLOBALS['smarty']->assign('goods11',$arr); $GLOBALS['smarty']->assign('goods_number',$number); $GLOBALS['smarty']->assign('order_amount',$amount); $result['content'] = $GLOBALS['smarty']->fetch('library/car_info.lbi'); die($json->encode($result)); ?>代碼如上了,但細(xì)心的人看,這其實(shí)和lib_insert中的insert_cart_info函數(shù)是一樣的,只是最后一行不一樣,一個是輸出到j(luò)son數(shù)據(jù)組,一個直接返回。 這樣有了這些以后就只差模板中的JS調(diào)用了。我們給刪除鏈接添加了代碼<a class="del" href="javascript:">[刪除]</a> 插入deleteCartGoods這個js就行了。在這里提示一下,使用Jquery和使用EC自帶的JS寫法是有一定區(qū)別的,JQuery 我在這里就不寫了,因?yàn)槲一鸩窬W(wǎng)的確沒有使用,我也就懶得寫了。 <script type="text/javascript"> function deleteCartGoods(rec_id) { Ajax.call('delete_cart_goods.php', 'id='+rec_id, deleteCartGoodsResp**e, 'POST', 'JSON'); } /** * 接收刪除后返回的信息 */ function deleteCartGoodsResp**e(res) {if (res.error){alert(res.err_msg);}else{document.getElementById('ECS_CARTINFO').innerHTML = res.content;//這里的ID需要改一下 } } </script> 復(fù)制代碼原理很簡單,先發(fā)送刪除指令,然后將返回的json數(shù)據(jù)重新加載到ECS_CARTINFO中的代碼中就行了。到此,大功告成!! View CodeECSHOP換KindEditor編輯器
ECSHOP一直用的FCK,這個不解釋,太多杯具太多糾結(jié)。--------------------- KindEdito主要特點(diǎn) 快速:體積小,加載速度快 開源:開放源代碼,高水平,高品質(zhì) 底層:內(nèi)置自定義 DOM 類庫,精確操作 DOM 擴(kuò)展:基于插件的設(shè)計(jì),所有功能都是插件,可根據(jù)需求增減功能 風(fēng)格:修改編輯器風(fēng)格非常容易,只需修改一個 CSS 文件 兼容:支持大部分主流瀏覽器,比如 IE、Firefox、Safari、Chrome、Opera --------------------- 官方下載最新版,解壓直接扔在根目錄算了,現(xiàn)在拿編輯產(chǎn)品信息開刀,模板頁面?這個不用說了吧(admin/templates/goods_info.html). 1.在head部分添加:<script charset=”utf-8″ src=”../kindeditor/kindeditor.js”></script> <script> KE.show({ id : ‘editor_id’, allowFileManager : true}); </script>2.修改產(chǎn)品描述所調(diào)用的FCK編輯器 {$FCKeditor} 為 <textarea id=”editor_id” name=”goods_desc” style=”width:90%;height:300px;”> {$goods.goods_desc} </textarea>OK,至此結(jié)束,看看效果吧! View CodeECSHOP所有頁面分類樹顯示全部的方法,所有頁面分類樹顯示全部的方法
ECSHOP所有頁面分類樹顯示全部的方法,所有頁面分類樹顯示全部的方法修改方法如下:打開includes/lib_goods.php,找到get_categories_tree()函數(shù)部分,找到這一段: function get_categories_tree($cat_id = 0) {if ($cat_id > 0){$sql = 'SELECT parent_id FROM ' . $GLOBALS['ecs']->table('category') . " WHERE cat_id = '$cat_id'";$parent_id = $GLOBALS['db']->getOne($sql);}else{$parent_id = 0;}修改成:function get_categories_tree($cat_id = 0) {if ($cat_id > 0){$sql = 'SELECT parent_id FROM ' . $GLOBALS['ecs']->table('category') . " WHERE cat_id = '$cat_id'";} View CodeEcshop 團(tuán)購列表增加市場價(jià)、團(tuán)購價(jià)、為您節(jié)省、倒計(jì)時等!
曾經(jīng)求助過此方法,結(jié)果運(yùn)氣很好,有一位高手加我無償為我解決了此問題,非常感謝!經(jīng)過我倆幾天的調(diào)試,目前只有1個小問題,其它均完美實(shí)現(xiàn)。我整理了詳細(xì)的教程,經(jīng)過高手的同意,現(xiàn)在分享給大家,大家都裝上后看一下是否都有我遇到的問題。先貼問題,再貼教程。問題:在我本地和我的服務(wù)器上,都出現(xiàn)了團(tuán)購價(jià)調(diào)用不出來的現(xiàn)象。而在那位高手兄弟的機(jī)子上卻沒有這個問題,這個問題我們搞了好幾天都沒解決。甚至他把他的網(wǎng)站程序備份后傳給我安裝,到我本地還是會出現(xiàn)此問題,奇了怪了。我對這個問題的看法是數(shù)據(jù)寫不到數(shù)據(jù)庫,可能是我倆的環(huán)境版本的問題。目前我的解決方法是去數(shù)據(jù)庫字段里修改,沒辦法,手工修改。看,團(tuán)購價(jià)格應(yīng)該是50元,在我這就是出不來,一直顯示的是市場價(jià)格。教程,共5步1,網(wǎng)站后臺-數(shù)據(jù)庫管理-SQL查詢-執(zhí)行sql語句: ALTER TABLE `ecs_goods_activity` ADD `tuan_price` DECIMAL( 10, 2 ) UNSIGNED NOT NULL DEFAULT '0.00'2,admin/templates/group_buy_info.htm 找到“<a href="javascript:;"><strong>[+]</strong></a>”注釋掉。 找到<a href="javascript:;"><strong>[-]</strong></a> </td> </tr>{/if}{/foreach} 在其下面添加 <tr><td class="label">團(tuán)購價(jià)格:</td><td><input type="text" name="market_price" value="{$group_buy.market_price}" size="30" /> 該價(jià)格與價(jià)格階梯價(jià)格相同,2個都不能少!</td></tr>3,admin/group_buy.php 找到'ext_info' => serialize(array( 在其上面一行添加 'tuan_price' => $tuan_price,4,themes/default/group_buy_list.dwt大約61行 添加市場價(jià)格:{$group_buy.shop_price1}<br />團(tuán)購價(jià)格:{$group_buy.tuan_price1}<br />為您節(jié)省:{$group_buy.js}<br />折扣:{$group_buy.zk}<br />倒計(jì)時:<font id="timeszc{$group_buy.i}" color="#717171" size="2"></font><br /> 例:我的是在“{$lang.gb_price_ladder}<br />”上一行添加的搜索</body>,在其上面一行添加: <SCRIPT LANGUAGE="JavaScript"> <!-- {foreach from=$gb_list item=val} --> function _fresh{$val.i}() { var endtime{$val.i}=new Date("{$val.end_timeno}"); var nowtime = new Date(); var leftsecond=parseInt((endtime{$val.i}.getTime()-nowtime.getTime())/1000); __d=parseInt(leftsecond/3600/24); __h=parseInt((leftsecond/3600)%24); __m=parseInt((leftsecond/60)%60); __s=parseInt(leftsecond%60); var c=new Date(); var q=((c.getMilliseconds())%10); if(leftsecond<=0){ document.getElementById("timeszc{$val.i}").innerHTML="促銷已結(jié)束"; clearInterval(sh{$val.i}); } else { if (__h<10) {__h="0"+__h} //分?jǐn)?shù)取兩位,不足補(bǔ)0if (__m<10) {__m="0"+__m} //秒數(shù)取兩位,不足補(bǔ)0if (__s<10) {__s="0"+__s} document.getElementById("timeszc{$val.i}").innerHTML=__d+" 天"+__h+" 時"+__m+" 分"+__s+" 秒"; } } _fresh{$val.i}() var sh{$val.i}; sh{$val.i}=setInterval(_fresh{$val.i},100); <!--{/foreach}--> </SCRIPT>5,根目錄/group_buy.php 找到function group_buy_list($size, $page) 下面全部替換 {/* 取得團(tuán)購活動 */$gb_list = array();$now = gmtime();$sql = "SELECT b.*, IFNULL(g.goods_thumb, '') AS goods_thumb, b.tuan_price, b.act_id AS group_buy_id, g.shop_price,"."b.start_time AS start_date, b.end_time AS end_date " ."FROM " . $GLOBALS['ecs']->table('goods_activity') . " AS b " ."LEFT JOIN " . $GLOBALS['ecs']->table('goods') . " AS g ON b.goods_id = g.goods_id " ."WHERE b.act_type = '" . GAT_GROUP_BUY . "' " ."AND b.start_time <= '$now' AND b.is_finished < 3 ORDER BY b.act_id DESC";$res = $GLOBALS['db']->selectLimit($sql, $size, ($page - 1) * $size);$i = 1;while ($group_buy = $GLOBALS['db']->fetchRow($res)){$ext_info = unserialize($group_buy['ext_info']);$group_buy = array_merge($group_buy, $ext_info);/* 格式化時間 */$group_buy['i'] = $i ++;$group_buy['formated_start_date'] = local_date($GLOBALS['_CFG']['time_format'], $group_buy['start_date']);$group_buy['formated_end_date'] = local_date($GLOBALS['_CFG']['time_format'], $group_buy['end_date']);$group_buy['end_timeno'] = local_date('Y/m/d H:i:s', $group_buy['end_date']);/* 格式化保證金 */$group_buy['formated_deposit'] = price_format($group_buy['deposit'], false);$group_buy['shop_price1'] = price_format($group_buy['shop_price'], false);if ( $group_buy['tuan_price'] == 0){$group_buy['tuan_price1'] = $group_buy['shop_price1'];$group_buy['js'] = 0;$group_buy['zk'] = 1;}else{$group_buy['tuan_price1'] = price_format($group_buy['tuan_price'], false);$group_buy['tuan_price'] = $group_buy['tuan_price'];$group_buy['js'] = $group_buy['shop_price']-$group_buy['tuan_price'];$group_buy['zk'] = round(($group_buy['tuan_price']/$group_buy['shop_price'])*10 ,2);} /* 處理價(jià)格階梯 */$price_ladder = $group_buy['price_ladder'];if (!is_array($price_ladder) || empty($price_ladder)){$price_ladder = array(array('amount' => 0, 'price' => 0));}else{foreach ($price_ladder as $key => $amount_price){$price_ladder[$key]['formated_price'] = price_format($amount_price['price']);}}$group_buy['price_ladder'] = $price_ladder;/* 處理圖片 */if (empty($group_buy['goods_thumb'])){$group_buy['goods_thumb'] = get_image_path($group_buy['goods_id'], $group_buy['goods_thumb'], true);}/* 處理鏈接 */$group_buy['url'] = build_uri('group_buy', array('gbid'=>$group_buy['group_buy_id']));/* 加入數(shù)組 */$gb_list[] = $group_buy;}return $gb_list; } ?> View CodeEcshop后臺fckeditor上傳圖片路徑修改和重命名上傳圖片
Ecshop上傳的圖片都是放在images/upload/Image/下面的,圖片多了就不爽了哦。Ecshop后臺fckeditor上傳圖片路徑修改和重命名上傳圖片看了網(wǎng)上很多修改的地方,自己也測試了好幾次,現(xiàn)在終于可以了。Fckeditor上傳圖片路徑修改后的路徑是: 已年月日時分秒來區(qū)分images/upload/Image/201303/05143045-6546.jpg images/upload/Image/年月/日時分秒-四位隨機(jī)數(shù).上傳圖片后綴名我只修改了Image的路徑,File、Flash、Media可自己參考修改。一、修改Ecshop fckeditor 圖片上傳路徑只有一點(diǎn)改動: 找到includes/fckeditor/editor/filemanager/connectors/php/config.php$Config['FileTypesPath']['Image'] = $Config['UserFilesPath'] . 'Image/' ; $Config['FileTypesAbsolutePath']['Image']= ($Config['UserFilesAbsolutePath'] == '') ? '' : $Config['UserFilesAbsolutePath'].'Image/' ; 改為: $Config['FileTypesPath']['Image'] = $Config['UserFilesPath'] . 'Image/'. date('Ym',time()+3600*8).'/' ; $Config['FileTypesAbsolutePath']['Image']= ($Config['UserFilesAbsolutePath'] == '') ? '' : $Config['UserFilesAbsolutePath'].'Image/'. date('Ym',time()+3600*8).'/' ;就是在后面加了date函數(shù),因?yàn)槲疫@里用的UTC時區(qū),所以加了8小時。二、修改Ecshop fckeditor 上傳圖片的名字,重命名上傳的圖片的名字: 找到includes/fckeditor/editor/filemanager/connectors/php/io.php 找到SanitizeFileName函數(shù), //$sNewFileName = preg_replace( '/\\\\|\\/|\\||\\:|\\?|\\*|"|<|>|[[:cntrl:]]/', '_', $sNewFileName ) ; 把這一行注釋掉,替換為:$sExtension = substr( $sNewFileName, (strrpos($sNewFileName,'.') + 1 ) ) ; //獲取擴(kuò)展名 $sNewFileName = date('dHis-',time()+3600*8).rand(0,9999).'.'.$sExtension;替換之后的SanitizeFileName函數(shù)如下: function SanitizeFileName( $sNewFileName ) {global $Config ;$sNewFileName = stripslashes( $sNewFileName ) ;// Replace dots in the name with underscores (only one dot can be there... security issue).if ( $Config['ForceSingleExtension'] )$sNewFileName = preg_replace( '/\\.(?![^.]*$)/', '_', $sNewFileName ) ;// Remove \ / | : ? * " < >//$sNewFileName = preg_replace( '/\\\\|\\/|\\||\\:|\\?|\\*|"|<|>|[[:cntrl:]]/', '_', $sNewFileName ) ;$sExtension = substr( $sNewFileName, (strrpos($sNewFileName,'.') + 1 ) ) ;$sNewFileName = date('dHis-',time()+3600*8).rand(0,9999).'.'.$sExtension; //20130305return $sNewFileName ; } View Codeecshop促銷時間倒計(jì)時效果
ecshop促銷時間倒計(jì)時效果的實(shí)現(xiàn)如下: 1、首先修改程序部分 打開includes/lib_goods.php 找到get_promote_goods()函數(shù)部分 在 $goods[$idx]['url'] = build_uri('goods', array('gid' => $row['goods_id']), $row['goods_name']); 下面增加代碼$time = gmtime();if ($time >= $row['promote_start_date'] && $time <= $row['promote_end_date']){$goods[$idx]['gmt_end_time'] = local_date('M d, Y H:i:s',$row['promote_end_date']);}else{$goods[$idx]['gmt_end_time'] = 0;} 2、 然后將 library/recommend_promotion.lbi 全部替換為下面代碼: <meta http-equiv="Content-Type" content="text/html; charset=gbk"> <!-- {if $promotion_goods} --> <script > var Tday = new Array(); var daysms = 24 * 60 * 60 * 1000 var hoursms = 60 * 60 * 1000 var Secondms = 60 * 1000 var microsecond = 1000 var DifferHour = -1 var DifferMinute = -1 var DifferSecond = -1 function clock(key) {var time = new Date()var hour = time.getHours()var minute = time.getMinutes()var second = time.getSeconds()var timevalue = ""+((hour > 12) ? hour-12:hour)timevalue +=((minute < 10) ? ":0":":")+minutetimevalue +=((second < 10) ? ":0":":")+secondtimevalue +=((hour >12 ) ? " PM":" AM")var convertHour = DifferHourvar convertMinute = DifferMinutevar convertSecond = DifferSecondvar Diffms = Tday[key].getTime() - time.getTime()DifferHour = Math.floor(Diffms / daysms)Diffms -= DifferHour * daysmsDifferMinute = Math.floor(Diffms / hoursms)Diffms -= DifferMinute * hoursmsDifferSecond = Math.floor(Diffms / Secondms)Diffms -= DifferSecond * Secondmsvar dSecs = Math.floor(Diffms / microsecond)if(convertHour != DifferHour) a="<font color=red>"+DifferHour+"</font>天";if(convertMinute != DifferMinute) b="<font color=red>"+DifferMinute+"</font>時";if(convertSecond != DifferSecond) c="<font color=red>"+DifferSecond+"</font>分"d="<font color=red>"+dSecs+"</font>秒"if (DifferHour>0) {a=a}else {a=''}document.getElementByIdx_xx_x("leftTime"+key).innerHTML = a + b + c + d; //顯示倒計(jì)時信息 } </script> <div id="sales" class="f_l clearfix"><h1><a href="../search.php?intro=promotion"><img src="images/more.gif" /></a></h1><div class="clearfix goodBox"><!--{foreach from=$promotion_goods key=key item=goods name="promotion_foreach"}-->{if $smarty.foreach.promotion_foreach.index <= 3}<div class="goodList"><a href="{$goods.url}"><img src="{$goods.thumb}" border="0" alt="{$goods.name|escape:html}"/></a><br /><p><a href="{$goods.url}" title="{$goods.name|escape:html}">{$goods.short_name|escape:html}</a></p>{$lang.promote_price}<font class="f1">{$goods.promote_price}</font><br><font class="f4" id="leftTime{$key}">{$lang.please_waiting}</font></div>{/if} <script> Tday[{$key}] = new Date("{$goods.gmt_end_time}"); window.setInterval(function() {clock({$key});}, 1000); </script><!--{/foreach}--></div></div><!-- {/if} --> View Codeecshop開發(fā)之如何實(shí)現(xiàn)團(tuán)購網(wǎng)的倒計(jì)時功能?
首先,你需要在購買的時候,提示輸入框,告訴用戶,你必須購買多少.其次,購物車中需要修改購買數(shù)量的時候,你也需要控制。1:詳細(xì)頁面中控制.在flow.php里面addto_cart中,加入以下代碼,控制購買.$gc = $db -> getOne("select gc from ".$ecs->table('goods')." where goods_id = ".$goods ->goods_id);if ($goods->number%$gc) {$result['error'] = 1;$result['message'] = "購買數(shù)量必須輸入{$gc}的倍數(shù)";}2:在common.js中增加函數(shù)function addToCart1(goodsId, parentId) {var goods = new Object();var spec_arr = new Array();var fittings_arr = new Array();var number = 1;var t = "number"+goodsId;number = document.getElementByIdx_x("number"+goodsId).value;goods.spec = spec_arr;goods.goods_id = goodsId;goods.number = number;goods.parent = (typeof(parentId) == "undefined") ? 0 : parseInt(parentId);Ajax.call('flow.php?step=add_to_cart', 'goods=' + goods.toJSONString(), addToCartResponse, 'POST', 'JSON'); } 2:控制列表頁面的購買. 在列表頁面中,增加一個框. <form action="javascript:addToCart1({$goods.goods_id})" method="post" name="ECS_FORMBUY{$goods.goods_id}" id="ECS_FORMBUY{$goods.goods_id}" >購買數(shù)量:<input name="number{$goods.goods_id}" type="text" id="number{$goods.goods_id}" value="1" size="4" class="formBorder"/><br /><a href="javascript:addToCart1({$goods.goods_id})"><img src="images/but_buy.jpg"></a><a href="javascript:;" id="compareLink"quotes"}','{$goods.type}')"><img src="images/but_comp.jpg"></a></form> 調(diào)用addToCart1函數(shù). 3:推薦頁面在common.js中增加函數(shù)addToCart2 function addToCart2(goodsId, parentId) {var goods = new Object();var spec_arr = new Array();var fittings_arr = new Array();var number = 1;var t = "number"+goodsId;number = document.getElementByIdx_x("number_"+goodsId).value;goods.spec = spec_arr;goods.goods_id = goodsId;goods.number = number;goods.parent = (typeof(parentId) == "undefined") ? 0 : parseInt(parentId);Ajax.call('flow.php?step=add_to_cart', 'goods=' + goods.toJSONString(), addToCartResponse, 'POST', 'JSON'); } 在recommend_new.lbi,recommend_best.lbi等頁面中,需要增加輸入框.調(diào)用次函數(shù). <form action="javascript:addToCart2({$goods.id})" method="post" name="ECS_FORMBUY_{$goods.id}" id="ECS_FORMBUY_{$goods.id}" >購買數(shù)量:<input name="number_{$goods.id}" type="text" id="number_{$goods.id}" value="1" size="4" class="formBorder"/><br /><a href="javascript:addToCart2({$goods.id})"><img src="images/but_buy.jpg"></a></form> 最后完成了購買數(shù)量的控制。 View Codeecshop首頁促銷商品倒計(jì)時效果
ecshop促銷時間倒計(jì)時1、首先修改程序部分 打開includes/lib_goods.php 找到get_promote_goods()函數(shù)部分 在 $goods[$idx]['url'] = build_uri('goods', array('gid' => $row['goods_id']), $row['goods_name']);下面增加代碼$time = gmtime();if ($time >= $row['promote_start_date'] && $time <= $row['promote_end_date']){$goods[$idx]['gmt_end_time'] = local_date('M d, Y H:i:s',$row['promote_end_date']);}else{$goods[$idx]['gmt_end_time'] = 0;}2、 然后將 library/recommend_promotion.lbi 全部替換為下面代碼:<meta http-equiv="Content-Type" content="text/html; charset=gbk"> <!-- {if $promotion_goods} --> <script > var Tday = new Array(); var daysms = 24 * 60 * 60 * 1000 var hoursms = 60 * 60 * 1000 var Secondms = 60 * 1000 var microsecond = 1000 var DifferHour = -1 var DifferMinute = -1 var DifferSecond = -1 function clock(key) {var time = new Date()var hour = time.getHours()var minute = time.getMinutes()var second = time.getSeconds()var timevalue = ""+((hour > 12) ? hour-12:hour)timevalue +=((minute < 10) ? ":0":":")+minutetimevalue +=((second < 10) ? ":0":":")+secondtimevalue +=((hour >12 ) ? " PM":" AM")var convertHour = DifferHourvar convertMinute = DifferMinutevar convertSecond = DifferSecondvar Diffms = Tday[key].getTime() - time.getTime()DifferHour = Math.floor(Diffms / daysms)Diffms -= DifferHour * daysmsDifferMinute = Math.floor(Diffms / hoursms)Diffms -= DifferMinute * hoursmsDifferSecond = Math.floor(Diffms / Secondms)Diffms -= DifferSecond * Secondmsvar dSecs = Math.floor(Diffms / microsecond)if(convertHour != DifferHour) a="<font color=red>"+DifferHour+"</font>天";if(convertMinute != DifferMinute) b="<font color=red>"+DifferMinute+"</font>時";if(convertSecond != DifferSecond) c="<font color=red>"+DifferSecond+"</font>分"d="<font color=red>"+dSecs+"</font>秒"if (DifferHour>0) {a=a}else {a=''}document.getElementById("leftTime"+key).innerHTML = a + b + c + d; //顯示倒計(jì)時信息 } </script> <div id="sales" class="f_l clearfix"><h1><a href="../search.php?intro=promotion"><img src="images/more.gif" /></a></h1><div class="clearfix goodBox"><!--{foreach from=$promotion_goods key=key item=goods name="promotion_foreach"}--><div class="goodList"><a href="{$goods.url}"><img src="{$goods.thumb}" border="0" alt="{$goods.name|escape:html}"/></a><br /><p><a href="{$goods.url}" title="{$goods.name|escape:html}">{$goods.short_name|escape:html}</a></p>{$lang.promote_price}<font class="f1">{$goods.promote_price}</font><br><font class="f4" id="leftTime{$key}">{$lang.please_waiting}</font></div> <script> Tday[{$key}] = new Date("{$goods.gmt_end_time}"); window.setInterval(function() {clock({$key});}, 1000); </script><!--{/foreach}--></div></div><!-- {/if} --> View Codeecshop首頁特價(jià)、團(tuán)購商品顯示倒計(jì)時??
雖然這在百度已經(jīng)有很多了吧,可我還是花了很長時間才給弄出來。 1、打開includes/lib_goods.php 找到get_promote_goods()函數(shù)部分 在 $goods[$idx]['url'] = build_uri('goods', array('gid' => $row['goods_id']), $row['goods_name']); 下面增加代碼 /* 促銷時間倒計(jì)時 */ $time = gmtime(); if ($time >= $row['promote_start_date'] && $time <= $row['promote_end_date']) {$goods[$idx]['gmt_end_time'] = local_date('M d, Y H:i:s',$row['promote_end_date']);}else{$goods[$idx]['gmt_end_time'] = 0;}2、然后將 library/recommend_promotion.lbi 全部替換為下面代碼:<meta http-equiv="Content-Type" content="text/html; charset=gbk"> <!-- {if $promotion_goods} --> <script > var Tday = new Array(); var daysms = 24 * 60 * 60 * 1000 var hoursms = 60 * 60 * 1000 var Secondms = 60 * 1000 var microsecond = 1000 var DifferHour = -1 var DifferMinute = -1 var DifferSecond = -1 function clock(key) {var time = new Date() var hour = time.getHours()var minute = time.getMinutes() var second = time.getSeconds() var timevalue = ""+((hour > 12) ? hour-12:hour) timevalue +=((minute < 10) ? ":0":":")+minute timevalue +=((second < 10) ? ":0":":")+second timevalue +=((hour >12 ) ? " PM":" AM") var convertHour = DifferHour var convertMinute = DifferMinute var convertSecond = DifferSecond var Diffms = Tday[key].getTime() - time.getTime() DifferHour = Math.floor(Diffms / daysms) Diffms -= DifferHour * daysms DifferMinute = Math.floor(Diffms / hoursms) Diffms -= DifferMinute * hoursms DifferSecond = Math.floor(Diffms / Secondms) Diffms -= DifferSecond * Secondms var dSecs = Math.floor(Diffms / microsecond)if(convertHour != DifferHour) a="<font color=red>"+DifferHour+"</font>天"; if(convertMinute != DifferMinute) b="<font color=red>"+DifferMinute+"</font>時"; if(convertSecond != DifferSecond) c="<font color=red>"+DifferSecond+"</font>分" d="<font color=red>"+dSecs+"</font>秒"if (DifferHour>0) {a=a} else {a=''} document.getElementById("leftTime"+key).innerHTML = a + b + c + d; //顯示倒計(jì)時信息 } </script> ..............省略div布局代碼............... <!--{foreach from=$promotion_goods key=key item=goods}--> <!--這里一定要注意 不要忘了 上面foreach里 設(shè)置了 一個 key--><br><font class="f4" id="leftTime{$key}">{$lang.please_waiting}</font> ...............省略div布局代碼................. <script>Tday[{$key}] = new Date("{$goods.gmt_end_time}"); window.setInterval(function(){clock({$key});}, 1000); </script> <!--{/foreach}--> </div> </div> <!-- {/if} --> View Codeecshop添加自定義導(dǎo)航
ecshop默認(rèn)有頂部、中間和底部三種導(dǎo)航,如果我們想增加其他的導(dǎo)航怎么做呢? 工具/原料 ecsshop 方法/步驟 在languages/zh_cn/admin/navigator.php中添加一行 $_LANG['custom'] = '自定義';編輯admin/templates/navigator_add.htm,在第42行(根據(jù)實(shí)際情況)后面追加 <option value='custom' {$rt.item_type_coustom}>{$lang.custom}</option>后臺“系統(tǒng)設(shè)置”-》“自定義導(dǎo)航欄”-》“添加導(dǎo)航”在位置下拉菜單中即可看到剛才添加的“自定義”選項(xiàng)。在前臺模板(比如index.dwt)中通過<!-- {foreach name=nav_top_list from=$navigator_list.custom item=nav} --><!-- {/foreach} --> 顯示導(dǎo)航內(nèi)容。前臺效果 View Codeecshop怎么得到商品屬性的值
ECSHop的自定義屬性很是好用,但是在前臺輸出的時候非常麻煩,只能循環(huán)輸出所有的附加商品屬性,不能輸出制定的某個自定義的屬性,本來它用的是Smarty模板,但是到2.5之后好像是把Smarty修改很多,里面好多東西不能用了。今天給朋友改東西,隨便就寫了下。我只在商品具體信息頁面(goods.php)做了這個事情,可以的話可以寫到每個頁面去。修改goods.php 在PHP代碼 $smarty->assign(‘properties’, $properties['pro']); 這句前添加:PHP代碼 //By Sharmy $pros = array(); foreach($properties['pro']['商品屬性'] as $k=>$pro){ $pros[$pro['name']]['specId'] = $k; $pros[$pro['name']]['value'] = $pro['value']; } $smarty->assign(‘pros’, $pros); 然后在模板部分可以這樣調(diào)用(例如調(diào)用自己在后臺定義的"凈重"的商品類別屬性):XML/HTML代碼 <ul><li> 凈重:{$pros.凈重.value}</li></ul> 接下來就可以修改它的其它頁面了,最好是修改調(diào)用的function部分,例如修改lib_goods.php里的get_goods_propertiess。 View Codeecshop增加pc掃描二維碼微信支付功能代碼
ecshop開發(fā)網(wǎng)站,如果沒有手機(jī)版,又想通過微信支付,可以加入pc二維碼掃描微信支付功能 工具/原料 ecshop商城系統(tǒng),phpqrcode,WxPayPubHelper 公眾號已申請微信支付 方法/步驟 使用PHP QR Code生成二維碼,下載,在商品支付頁面加入 include 'phpqrcode/phpqrcode.php'; $pay_url ='http://www.xxx.com/weixin/weixin.php?order_id='.$order['order_sn'];QRcode::png($pay_url, 'images/image.png', 'L', 8); echo '<img src="images/image.png" />'; 生成一個指向微信支付的手機(jī)連接二維碼,手機(jī)掃描進(jìn)入打開申請到的微信支付代碼,在上面加入weixin.php define('IN_ECS', true); require('../includes/init.php'); require('../includes/lib_order.php'); $order_id = isset($_GET['order_id']) ? intval($_GET['order_id']) : 0; $order = order_info(0,$order_id); 獲取訂單信息手機(jī)打開頁面調(diào)用代碼 <html> <head><meta http-equiv="content-type" content="text/html;charset=utf-8"/><title>微信安全支付</title> <script type="text/javascript"> //調(diào)用微信JS api 支付 function jsApiCall() { WeixinJSBridge.invoke( 'getBrandWCPayRequest', <?php echo $jsApiParameters; ?>, function(res){ WeixinJSBridge.log(res.err_msg); //alert(res.err_code+res.err_desc+res.err_msg); } ); } function callpay() { if (typeof WeixinJSBridge == "undefined"){if( document.addEventListener ){document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);}else if (document.attachEvent){document.attachEvent('WeixinJSBridgeReady', jsApiCall); document.attachEvent('onWeixinJSBridgeReady', jsApiCall);} }else{jsApiCall(); } } callpay(); </script> </head> <body> </br></br></br></br> </body> </html>代碼引用WxPayPubHelper, WxPay.pub.config.php 配置文件 class WxPayConf_pub { //=======【基本信息設(shè)置】===================================== //微信公眾號身份的唯一標(biāo)識。審核通過后,在微信發(fā)送的郵件中查看 const APPID = 'xxx'; //受理商ID,身份標(biāo)識 const MCHID = 'xxx'; //商戶支付密鑰Key。審核通過后,在微信發(fā)送的郵件中查看 const KEY = 'xxx'; //JSAPI接口中獲取openid,審核后在公眾平臺開啟開發(fā)模式后可查看 const APPSECRET = 'xxx'; //=======【JSAPI路徑設(shè)置】=================================== //獲取access_token過程中的跳轉(zhuǎn)uri,通過跳轉(zhuǎn)將code傳入jsapi支付頁面 const JS_API_CALL_URL = 'http://www.xxx.com/weixin/js_api_call.php'; //=======【證書路徑設(shè)置】===================================== //證書路徑,注意應(yīng)該填寫絕對路徑 const SSLCERT_PATH = '/weixin/WxPayPubHelper/cacert/apiclient_cert.pem'; const SSLKEY_PATH = '/weixin/WxPayPubHelper/cacert/apiclient_key.pem'; //=======【異步通知url設(shè)置】=================================== //異步通知url,商戶根據(jù)實(shí)際開發(fā)過程設(shè)定 const NOTIFY_URL = 'http://www.xxx.com/weixin/notify_url.php'; //=======【curl超時設(shè)置】=================================== //本例程通過curl使用HTTP POST方法,此處可修改其超時時間,默認(rèn)為30秒 const CURL_TIMEOUT = 30; } ?> 根據(jù)申請的信息填寫找到notify_url.php文件 上面添加 define('IN_ECS', true); require('../includes/init.php'); require('../includes/lib_payment.php'); 調(diào)用訂單信息notify_url.php添加支付后修改訂單狀態(tài) if($notify->checkSign() == TRUE) { if ($notify->data["return_code"] == "FAIL") { //此處應(yīng)該更新一下訂單狀態(tài),商戶自行增刪操作 //$log_->log_result($log_name,"【通信出錯】:\n".$xml."\n"); } elseif($notify->data["result_code"] == "FAIL"){ //此處應(yīng)該更新一下訂單狀態(tài),商戶自行增刪操作 //$log_->log_result($log_name,"【業(yè)務(wù)出錯】:\n".$xml."\n"); } else{ //此處應(yīng)該更新一下訂單狀態(tài),商戶自行增刪操作 //$log_->log_result($log_name,"【支付成功】:\n".$xml."\n"); $order = $notify->getData(); $log_id=get_order_id_by_sn($order["out_trade_no"]); order_paid($log_id); } //商戶自行增加處理流程, //例如:更新訂單狀態(tài) //例如:數(shù)據(jù)庫操作 //例如:推送支付完成信息 }7 更多安全信息和詳細(xì)信息就不列舉了 View Codeecshop專題頁面添加關(guān)鍵詞_描述
ecshop專題頁面添加關(guān)鍵詞 描述 (紅色為添加部分)后臺管理模板topic_edit.htm<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0" id="advanced-table" style="display:none;"><tr><td class="label">關(guān)鍵詞:</td><td ><textarea name="topic_keywords" id="topic_keywords" cols="40" rows="3">{$topic.keywords}</textarea></td></tr><tr><td class="label">描述信息:</td><td ><textarea name="topic_description" id="topic_description" cols="40" rows="5">{$topic.description}</textarea><div> <a href="javascript:chanageSize(3,'topic_description');">[+]</a> <a href="javascript:chanageSize(-3,'topic_description');">[-]</a> </div></td></td></tr><tr><td class="label"><a href="javascript:showNotice('noticeTemplateFile');" title="{$lang.form_notice}"><img src="images/notice.gif" width="16" height="16" border="0" alt="{$lang.form_notice}"></a>{$lang.template_file}</td><td ><input name="topic_template_file" type="text" id="topic_template_file" value="{$topic.template}" size="40" /><span class="notice-span" id="noticeTemplateFile">{$lang.notice_template_file}</span></td></tr><tr><td class="label"><a href="javascript:showNotice('noticeCss');" title="{$lang.form_notice}"><img src="images/notice.gif" width="16" height="16" border="0" alt="{$lang.form_notice}"></a>{$lang.style_sheet}</td><td ><textarea name="topic_css" id="topic_css" cols="40" rows="5">{$topic.css}</textarea><span class="notice-span" id="noticeCss">{$lang.notice_css}</span><div> <a href="javascript:chanageSize(3,'topic_css');">[+]</a> <a href="javascript:chanageSize(-3,'topic_css');">[-]</a> </div></td></tr></table> 后臺管理PHP文件topic.php//echo $data;//exit;if ($is_insert){$sql = "INSERT INTO " . $ecs->table('topic') . " (title,start_time,end_time,data,intro,template,css,keywords,description)" ."VALUES ('$_POST[topic_name]','$start_time','$end_time','$data','$_POST[topic_intro]','$_POST[topic_template_file]','$_POST[topic_css]','$_POST[topic_keywords]','$_POST[topic_description]')";}else{$sql = "UPDATE " . $ecs->table('topic') ."SET title='$_POST[topic_name]',start_time='$start_time',end_time='$end_time',data='$data',intro='$_POST[topic_intro]',template='$_POST[topic_template_file]',css='$_POST[topic_css]',keywords='$_POST[topic_keywords]',description='$_POST[topic_description]'" ." WHERE topic_id='$topic_id' LIMIT 1";}數(shù)據(jù)庫 _topic根目錄topic.php中找到“/* 模板賦值 */”在下面添加如下代碼 $smarty->assign('keywords', htmlspecialchars($topic['keywords'])); $smarty->assign('description', htmlspecialchars($topic['description'])); View Code分級顯示會員價(jià)格
<!-- {foreach from=$rank_prices item=rank_price key=key} 會員等級對應(yīng)的價(jià)格--><!-- {if $key eq $smarty.session.user_rank} -->{$rank_price.rank_name}:</strong><span class="vip">{$rank_price.price}</span><!-- {/if} --><!--{/foreach}--> View Code分析ecshop中ur_here.lbi的原理
cshop中,ur_here.lbi都是用來處理ecshop系統(tǒng)導(dǎo)航的.ecshop導(dǎo)航的所有規(guī)則,都是通過他來處理的。 ecshop中的導(dǎo)航欄目,都是通過id或者是url規(guī)則,來動態(tài)生成的。而ecshop模板中的ur_here.lbecshop中,ur_here.lbi都是用來處理ecshop系統(tǒng)導(dǎo)航的.ecshop導(dǎo)航的所有規(guī)則,都是通過他來處理的。ecshop中的導(dǎo)航欄目,都是通過id或者是url規(guī)則,來動態(tài)生成的。而ecshop模板中的ur_here.lbi就是負(fù)責(zé)來顯示該操作欄目的.打開includes/lib_main.php中的assign_ur_here(). $page_title = $GLOBALS['_CFG']['shop_title'] . ' - ' . 'Powered by ECShop';是用來處理ecshop頁面標(biāo)題的,而$ur_here = '<a href=".">' . $GLOBALS['_LANG']['home'] . '</a>';卻是用來處理操作欄目的。$cur_url = basename(PHP_SELF);if (intval($GLOBALS['_CFG']['rewrite'])){$filename = strpos($cur_url,'-') ? substr($cur_url, 0, strpos($cur_url,'-')) : substr($cur_url, 0, -4);}else{$filename = substr($cur_url, 0, -4);}作用是來取得文件名稱的前綴的。比如index.php.則返回index.而通過他,可以取得對應(yīng)語言好里面的語言文字信息,也可以靈活對他的url進(jìn)行處理.如果是有分類的,他可以循環(huán)的讀出他子類的url.if (!empty($cat_arr)){krsort($cat_arr);foreach ($cat_arr AS $val){$page_title = htmlspecialchars($val['cat_name']) . '_' . $page_title;$args = array($key => $val['cat_id']);$ur_here .= ' <code>></code> <a href="' . build_uri($type, $args, $val['cat_name']) . '">' .htmlspecialchars($val['cat_name']) . '</a>';}} View Code模板引擎實(shí)例
比如 程序里面引用的最新商品模塊 對應(yīng)的庫文件是:recomment_new.lbi 在php文件中 通過smarty賦值 new_goods 后 在 對于的模板文件中 只需要應(yīng)用對應(yīng)的值即可 這是最新商品的 庫文件 其實(shí) 我們?nèi)サ?div標(biāo)簽后 還原最簡單的代碼 {foreach from=$new_goods item=goods} {$goods.url} ======== 商品的鏈接 {$goods.thumb} ======== 商品的縮略圖 {$goods.short_style_name} ======== 商品的名稱 {$goods.promote_price} ======== 商品促銷價(jià)格 {$goods.shop_price} ======== 商品正式銷售價(jià)格 {/foreach} 其實(shí) 簡化的smarty模板引擎 比較簡單 具體的 可以參考 smarty手冊 View Code判斷用戶是否登錄
<!--如果會員登陸了{(lán)if $smarty.session.user_name}--<!--{/if}--> View Code限定名稱長度
truncate:10在 ecshop 首頁調(diào)用分類下面的商品屬性
在index.php中添加$smarty->assign('filter_attr_list', filter_attr_list(2,'')); //2為大分類IDfunction filter_attr_list($cat_id,$filter_attr='') { $cat = get_cat_info($cat_id); $cat_id=$cat[cat_id]; $children = get_children($cat_id); // $cat['filter_attr']=$filter_attr; ouyangyong$cat_filter_attr = explode(',', $cat['filter_attr']); //提取出此分類的篩選屬性$all_attr_list = array();foreach ($cat_filter_attr AS $key => $value){ $sql = "SELECT a.attr_name,a.attr_id FROM " . $GLOBALS['ecs']->table('attribute') . " AS a, " . $GLOBALS['ecs']->table('goods_attr') . " AS ga, " . $GLOBALS['ecs']->table('goods') . " AS g WHERE ($children OR " . get_extension_goods($children) . ") AND a.attr_id = ga.attr_id AND g.goods_id = ga.goods_id AND g.is_delete = 0 AND g.is_on_sale = 1 AND g.is_alone_sale = 1 AND a.attr_id='$value'";if($temp_name = $GLOBALS['db']->getRow($sql)){$all_attr_list[$key]['filter_attr_name'] = $temp_name['attr_name']; $all_attr_list[$key]['filter_attr_id'] = $temp_name['attr_id'];$sql = "SELECT a.attr_id, MIN(a.goods_attr_id ) AS goods_id, a.attr_value AS attr_value FROM " . $GLOBALS['ecs']->table('goods_attr') . " AS a, " . $GLOBALS['ecs']->table('goods') ." AS g" ." WHERE ($children OR " . get_extension_goods($children) . ') AND g.goods_id = a.goods_id AND g.is_delete = 0 AND g.is_on_sale = 1 AND g.is_alone_sale = 1 '." AND a.attr_id='$value' "." GROUP BY a.attr_value";$attr_list = $GLOBALS['db']->getAll($sql);$temp_arrt_url_arrcc = array();for ($i = 0; $i < count($cat_filter_attr); $i++) //獲取當(dāng)前url中已選擇屬性的值,并保留在數(shù)組中 {$temp_arrt_url_arrc[$i] = 0;}$temp_arrt_url_arrc[$key] = 0; //“全部”的信息生成$temp_arrt_url = implode('.', $temp_arrt_url_arrc);$all_attr_list[$key]['attr_list'][0]['attr_value'] = '全部'; //$_LANG['all_attribute'];$all_attr_list[$key]['attr_list'][0]['url'] = build_uri('category', array('cid'=>$cat_id, 'bid'=>$brand, 'price_min'=>$price_min, 'price_max'=>$price_max, 'filter_attr'=>$temp_arrt_url), $cat['cat_name']);$all_attr_list[$key]['attr_list'][0]['selected'] = empty($filter_attr[$key]) ? 1 : 0;foreach ($attr_list as $k => $v){ $temp_key = $k + 1;$temp_arrt_url_arrc[$key] = $v['goods_id']; //為url中代表當(dāng)前篩選屬性的位置變量賦值,并生成以‘.’分隔的篩選屬性字符串$temp_arrt_url = implode('.', $temp_arrt_url_arrc);$all_attr_list[$key]['attr_list'][$temp_key]['attr_value'] = $v['attr_value'];$all_attr_list[$key]['attr_list'][$temp_key]['url'] = build_uri('category', array('cid'=>$cat_id, 'bid'=>$brand, 'price_min'=>$price_min, 'price_max'=>$price_max, 'filter_attr'=>$temp_arrt_url), $cat['cat_name']);if (!empty($filter_attr[$key]) AND $filter_attr[$key] == $v['goods_id']){$all_attr_list[$key]['attr_list'][$temp_key]['selected'] = 1;}else{$all_attr_list[$key]['attr_list'][$temp_key]['selected'] = 0;}}}} return $all_attr_list; }在index.dwt相應(yīng)的位置添加。<!--組合搜索 開始--> <!--{if $brands.1 || $price_grade.1 || $filter_attr_list}--> <div><img src="images/artt_top1.gif"></div> <div class="indexscreeBox"> <ul> <!--{foreach from=$filter_attr_list item=filter_attr}--> <li> <strong>{$filter_attr.filter_attr_name|escape:html}:</strong> <!--{foreach from=$filter_attr.attr_list item=attr}--> <!-- {if $attr.selected} --> <span>{$attr.attr_value}</span> <!-- {else} --> <a href="{$attr.url}">{$attr.attr_value}</a> <!-- {/if} --> <!--{/foreach}--> <div class="clear"></div> </li> <!--{/foreach}--> </ul> </div> <div><img src="images/artt_bottom1.gif"></div> <div class="blank5"></div> <!-- {/if} --> <!--組合搜索 結(jié)束--> 效果。 View Codeforeach
{foreach},{foreachelse} {foreach} 用于像循環(huán)訪問一個數(shù)字索引數(shù)組一樣循環(huán)訪問一個關(guān)聯(lián)數(shù)組,與僅能訪問數(shù)字索引數(shù)組的{section}不同,{foreach}的語法比 {section}的語法簡單得多,但是作為一個折衷方案也僅能用于單個數(shù)組。每個{foreach}標(biāo)記必須與關(guān)閉標(biāo)記{/foreach}成對出現(xiàn)。 屬性 1、from 類型:array數(shù)組 必要性:Yes必要 默認(rèn)值:n/a 描述:循環(huán)訪問的數(shù)組 2、item 類型:string字符串 必要性:Yes必要 默認(rèn)值:n/a 描述:當(dāng)前元素的變量名 3、key 類型:string字符串 必要性:No可選 默認(rèn)值:n/a 描述:當(dāng)前鍵名的變量名 4、name 類型:string字符串 必要性:No可選 默認(rèn)值:n/a 描述:用于訪問foreach屬性的foreach循環(huán)的名稱 from 和item是必要屬性 {foreach}循環(huán)的name可以是任何字母,數(shù)組,下劃線的組合,參考PHP變量。 {foreach}循環(huán)可以嵌套,嵌套的{foreach}的名稱應(yīng)當(dāng)互不相同。 from屬性通常是值數(shù)組,被用于判斷{foreach}的循環(huán)次數(shù)。 在from 變量中沒有值時,將執(zhí)行{foreachelse}。 {foreach}循環(huán)也有自身屬性的變量,可以通過 {$smarty.foreach.name.property}訪問,其中"name"是name屬性。 注意:name屬性僅在需要訪問 {foreach}屬性時有效,與{section}不同。訪問未定義name的{foreach}屬性不會拋出一個錯誤,但將導(dǎo)致不可預(yù)知的結(jié)果。 {foreach} 屬性有index, iteration, first, last, show, total. 示例: 例一. item屬性 assign('myArray', $arr); ?> 用模板以無序列表輸出$myArray{foreach from=$myArray item=foo} {$foo} {/foreach} 上例將輸出:1000 1001 1002 例二. 演示item和key屬性 'Tennis', 3 => 'Swimming', 8 => 'Coding'); $smarty->assign('myArray', $arr); ?> 用模板按鍵名/鍵值對的形式輸出$myArray, 類似于PHP的foreach。{foreach from=$myArray key=k item=v} {$k}: {$v} {/foreach} 上例將輸出:9: Tennis 3: Swimming 8: Coding 例三. {foreach}的item屬性是關(guān)聯(lián)數(shù)組 array('no' => 2456, 'label' => 'Salad'), 96 => array('no' => 4889, 'label' => 'Cream') ); $smarty->assign('items', $items_list); ?> 模板中,url通過$myId輸出$items{foreach from=$items key=myId item=i} {$i.no}: {$i.label} {/foreach} 上例將輸出:2456: Salad 4889: Cream 例四. {foreach}使用嵌套的item和key 向Smarty 設(shè)置一個數(shù)組,對于每個鍵名對應(yīng)的每個循環(huán)值都包括鍵。 assign('contacts', array( array('phone' => '1', 'fax' => '2', 'cell' => '3'), array('phone' => '555-4444', 'fax' => '555-3333', 'cell' => '760-1234') )); ?> 用于輸出$contact的模板。 {foreach name=outer item=contact from=$contacts}{foreach key=key item=item from=$contact} {$key}: {$item} {/foreach} {/foreach} 上例將輸出:phone: 1 fax: 2 cell: 3phone: 555-4444 fax: 555-3333 cell: 760-1234 例五. 使用{foreachelse}的數(shù)據(jù)庫示例 一個數(shù)據(jù)庫(例如PEAR或ADODB)的搜索腳本示例, assign('results', $db->getAssoc($sql) ); ?> 借助{foreachelse}標(biāo)記在沒有結(jié)果時模板輸出"None found"字樣。 {foreach key=cid item=con from=$results} {$con.name} - {$con.nick} {foreachelse} No items were found in the search {/foreach} .index包含當(dāng)前數(shù)組索引,從零開始。 例六. index示例 {* 每五行輸出一次頭部區(qū)塊 *}{foreach from=$items key=myId item=i name=foo} {if $smarty.foreach.foo.index % 5 == 0} {/if} {/foreach} Title {$i.label} iteration包含當(dāng)前循環(huán)次數(shù),與index不同,從1開始,每次循環(huán)增長1。 例七. iteration和index示例 {* this will output 0|1, 1|2, 2|3, ... etc *} {* 該例將輸出0|1, 1|2, 2|3, ... 等等 *} {foreach from=$myArray item=i name=foo} {$smarty.foreach.foo.index}|{$smarty.foreach.foo.iteration}, {/foreach} first在當(dāng)前{foreach}循環(huán)處于初始位置時值為TRUE。 例八. first屬性示例 {* 對于第一個條目顯示LATEST而不是id *}{foreach from=$items key=myId item=i name=foo} {/foreach} {if $smarty.foreach.foo.first}LATEST{else}{$myId}{/if} {$i.label} last在當(dāng)前{foreach}循環(huán)處于最終位置是值為TRUE。 例九. last屬性示例 {* 在列表結(jié)束時增加一個水平標(biāo)記 *}) {foreach from=$items key=part_id item=prod name=products} {$prod} {if $smarty.foreach.products.last}{else},{/if} {foreachelse} ... content ... {/foreach} show是{foreach}的參數(shù). show是一個布爾值。如果值為FALSE,{foreach}將不被顯示。如果有對應(yīng)的{foreachelse},將被顯示。 total包括 {foreach}將循環(huán)的次數(shù),既可以在{foreach}中使用,也可以在之后使用。 例十. total屬性示例 {* 在結(jié)束位置顯示行數(shù) *} {foreach from=$items key=part_id item=prod name=foo} {$prod.name>{if $smarty.foreach.foo.last}{$smarty.foreach.foo.total} items {/if} {foreachelse} ... something else ... {/foreach} 問題 {foreach from=$custid item=curr_id key=num} {if num is odd} 干啥 {else} 干其他的 {/if} {/foreach} 與以下的代碼的區(qū)別,odd和enen的意義? {foreach from=$custid item=curr_id key=num} {if num%2==0} 干啥 {else} 干其他的 {/if} {/foreach} View Codeonclick
οnclick="this.className='current'" View CodeECSHOP商品屬性,商品分類,商品類型,商品篩選,商品描述,商品圖片,商品列表,商品管理使用教程
| 文章標(biāo)題 | 教程類別 | 添加日期 | 瀏覽量 |
| ECSHOP商品批量導(dǎo)出,ECSHOP商品數(shù)據(jù)包制作導(dǎo)出 | ECSHOP使用教程 | 2013-10-26 | 2892 |
| ECSHOP商品圖片批量處理,ECSHOP商品縮略圖片模糊處理教程 | ECSHOP使用教程 | 2013-10-26 | 2496 |
| ECSHOP虛擬商品,ECSHOP商品虛擬卡 | ECSHOP使用教程 | 2013-10-26 | 1912 |
| ECSHOP標(biāo)簽列表,ECSHOP商品標(biāo)簽管理 | ECSHOP使用教程 | 2013-10-26 | 2097 |
| ECSHOP商品品牌,ECSHOP商品品牌圖片添加設(shè)置 | ECSHOP使用教程 | 2013-10-26 | 2230 |
| ECSHOP添加新商品,ECSHOP商品描述 | ECSHOP使用教程 | 2013-10-26 | 3754 |
| ECSHOP商品分類,ECSHOP商品分類編輯 | ECSHOP使用教程 | 2013-10-26 | 3244 |
| ECSHOP商品屬性,ECSHOP商品屬性篩選 | ECSHOP使用教程 | 2013-10-26 | 4068 |
| ECSHOP商品類型,ECSHOP商品屬性類型 | ECSHOP使用教程 | 2013-10-26 | 2768 |
| ECSHOP商品批量上傳,ECSHOP商品數(shù)據(jù)包導(dǎo)入 | ECSHOP使用教程 | 2013-10-26 | 6990 |
| ECSHOP商品自動上下架,ECSHOP商品批量下架上架 | ECSHOP使用教程 | 2013-10-26 | 2591 |
| ECSHOP更改加密串,ECSHOP商品虛擬卡加密串 | ECSHOP使用教程 | 2013-10-25 | 1639 |
| ECSHOP生成商品代碼,ECSHOP商品推廣代碼 | ECSHOP使用教程 | 2013-10-25 | 1656 |
| ECSHOP商品批量修改,ECSHOP商品描述修改 | ECSHOP使用教程 | 2013-10-25 | 2012 |
| ECSHOP商品回收站,ECSHOP商品批量刪除 | ECSHOP使用教程 | 2013-10-25 | 3778 |
| ECSHOP用戶評論,ECSHOP商品用戶評論 | ECSHOP使用教程 | 2013-10-25 | 2528 |
| ECSHOP商品列表,ECSHOP后臺商品列表管理 | ECSHOP使用教程 | 2013-10-25 | 1910 |
?
轉(zhuǎn)載于:https://www.cnblogs.com/blogpro/p/11464830.html
總結(jié)
以上是生活随笔為你收集整理的EcShop开发手册的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Towards End-to-End L
- 下一篇: 谈谈我对SEO快排现象的观察及其背后原理