Ecshop文件結構javascript
ecshop文件架構說明 ECShop 結構圖及各文件相應功能介紹 ECShop upload 的目錄 ┣ activity.php 活動列表 ┣ affiche.php 廣告處理文件 ┣ affiliate.php 生成商品列表 ┣ article.php 文章內容 ┣ article_cat.php文章分類 ┣ auction.php 拍賣前臺文件 ┣ brand.php 品牌列表 ┣ captcha.php 生成驗證碼 ┣ 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 團購商品前臺文件 ┣ index.php 首頁文件 ┣ myship.php 支付配送DEMO ┣ pick_out.php 選購中心 ┣ receive.php 處理收回確認的頁面 ┣ region.php 地區切換程序 ┣ respond.php 支付響應頁面 ┣ robots.txt ┣ search.php 搜索程序 ┣ sitemaps.php google sitemap 文件 ┣ snatch.php 奪寶奇兵前臺頁面 ┣ tag_cloud.php 標籤雲 ┣ topic.php 專題前臺 ┣ user.php 會員中心 ┣ vote.php 調查程序 ┣ wholesale.php 批發前臺文件 ┣ admin文件夾 ┃ ┣ account_log.php 管理中心賬戶變更記錄 ┃ ┣ admin_logs.php 記錄管理員操做日誌 ┃ ┣ ads.php 廣告管理程序 ┃ ┣ adsense.php 站外JS投放的統計程序 ┃ ┣ ad_position.php廣告位置管理程序 ┃ ┣ affiliate.php 程序說明 ┃ ┣ affiliate_ck.php 程序說明 ┃ ┣ agency.php 管理中心辦事處管理 ┃ ┣ area_manage.php 地區列表管理文件 ┃ ┣ article.php 管理中心文章處理程序文件 ┃ ┣ articlecat.php 文章分類管理程序 ┃ ┣ article_auto.php ┃ ┣ attention_list.php ┃ ┣ attribute.php 屬性規格管理 ┃ ┣ auction.php 管理中心拍賣活動管理 ┃ ┣ bonus.php 紅包類型的處理 ┃ ┣ brand.php管理中心品牌管理 ┃ ┣ captcha_manage.php ┃ ┣ card.php 賀卡管理程序 ┃ ┣ category.php 商品分類管理程序 ┃ ┣ check_file_priv.php 系統文件檢測 ┃ ┣ comment_manage.php 用戶評論管理程序 ┃ ┣ convert.php 轉換程序 ┃ ┣ cron.php 計劃任務 ┃ ┣ database.php 數據庫管理 ┃ ┣ ebao_commend.php 易寶推薦 ┃ ┣ edit_languages.php 管理中心語言項編輯(前臺語言項) ┃ ┣ email_list.php 郵件列表管理 ┃ ┣ favourable.php 管理中心優惠活動管理 ┃ ┣ flashplay.php ┃ ┣ flow_stats.php 綜合流量統計 ┃ ┣ 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 管理中心團購商品管理 ┃ ┣ guest_stats.php 客戶統計 ┃ ┣ index.php 控制檯首頁 ┃ ┣ integrate.php 第三方程序會員數據整合插件管理程序 ┃ ┣ magazine_list.php ┃ ┣ mail_template.php 管理中心模版管理程序 ┃ ┣ message.php 管理中心管理員留言程序 ┃ ┣ navigator.php ┃ ┣ order.php 訂單管理 ┃ ┣ order_stats.php 訂單統計 ┃ ┣ pack.php 包裝管理程序 ┃ ┣ payment.php 支付方式管理程序 ┃ ┣ picture_batch.php 圖片批量處理程序 ┃ ┣ privilege.php 管理員信息以及權限管理程序 ┃ ┣ sale_general.php 銷售概況 ┃ ┣ sale_list.php 銷售明細列表程序 ┃ ┣ sale_order.php 商品銷售排行 ┃ ┣ searchengine_stats.php 搜索引擎關鍵字統計 ┃ ┣ search_log.php ┃ ┣ shipping.php 配送方式管理程序 ┃ ┣ shipping_area.php 配送區域管理程序 ┃ ┣ shophelp.php 幫助信息管理程序 ┃ ┣ shopinfo.php 網店信息管理頁面 ┃ ┣ shop_config.php 管理中心商店設置 ┃ ┣ sitemap.php 站點地圖生成程序 ┃ ┣ sms.php 短信模塊 之 控制器 ┃ ┣ snatch.php 奪寶奇兵管理程序 ┃ ┣ sql.php sql管理程序 ┃ ┣ tag_manage.php 後臺標籤管理 ┃ ┣ template.php 管理中心模版管理程序 ┃ ┣ topic.php 專題管理 ┃ ┣ users.php 會員管理程序 ┃ ┣ users_order.php 會員排行統計程序 ┃ ┣ user_account.php 會員賬目管理(包括預付款,餘額) ┃ ┣ user_msg.php 客戶留言 ┃ ┣ user_rank.php 會員等級管理程序 ┃ ┣ view_sendlist.php ┃ ┣ virtual_card.php 虛擬卡商品管理程序 ┃ ┣ visit_sold.php 訪問購買比例 ┃ ┣ vote.php 調查管理程序 ┃ ┣ wholesale.php 管理中心批發管理 ┃ ┣ help 的目錄 後臺操做幫助文件 ┃ ┣ images 的目錄 ┃ ┣ includes 的目錄 ┃ ┃ ┣ cls_exchange.php 後臺自動操做數據庫的類文件 ┃ ┃ ┣ cls_google_sitemap.php Google sitemap 類 ┃ ┃ ┣ cls_phpzip.php ZIP 處理類 ┃ ┃ ┣ cls_sql_dump.php 數據庫導出類 ┃ ┃ ┣ inc_menu.php 管理中心菜單數組 ┃ ┃ ┣ init.php 管理中心公用文件 ┃ ┃ ┣ lib_goods.php 管理中心商品相關函數 ┃ ┃ ┣ lib_main.php 管理中心公用函數庫 ┃ ┃ ┗ lib_template.php 管理中心模版相關公用函數庫 ┃ ┣ styles 的目錄 ┃ ┣ templates 的目錄 ┃ ┗ js 的目錄 ┃ ┣ colorselector.js ┃ ┣ common.js ┃ ┣ listtable.js ┃ ┣ md5.js ┃ ┣ selectzone.js ┃ ┣ tab.js ┃ ┣ todolist.js ┃ ┣ topbar.js ┃ ┗ validator.js 表單驗證類 ┣ api 的目錄 ┃ ┣ checkorder.php 檢查訂單 API ┃ ┣ cron.php ┃ ┗ init.php API 公用初始化文件 ┣ cert 的目錄 ┣ data 的目錄 ┃ ┣ ffiliate.html ┃ ┣ goods_script.html ┃ ┣ order_print.html ┃ ┣ afficheimg 的目錄 ┃ ┣ brandlogo 的目錄 ┃ ┣ captcha 的目錄 驗證碼背景圖片存放位置 ┃ ┣ cardimg 的目錄 ┃ ┣ feedbackimg 的目錄 ┃ ┣ images 的目錄 ┃ ┣ packimg 的目錄 ┃ ┗ sqldata 的目錄 ┣ images 的目錄 ┃ ┗ upload 的目錄 ┃ ┣ File 文件上傳存放處 ┃ ┣ Flash flash上傳存放處 ┃ ┣ Image 圖片上傳存放處 ┃ ┗ Media 視頻上傳存放處 ┣ includes 的目錄 ┃ ┣ cls_captcha.php 驗證碼圖片類 ┃ ┣ cls_ecshop.php 基礎類 ┃ ┣ cls_error.php 用戶級錯誤處理類 ┃ ┣ cls_iconv.php 字符集轉換類 ┃ ┣ cls_image.php 後臺對上傳文件的處理類(實現圖片上傳,圖片縮小, 增長水印) ┃ ┣ 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語句執行類。 ┃ ┣ cls_template.php 模版類 ┃ ┣ cls_transport.php 服務器之間數據傳輸器 ┃ ┣ inc_constant.php 常量 ┃ ┣ init.php 前臺公用文件 ┃ ┣ lib.debug.php ┃ ┣ lib_article.php 文章及文章分類相關函數庫 ┃ ┣ lib_clips.php ECSHOP 用戶相關函數庫 ┃ ┣ lib_code.php 加密解密類 ┃ ┣ lib_common.php 公用函數庫 ┃ ┣ lib_goods.php 商品相關函數庫 ┃ ┣ lib_insert.php 動態內容函數庫 ┃ ┣ lib_main.php 前臺公用函數庫 ┃ ┣ lib_order.php 購物流程函數庫 ┃ ┣ lib_passport.php 用戶賬號相關函數庫 ┃ ┣ lib_payment.php 支付接口函數庫 ┃ ┣ lib_time.php 時間函數 ┃ ┣ lib_transaction.php ECSHOP 用戶交易相關函數庫 ┃ ┣ codetable 的目錄 ┃ ┃ ┣ big5-gb.table ┃ ┃ ┣ big5_utf8.php ┃ ┃ ┣ gb-big5.table ┃ ┃ ┣ gb_utf8.php ┃ ┃ ┗ ipdata.dat ┃ ┣ fckeditor 的目錄 fckeditor編輯器目錄 ┃ ┗ modules 的目錄 ┃ ┣ convert 的目錄 ┃ ┃ ┣ shopex46.php vshopex4.6轉換程序插件 ┃ ┃ ┗ shopex47.php shopex4.7轉換程序插件 ┃ ┣ cron 的目錄 ┃ ┃ ┣ auto_manage.php 自動上下架管理 ┃ ┃ ┗ ipdel.php 按期刪除 ┃ ┣ integrates 的目錄 ┃ ┃ ┣ bmforum.php 會員數據處理類 ┃ ┃ ┣ 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 銀行匯款(轉賬)插件 ┃ ┃ ┣ cappay.php 首信易支付插件 ┃ ┃ ┣ chinabank.php 網銀在線插件 ┃ ┃ ┣ cncard.php 雲網支付插件 ┃ ┃ ┣ cod.php 貨到付款插件 ┃ ┃ ┣ ctopay.php Ctopay 支付插件 ┃ ┃ ┣ express.php express支付系統插件 ┃ ┃ ┣ ips.php ips支付系統插件 ┃ ┃ ┣ kuaiqian.php 快錢插件 ┃ ┃ ┣ nps.php NPS支付插件 ┃ ┃ ┣ pay800.php 800pay 支付寶插件 ┃ ┃ ┣ paypal.php 貝寶插件 ┃ ┃ ┣ paypalcn.php 貝寶中國插件 ┃ ┃ ┣ post.php 郵局匯款插件 ┃ ┃ ┣ tenpay.php 財付通插件 ┃ ┃ ┣ udpay.php 網匯通插件 ┃ ┃ ┣ xpay.php 易付通插件 ┃ ┃ ┗ yeepay.php YeePay易寶插件 ┃ ┗ shipping 的目錄 ┃ ┣ cac.php 上門取貨插件 ┃ ┣ city_express.php 城際快遞插件 ┃ ┣ ems.php EMS插件 ┃ ┣ flat.php 郵政包裹插件 ┃ ┣ fpd.php 到付運費插件 ┃ ┣ post_express.php 郵政包裹插件 ┃ ┣ post_mail.php 郵局平郵插件 ┃ ┣ presswork.php 掛號印刷品插件 ┃ ┣ sf_express.php 順豐速運 配送方式插件 ┃ ┣ 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 的目錄 語言風格文件 ┃ ┣ 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 的目錄
ECShop的庫項目功能php
認識一下ECShop的庫項目功能。 1、認識ECShop模板管理。 1.進入EC的後臺,進入「模板管理」–>「設置模板」,如圖 ecshop 增長「庫項目」而且添加到模板中-》非可編輯區改成可編輯區 - pepsl - Pepsl的心情 能夠看到模板編輯頁面在此我能夠編輯不用頁面的區塊(庫項目)是否顯示、顯示位置、甚至是顯示商品的數量,如圖 ecshop 增長「庫項目」而且添加到模板中-》非可編輯區改成可編輯區 - pepsl - Pepsl的心情 在此對模板進行的修改都會顯示在頁面。(EC好強大呀~~^3^) 2、認識庫項目 1.一個庫項目眷漲個庫文件。 打開ECShop的裝置目錄,進入 themes/default/library文件夾。你會看到許多以 「.lbi」(擴展名)結尾的文件。如圖: ecshop 增長「庫項目」而且添加到模板中-》非可編輯區改成可編輯區 - pepsl - Pepsl的心情 ad_position?廣告位嗎? category_tree?分類樹嗎? recommend_new?新品推薦嗎? 對了,這裏放的眷漲頁面上一塊一塊能夠編輯的庫項目的文件了。沒錯,若是你想加一個本身的顯示庫項目,就在此添加。 其實ECShop提供了編輯庫文件編輯的地方,就在管理後臺的「模板管理」–>「庫文件管理」。 那麼這些庫項目是如何顯示在頁面上的呢?讓咱們以「新品推薦」爲例。往下看。 2.庫項目的頁面添加。 進入themes/default文件夾,用編輯器(文本打開也能夠)打開index.dwt文件。ctrl + f ,查找recommend_new 會找到一行代碼: 對,眷漲這個「東西」把recommend_new.lbi裏的內容加宰出來併成爲頁面的一部分的。 可是這只是他的開始部分,完整的應該是: 有開始,有結束。 而這個: 和這個 將頁面劃分爲幾個不一樣的大區域,這樣後臺就能夠把那些庫項目在這些區域裏排序了。 因此若是你僅僅想添加一塊本身的定義的庫文件顯示,那麼僅須要在library裏添加了本身的lbi文件後,用加到頁面合適位置就能夠了。若是想之後在後臺的「模板管理」裏編輯它,那還須要作下面的工做。 3、爲後臺添加可配置(設置)的庫項目 1.在根目錄/themes/default/library 中添加一個」test.lbi」 空文件。 而後開打 根目錄/languages/zh_cn/admin/template.php(注意大宇用的語言包是簡體中文,因此是zh_cn),找到 $_LANG['template_libs'],在此上面添加一行「$_LANG['template_libs']['test'] = ‘test測試’;」。 好了,如今你能夠打開你的管理後臺,進入「模板管理」–>」庫文件管理」 而後點開庫文件列表的下拉菜單找找看,是否是有一個 「test.lbi – test測試」。哈哈,咱們給它加點內容吧: 我眷漲測試一下下 ps:第一行是設置編碼用的。不明白不要緊。繼續… 2.打開 根目錄/admin/includes/lib_template.php。 大體看一下這個文件,你會發現,原來後臺的「設置模板」的初始配置都是在這裏聲明的。 在這裏能夠編輯 「能夠設置內容的模板」,還能夠編輯「每一個模板允卷設置的庫項目」。也眷漲說,這裏聲明瞭哪一個模板裏能夠設置哪些庫項目。相關數組都有註釋,至關方便。 下面咱們要把本身定義的「test.lbi」添加到到index.dwt裏。 找到 「’index’ => array(」 這一行,通常在文件的120行。這裏是個數組。往數組裏添加一行: 「’/library/test.lbi’ => 4」,如圖: ecshop 增長「庫項目」而且添加到模板中-》非可編輯區改成可編輯區 - pepsl - Pepsl的心情 咱們給它設置的默認顯示數量爲4。 好了,如今點開 「模板管理」 –> 「設置模板」,能夠在首頁的編輯模板裏看到咱們的庫項目了。如圖 ecshop 增長「庫項目」而且添加到模板中-》非可編輯區改成可編輯區 - pepsl - Pepsl的心情 可是,它的「顯示」框式灰色的,不能選中,並且「區域」裏也不能設置顯示區域。 該怎麼辦呢? 這麼辦: 打開 根目錄/themes/default/libs.xml 查找「」,在region標籤裏添加一行「test」,如圖: ecshop 增長「庫項目」而且添加到模板中-》非可編輯區改成可編輯區 - pepsl - Pepsl的心情 保存後,再次進入「模板管理」 –> 「設置模板」,看看咱們的test庫項目是否是能夠編輯了。呵呵 編輯好看看效果吧~~~如圖 ecshop 增長「庫項目」而且添加到模板中-》非可編輯區改成可編輯區 - pepsl - Pepsl的心情
ecshop 實現全站調用購物車功能css
此功能是根據網友提供的方法,而後本身實際操做後發現了一些問題,更改了部分代碼,完美了一些,下面的代碼都貼出來了 今天給一朋友解決一個問題,須要在商城每一個頁面中的購物車處都顯示購物車詳情!其實,這個功能很簡單,如今不少商城都在用(PS:雖然個人成都零食網如今尚未使用這個功能,而且之後暫時也沒有打算使用這個功能,今天仍是把這個寫出來分享給你們。)。要實現並非難事,就是在訂單模板中加幾個關於訂單詳情的顯示嘛。若是須要在這裏面加入刪除或更新也只須要結合JS進行調用就好了。如今將我實現這個功能的方法公佈以下: 能夠從圖中看出,我主要是添加了購物車詳單和刪除操做。其它都是同樣的。如下是具體實現方法和簡單原理: 要實現,首先要知道這一塊是怎麼出來的,作過ECSHOP二次開發的朋友對這個確定不陌生了,模板文件在模板文件夾中的庫文件夾的cart_info.lbi(找不到的同志能夠搜索一下),原來這個模板裏的東西很簡單,就是添顯示了「購物車裏有X個商品,去結算」這類的信息。今天,咱們要將其所有顯示。 其次,咱們要顯示詳情,確定須要將這個詳情使用彈出的方式來顯示,不能直接顯示,直接顯示誰都會,那樣有打開訂單結算頁有什麼區別呢?佔有太多地方了,這裏就要用到css和js的一些基礎知識了。 個人代碼和註釋以下: <!--{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">小計:{$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>件商品 共計<strong>¥:{$order_amount}</strong><br><a href="flow.php"> <img src="themes/chengrenyongpin/images/car1_14.jpg" width="120" alt="去結算"> </a></div> <!--{else}--> 您的購物車暫無商品 <!--{/if}--> 以上代碼僅供參考。如須要使用,須要結合如下CSS代碼,請同步複製到相應目錄文件或嵌入相關文件中 .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; } 複製代碼 固然。這裏默認這個詳單是display:none的。須要您經過js進行調用將期display:block。 接下來,就是要改程序了: 打開/include/lib_insert.php找到function insert_cart_info()。將其改爲如下內容 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; } 這樣,就大功告成了!!購物車詳細內容會顯示了。但關鍵的是購物車中的刪除。這個就要咱們從新寫入相應程序了才行。 咱們在網站根目錄建一個文件爲delete_cart_goods.php。它的做用,來專門負責購物車進行更新的那麼一個程序(其實只用於刪除購物車的訂單) <?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)); ?> 代碼如上了,但細心的人看,這其實和lib_insert中的insert_cart_info函數是同樣的,只是最後一行不同,一個是輸出到json數據組,一個直接返回。 這樣有了這些之後就只差模板中的JS調用了。咱們給刪除連接添加了代碼<a class="del" href="javascript:">[刪除]</a> 插入deleteCartGoods這個js就好了。在這裏提示一下,使用Jquery和使用EC自帶的JS寫法是有必定區別的,JQuery 我在這裏就不寫了,由於我火柴網的確沒有使用,我也就懶得寫了。 <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> 複製代碼 原理很簡單,先發送刪除指令,而後將返回的json數據從新加載到ECS_CARTINFO中的代碼中就好了。 到此,大功告成!!
ECSHOP換KindEditor編輯器html
ECSHOP一直用的FCK,這個不解釋,太多杯具太多糾結。 --------------------- KindEdito主要特色 快速:體積小,加載速度快 開源:開放源代碼,高水平,高品質 底層:內置自定義 DOM 類庫,精確操做 DOM 擴展:基於插件的設計,全部功能都是插件,可根據需求增減功能 風格:修改編輯器風格很是容易,只需修改一個 CSS 文件 兼容:支持大部分主流瀏覽器,好比 IE、Firefox、Safari、Chrome、Opera --------------------- 官方下載最新版,解壓直接扔在根目錄算了,如今拿編輯產品信息開刀,模板頁面?這個不用說了吧(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.修改產品描述所調用的FCK編輯器 {$FCKeditor} 爲 <textarea id=」editor_id」 name=」goods_desc」 style=」width:90%;height:300px;」> {$goods.goods_desc} </textarea> OK,至此結束,看看效果吧!
ECSHOP全部頁面分類樹顯示所有的方法,全部頁面分類樹顯示所有的方法java
ECSHOP全部頁面分類樹顯示所有的方法,全部頁面分類樹顯示所有的方法 修改方法以下: 打開includes/lib_goods.php,找到get_categories_tree()函數部分,找到這一段: 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'"; }
Ecshop 團購列表增長市場價、團購價、爲您節省、倒計時等!mysql
曾經求助過此方法,結果運氣很好,有一位高手加我無償爲我解決了此問題,很是感謝!通過我倆幾天的調試,目前只有1個小問題,其它均完美實現。我整理了詳細的教程,通過高手的贊成,如今分享給你們,你們都裝上後看一下是否都有我遇到的問題。先貼問題,再貼教程。 問題:在我本地和個人服務器上,都出現了團購價調用不出來的現象。而在那位高手兄弟的機子上卻沒有這個問題,這個問題咱們搞了好幾天都沒解決。甚至他把他的網站程序備份後傳給我安裝,到我本地仍是會出現此問題,奇了怪了。我對這個問題的見解是數據寫不到數據庫,多是我倆的環境版本的問題。目前個人解決方法是去數據庫字段裏修改,沒辦法,手工修改。 看,團購價格應該是50元,在我這就是出不來,一直顯示的是市場價格。 教程,共5步 1,網站後臺-數據庫管理-SQL查詢-執行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">團購價格:</td> <td><input type="text" name="market_price" value="{$group_buy.market_price}" size="30" /> 該價格與價格階梯價格相同,2個都不能少!</td> </tr> 3,admin/group_buy.php 找到'ext_info' => serialize(array( 在其上面一行添加 'tuan_price' => $tuan_price, 4,themes/default/group_buy_list.dwt大約61行 添加 市場價格:{$group_buy.shop_price1}<br /> 團購價格:{$group_buy.tuan_price1}<br /> 爲您節省:{$group_buy.js}<br /> 折扣:{$group_buy.zk}<br /> 倒計時:<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="促銷已結束"; clearInterval(sh{$val.i}); } else { if (__h<10) {__h="0"+__h} //分數取兩位,不足補0 if (__m<10) {__m="0"+__m} //秒數取兩位,不足補0 if (__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) 下面所有替換 { /* 取得團購活動 */ $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); } /* 處理價格階梯 */ $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'])); /* 加入數組 */ $gb_list[] = $group_buy; } return $gb_list; } ?>
Ecshop後臺fckeditor上傳圖片路徑修改和重命名上傳圖片sql
Ecshop上傳的圖片都是放在images/upload/Image/下面的,圖片多了就不爽了哦。Ecshop後臺fckeditor上傳圖片路徑修改和重命名上傳圖片 看了網上不少修改的地方,本身也測試了好幾回,如今終於能夠了。 Fckeditor上傳圖片路徑修改後的路徑是: 已年月日時分秒來區分 images/upload/Image/201303/05143045-6546.jpg images/upload/Image/年月/日時分秒-四位隨機數.上傳圖片後綴名 我只修改了Image的路徑,File、Flash、Media可本身參考修改。 1、修改Ecshop fckeditor 圖片上傳路徑只有一點改動: 找到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函數,由於我這裏用的UTC時區,因此加了8小時。 2、修改Ecshop fckeditor 上傳圖片的名字,重命名上傳的圖片的名字: 找到includes/fckeditor/editor/filemanager/connectors/php/io.php 找到SanitizeFileName函數, //$sNewFileName = preg_replace( '/\\\\|\\/|\\||\\:|\\?|\\*|"|<|>|[[:cntrl:]]/', '_', $sNewFileName ) ; 把這一行註釋掉,替換爲: $sExtension = substr( $sNewFileName, (strrpos($sNewFileName,'.') + 1 ) ) ; //獲取擴展名 $sNewFileName = date('dHis-',time()+3600*8).rand(0,9999).'.'.$sExtension; 替換以後的SanitizeFileName函數以下: 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; //20130305 return $sNewFileName ; }
ecshop促銷時間倒計時效果數據庫
ecshop促銷時間倒計時效果的實現以下: 1、首先修改程序部分 打開includes/lib_goods.php 找到get_promote_goods()函數部分 在 $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":":")+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.getElementByIdx_xx_x("leftTime"+key).innerHTML = a + b + c + d; //顯示倒計時信息 } </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} -->
ecshop開發之如何實現團購網的倒計時功能 express
首先,你須要在購買的時候,提示輸入框,告訴用戶,你必須購買多少.其次,購物車中須要修改購買數量的時候,你也須要控制。 1:詳細頁面中控制. 在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'] = "購買數量必須輸入{$gc}的倍數"; } 2:在common.js中增長函數 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}" > 購買數量:<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> 調用addToCart1函數. 3:推薦頁面 在common.js中增長函數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等頁面中,須要增長輸入框.調用次函數. <form action="javascript:addToCart2({$goods.id})" method="post" name="ECS_FORMBUY_{$goods.id}" id="ECS_FORMBUY_{$goods.id}" > 購買數量:<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> 最後完成了購買數量的控制。
ecshop首頁促銷商品倒計時效果json
ecshop促銷時間倒計時 1、首先修改程序部分 打開includes/lib_goods.php 找到get_promote_goods()函數部分 在 $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":":")+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; //顯示倒計時信息 } </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} -->
ecshop首頁特價、團購商品顯示倒計時
雖然這在百度已經有不少了吧,可我仍是花了很長時間纔給弄出來。 一、打開includes/lib_goods.php 找到get_promote_goods()函數部分 在 $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; } 二、而後將 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; //顯示倒計時信息 } </script> ..............省略div佈局代碼............... <!--{foreach from=$promotion_goods key=key item=goods}--> <!--這裏必定要注意 不要忘了 上面foreach裏 設置了 一個 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} -->
ecshop添加自定義導航
ecshop默認有頂部、中間和底部三種導航,若是咱們想增長其餘的導航怎麼作呢? 工具/原料 ecsshop 方法/步驟 在languages/zh_cn/admin/navigator.php中添加一行 $_LANG['custom'] = '自定義'; 編輯admin/templates/navigator_add.htm,在第42行(根據實際狀況)後面追加 <option value='custom' {$rt.item_type_coustom}>{$lang.custom}</option> 後臺「系統設置」-》「自定義導航欄」-》「添加導航」在位置下拉菜單中便可看到剛纔添加的「自定義」選項。 在前臺模板(好比index.dwt)中經過 <!-- {foreach name=nav_top_list from=$navigator_list.custom item=nav} --> <!-- {/foreach} --> 顯示導航內容。 前臺效果
ecshop怎麼獲得商品屬性的值
ECSHop的自定義屬性非常好用,可是在前臺輸出的時候很是麻煩,只能循環輸出全部的附加商品屬性,不能輸出制定的某個自定義的屬性,原本它用的是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); 而後在模板部分能夠這樣調用(例如調用本身在後臺定義的"淨重"的商品類別屬性): XML/HTML代碼 <ul><li> 淨重:{$pros.淨重.value}</li></ul> 接下來就能夠修改它的其它頁面了,最好是修改調用的function部分,例如修改lib_goods.php裏的get_goods_propertiess。
ecshop增長pc掃描二維碼微信支付功能代碼
ecshop開發網站,若是沒有手機版,又想經過微信支付,能夠加入pc二維碼掃描微信支付功能 工具/原料 ecshop商城系統,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" />'; 生成一個指向微信支付的手機鏈接二維碼,手機掃描進入 打開申請到的微信支付代碼,在上面加入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); 獲取訂單信息 手機打開頁面調用代碼 <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"/> <title>微信安全支付</title> <script type="text/javascript"> //調用微信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 { //=======【基本信息設置】===================================== //微信公衆號身份的惟一標識。審覈經過後,在微信發送的郵件中查看 const APPID = 'xxx'; //受理商ID,身份標識 const MCHID = 'xxx'; //商戶支付密鑰Key。審覈經過後,在微信發送的郵件中查看 const KEY = 'xxx'; //JSAPI接口中獲取openid,審覈後在公衆平臺開啓開發模式後可查看 const APPSECRET = 'xxx'; //=======【JSAPI路徑設置】=================================== //獲取access_token過程當中的跳轉uri,經過跳轉將code傳入jsapi支付頁面 const JS_API_CALL_URL = 'http://www.xxx.com/weixin/js_api_call.php'; //=======【證書路徑設置】===================================== //證書路徑,注意應該填寫絕對路徑 const SSLCERT_PATH = '/weixin/WxPayPubHelper/cacert/apiclient_cert.pem'; const SSLKEY_PATH = '/weixin/WxPayPubHelper/cacert/apiclient_key.pem'; //=======【異步通知url設置】=================================== //異步通知url,商戶根據實際開發過程設定 const NOTIFY_URL = 'http://www.xxx.com/weixin/notify_url.php'; //=======【curl超時設置】=================================== //本例程經過curl使用HTTP POST方法,此處可修改其超時時間,默認爲30秒 const CURL_TIMEOUT = 30; } ?> 根據申請的信息填寫 找到notify_url.php文件 上面添加 define('IN_ECS', true); require('../includes/init.php'); require('../includes/lib_payment.php'); 調用訂單信息 notify_url.php添加支付後修改訂單狀態 if($notify->checkSign() == TRUE) { if ($notify->data["return_code"] == "FAIL") { //此處應該更新一下訂單狀態,商戶自行增刪操做 //$log_->log_result($log_name,"【通訊出錯】:\n".$xml."\n"); } elseif($notify->data["result_code"] == "FAIL"){ //此處應該更新一下訂單狀態,商戶自行增刪操做 //$log_->log_result($log_name,"【業務出錯】:\n".$xml."\n"); } else{ //此處應該更新一下訂單狀態,商戶自行增刪操做 //$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); } //商戶自行增長處理流程, //例如:更新訂單狀態 //例如:數據庫操做 //例如:推送支付完成信息 } 7 更多安全信息和詳細信息就不列舉了
ecshop專題頁面添加關鍵詞_描述
ecshop專題頁面添加關鍵詞 描述 (紅色爲添加部分) 後臺管理模板topic_edit.htm <table width="90%" border="0" align="center" cellpadding="0" cellspacing="0" id="advanced-table" style="display:none;"> <tr> <td class="label">關鍵詞:</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"; } 數據庫 _topic 根目錄topic.php中找到「/* 模板賦值 */」在下面添加以下代碼 $smarty->assign('keywords', htmlspecialchars($topic['keywords'])); $smarty->assign('description', htmlspecialchars($topic['description']));
分級顯示會員價格
<!-- {foreach from=$rank_prices item=rank_price key=key} 會員等級對應的價格--> <!-- {if $key eq $smarty.session.user_rank} --> {$rank_price.rank_name}:</strong> <span class="vip">{$rank_price.price}</span> <!-- {/if} --> <!--{/foreach}-->
分析ecshop中ur_here.lbi的原理
cshop中,ur_here.lbi都是用來處理ecshop系統導航的.ecshop導航的全部規則,都是經過他來處理的。 ecshop中的導航欄目,都是經過id或者是url規則,來動態生成的。而ecshop模板中的ur_here.lb ecshop中,ur_here.lbi都是用來處理ecshop系統導航的.ecshop導航的全部規則,都是經過他來處理的。 ecshop中的導航欄目,都是經過id或者是url規則,來動態生成的。而ecshop模板中的ur_here.lbi就是負責來顯示該操做欄目的. 打開includes/lib_main.php中的assign_ur_here(). $page_title = $GLOBALS['_CFG']['shop_title'] . ' - ' . 'Powered by ECShop';是用來處理ecshop頁面標題的,而$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.而經過他,能夠取得對應語言好裏面的語言文字信息,也能夠靈活對他的url進行處理.若是是有分類的,他能夠循環的讀出他子類的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>'; } }
模板引擎實例
好比 程序裏面引用的最新商品模塊 對應的庫文件是:recomment_new.lbi 在php文件中 經過smarty賦值 new_goods 後 在 對於的模板文件中 只須要應用對應的值便可 這是最新商品的 庫文件 其實 咱們去掉 div標籤後 還原最簡單的代碼 {foreach from=$new_goods item=goods} {$goods.url} ======== 商品的連接 {$goods.thumb} ======== 商品的縮略圖 {$goods.short_style_name} ======== 商品的名稱 {$goods.promote_price} ======== 商品促銷價格 {$goods.shop_price} ======== 商品正式銷售價格 {/foreach} 其實 簡化的smarty模板引擎 比較簡單 具體的 能夠參考 smarty手冊
判斷用戶是否登陸
<!--若是會員登錄了{if $smarty.session.user_name}-- <!--{/if}-->
限定名稱長度
truncate:10
在 ecshop 首頁調用分類下面的商品屬性
在index.php中添加 $smarty->assign('filter_attr_list', filter_attr_list(2,'')); //2爲大分類ID function 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++) //獲取當前url中已選擇屬性的值,並保留在數組中 { $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中表明當前篩選屬性的位置變量賦值,並生成以‘.’分隔的篩選屬性字符串 $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相應的位置添加。 <!--組合搜索 開始--> <!--{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} --> <!--組合搜索 結束--> 效果。
foreach
{foreach},{foreachelse} {foreach} 用於像循環訪問一個數字索引數組同樣循環訪問一個關聯數組,與僅能訪問數字索引數組的{section}不一樣,{foreach}的語法比 {section}的語法簡單得多,可是做爲一個折衷方案也僅能用於單個數組。每一個{foreach}標記必須與關閉標記{/foreach}成對出現。 屬性 一、from 類型:array數組 必要性:Yes必要 默認值:n/a 描述:循環訪問的數組 二、item 類型:string字符串 必要性:Yes必要 默認值:n/a 描述:當前元素的變量名 三、key 類型:string字符串 必要性:No可選 默認值:n/a 描述:當前鍵名的變量名 四、name 類型:string字符串 必要性:No可選 默認值:n/a 描述:用於訪問foreach屬性的foreach循環的名稱 from 和item是必要屬性 {foreach}循環的name能夠是任何字母,數組,下劃線的組合,參考PHP變量。 {foreach}循環能夠嵌套,嵌套的{foreach}的名稱應當互不相同。 from屬性一般是值數組,被用於判斷{foreach}的循環次數。 在from 變量中沒有值時,將執行{foreachelse}。 {foreach}循環也有自身屬性的變量,能夠經過 {$smarty.foreach.name.property}訪問,其中"name"是name屬性。 注意:name屬性僅在須要訪問 {foreach}屬性時有效,與{section}不一樣。訪問未定義name的{foreach}屬性不會拋出一個錯誤,但將致使不可預知的結果。 {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屬性是關聯數組 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 設置一個數組,對於每一個鍵名對應的每一個循環值都包括鍵。 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: 3 phone: 555-4444 fax: 555-3333 cell: 760-1234 例五. 使用{foreachelse}的數據庫示例 一個數據庫(例如PEAR或ADODB)的搜索腳本示例, assign('results', $db->getAssoc($sql) ); ?> 藉助{foreachelse}標記在沒有結果時模板輸出"None found"字樣。 {foreach key=cid item=con from=$results} {$con.name} - {$con.nick} {foreachelse} No items were found in the search {/foreach} .index包含當前數組索引,從零開始。 例六. index示例 {* 每五行輸出一次頭部區塊 *} {foreach from=$items key=myId item=i name=foo} {if $smarty.foreach.foo.index % 5 == 0} {/if} {/foreach} Title {$i.label} iteration包含當前循環次數,與index不一樣,從1開始,每次循環增加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在當前{foreach}循環處於初始位置時值爲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在當前{foreach}循環處於最終位置是值爲TRUE。 例九. last屬性示例 {* 在列表結束時增長一個水平標記 *}) {foreach from=$items key=part_id item=prod name=products} {$prod} {if $smarty.foreach.products.last} {else},{/if} {foreachelse} ... content ... {/foreach} show是{foreach}的參數. show是一個布爾值。若是值爲FALSE,{foreach}將不被顯示。若是有對應的{foreachelse},將被顯示。 total包括 {foreach}將循環的次數,既能夠在{foreach}中使用,也能夠在以後使用。 例十. total屬性示例 {* 在結束位置顯示行數 *} {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} 與如下的代碼的區別,odd和enen的意義? {foreach from=$custid item=curr_id key=num} {if num%2==0} 幹啥 {else} 幹其餘的 {/if} {/foreach}
onclick
onclick="this.className='current'"
ECSHOP商品屬性,商品分類,商品類型,商品篩選,商品描述,商品圖片,商品列表,商品管理使用教程
文章標題 |
教程類別 |
添加日期 |
瀏覽量 |
2013-10-26 |
2892 |
||
2013-10-26 |
2496 |
||
2013-10-26 |
1912 |
||
2013-10-26 |
2097 |
||
2013-10-26 |
2230 |
||
2013-10-26 |
3754 |
||
2013-10-26 |
3244 |
||
2013-10-26 |
4068 |
||
2013-10-26 |
2768 |
||
2013-10-26 |
6990 |
||
2013-10-26 |
2591 |
||
2013-10-25 |
1639 |
||
2013-10-25 |
1656 |
||
2013-10-25 |
2012 |
||
2013-10-25 |
3778 |
||
2013-10-25 |
2528 |
||
2013-10-25 |
1910 |