来自damon的zencart二次开发教程-2.2登录模块分析
我們在制作zencart的模板時,經常會遇到需要將zencart的登陸頁面與注冊賬戶頁面分離的情況(在 默認情況下,點擊"Login"按鈕會進入登陸頁面與注冊賬號頁面,登錄zencart之后,Login按鈕會變成一組按鈕 "Log Out My Account Shopping Cart Checkout")。我們如果要改成這樣一種功能:在點擊Login的時候,登錄頁面與注冊頁面分別顯示(即只顯示登陸頁,在登陸框旁邊出現一個注冊按 鈕),登錄成功后,Login按鈕變成Login Off,同時底部的Account變成My Account。
其實要實現第一點,即登陸頁面與注冊賬戶頁面分離,我們只要在后臺Admin ->?Use split-login page 將 "false"變成"true"就OK了。
接下來的功能實現,要充分利用zencart的登錄模塊,讓我們先看一段代碼:
<ul class="back"> //查詢用戶是否登錄 <?php if ($_SESSION['customer_id']) { ?><li><a href="<?php echo zen_href_link(FILENAME_LOGOFF, '', 'SSL'); ?>"><?php echo HEADER_TITLE_LOGOFF; ?></a></li><li><a href="<?php echo zen_href_link(FILENAME_ACCOUNT, '', 'NONSSL'); ?>"><?php echo HEADER_TITLE_MY_ACCOUNT; ?></a></li> <?php} else {if (STORE_STATUS == '0') { ?><li><a href="<?php echo zen_href_link(FILENAME_LOGIN, '', 'SSL'); ?>"><?php echo HEADER_TITLE_LOGIN; ?></a></li> <?php } } ?> //購物車中商品不能為0 <?php if ($_SESSION['cart']->count_contents() != 0) { ?><li><a href="<?php echo zen_href_link(FILENAME_SHOPPING_CART, '', 'NONSSL'); ?>"><?php echo HEADER_TITLE_CART_CONTENTS; ?></a></li><li><a href="<?php echo zen_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'); ?>"><?php echo HEADER_TITLE_CHECKOUT; ?></a></li> <?php }?> </ul>其中 $_SESSION['customer_id'] 是當前登錄的用戶ID。
$_SESSION['cart']->count_contents()用于判斷購物車中是否有商品。
函數zen_href_link( $page,$parameters,$connection,$add_session_id,$search_engine_safe,$static,$use_dir_ws_catalog ),主要用于輸出超級鏈接。使用此函數好處在于使用偽靜態插件后,輸出鏈接就會自動偽靜態。
$page , 這個變量通常由 /includes/filename.php 文件中的常量取得,代表的是鏈接中main_page的值,
如:zen_href_link(FILENAME_CONTACT_US) ,即使聯系我們頁面鏈接 index.php?main_page=contact_us
$parameters ,傳遞的參數,用&符前面生成的url鏈接
zen_href_link(’products’, ‘id=1′),那么index.php?main_page=products&id=1
$connection , 鏈接方式,即是否https,默認是http
如zen_href_link(FILENAME_LOGIN, '', 'SSL'),在有SSL證書時(空間服務商提供ssl證書,打開ssl設置需要將 \includes\configure.php 和 \admin\includes\configure.php 中的 SSL設定為 enable),就會是https://www.xxx.com/index.php?main_page=login
$add_session_id ,?url 最后跟了一串形如zenid=XXXXX的內容,這是服務器給每個訪客分配一個標識,zencart在服務器上針對每個訪客保存一份資料,例如訪客最后瀏覽的頁面、時間、購物車里的商品、選擇的貨幣、語言等等.
$search_engine_safe ?, 作用是將特殊字符,轉換為/
$static ?,靜態化參數
$use_dir_ws_catalog ?, 網站在二級目錄時,鏈接的方式
既然,我們已經知道了登錄按鈕出現原理,我們只需要按照登錄模塊代碼的邏輯稍微改一下,就可以實現自己想要的功能了。
<ul class="back"> <?php if ($_SESSION['customer_id']) { ?><li><a href="<?php echo zen_href_link(FILENAME_LOGOFF, '', 'SSL'); ?>"><?php echo HEADER_TITLE_LOGOFF; ?></a></li><li><a href="<?php echo zen_href_link(FILENAME_ACCOUNT, '', 'NONSSL'); ?>"><?php echo HEADER_TITLE_MY_ACCOUNT; ?></a></li> <?php} else {if (STORE_STATUS == '0') { ?><li><a href="<?php echo zen_href_link(FILENAME_LOGIN, '', 'SSL'); ?>"><?php echo HEADER_TITLE_LOGIN; ?></a></li><li><a href="<?php echo zen_href_link(FILENAME_CREATE_ACCOUNT, '', 'NONSSL'); ?>"><?php echo HEADER_TITLE_CREATE_ACCOUNT; ?></a></li> <?php } } ?> <?php if ($_SESSION['cart']->count_contents() != 0) { ?><li><a href="<?php echo zen_href_link(FILENAME_SHOPPING_CART, '', 'NONSSL'); ?>"><?php echo HEADER_TITLE_CART_CONTENTS; ?></a></li><li><a href="<?php echo zen_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'); ?>"><?php echo HEADER_TITLE_CHECKOUT; ?></a></li> <?php }?><li><a href="<?php echo zen_href_link(FILENAME_REVIEWS, '', 'NONSSL'); ?>"><?php echo HEADER_TITLE_TESTIMONIALS; ?></a></li><li><a href="<?php echo zen_href_link(FILENAME_CONTACT_US, '', 'NONSSL'); ?>"><?php echo HEADER_TITLE_CONTACT_US; ?></a></li><li><a href="<?php echo zen_href_link(FILENAME_GV_FAQ, '', 'NONSSL'); ?>"><?php echo HEADER_TITLE_GV_FAQ; ?></a></li> </ul>依據上面介紹的zen_href_link()函數,我們可以為頂部與Login按鈕并列的地方加入更多的導航按鈕。
原創文章,轉載請注明: 轉載自電商沙龍ec-shalom.com,專研電商藝術。
本文鏈接地址: 來自damon的zencart二次開發教程-2.2登錄模塊分析
Related posts:
轉載于:https://blog.51cto.com/phpcnm/1184834
總結
以上是生活随笔為你收集整理的来自damon的zencart二次开发教程-2.2登录模块分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux关机命令详解
- 下一篇: C#模板方法模式