来自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:
- 来自damon的zencart二次开发教程-《序》
- 来自damon的zencart二次开发教程-1.zencart错误的调试及汇总
- 来自damon的zencart二次开发教程-3.1开发自己的zencart模板
- Oscommerce网站搬家配置问题解决
转载于:https://blog.51cto.com/phpcnm/1184834
来自damon的zencart二次开发教程-2.2登录模块分析相关推荐
- 来自damon的zencart二次开发教程-3.2复制模板(仿站)操作教程
用zencart来复制别人的网站成本低,效率高.前面我发了一篇有关开发自己的zencat模板的文章(<来自damon的zencart二次开发教程-3.1开发自己的zencart模板>),里 ...
- 来自damon的zencart二次开发教程-3.1开发自己的zencart模板
转载自:http://www.yunxiu.org/blog/ 今天在网上FQ看到一篇老外写的,关于制作zencart模板的文章.<Creating a new Zen Cart Templat ...
- shopify二次开发教程_详细教程:如何将Shopify的Storefront API与React和Redux结合使用...
shopify二次开发教程 by Chris Frewin 克里斯·弗里温(Chris Frewin) 详细教程:如何将Shopify的Storefront API与React和Redux结合使用 ( ...
- HyperMesh二次开发教程 - 前言
HyperMesh二次开发教程 前言 笔者从事HyperMesh开发有近5年时间,最初由于兴趣和工作需要自学HyperMesh二次开发,也完成了从仿真工程师到商业CAE仿真软件二次开发工程师的职位 ...
- UG二次开发教程(基于NX12.0/VS2015版本)
** UG二次开发教程(基于NX12.0/VS2015版本) 安装教程 ** UG NX12.0安装 NX12.0 安装包下载地址: 链接:https://pan.baidu.com/s/1I0CCF ...
- pythoncad二次开发视频_revit二次开发|bim软件二次开发|revit二次开发教程|Revit二次开发技术文档...
二次开发 revit二次开发|bim软件二次开发|revit二次开发教程|Revit二次开发技术文档2019-07-08赞( 0 ) 记录一下CAD二次开发的一些简单实例. 1.helloworld ...
- Revit二次开发教程提纲
本文提供Revit二次开发教程提纲,教程内容包括下列部分 前言--BIM开发需要用到的技术 .NET及C#的基本介绍 1.1 基本语法 1.2 版本介绍 1.3 Visual Studio 1.4 C ...
- Django 3.2.5博客开发教程:实现模板之前的分析与准备
在之前的体验django模板.体验数据查询以及一些常用的模板使用方法文章里,向大家介绍了如何将数据库的数据展现到网页上,和一些简单的模板使用方法.之后我们就开始实现各种页面的展现. 在此之前,我们先从 ...
- 最好最实用的二次开发教程 cms
◆二次开发 什么是二次开发? 二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能和效果,一 般来说都不会改变原有系统的内核. 为什么要二次开发? 随着信息化技术的不断 ...
最新文章
- MySQL BIT、BINARY、VARBINARY、BLOB(二进制类型)
- 专辑一:爱之初体验(初级)
- 也谈Spring MVC
- linux 目录大小是12288,为什么有些目录数的引用超过3,为什么很多目录的大小都是4096...
- [Leetcode]62. Unique Paths
- java csv 数组_如何在Java中将JSON数组转换为CSV?
- B - Dungeon Master
- Windows 7 下 QT5 开发环境搭建
- java假设模拟请求重新启动路由器(网络爬虫经常使用),还有java怎样下载图片
- 创龙TI TMS320C6748定点/浮点DSP C674xSD卡接口、拓展IO信号
- 知识点 - 快速沃尔什变换
- 2021年金属非金属矿山(地下矿山)主要负责人模拟考试题库及金属非金属矿山(地下矿山)主要负责人复审模拟考试
- 【HUST】网络攻防实践|5_二进制文件补丁技术|实验二 getshell
- ExpandableListView 去掉默认箭头,设置成别的图片
- MybatisPlus 通用CRUD操作
- html5跟随手指的小球,Android自定义圆形View实现小球跟随手指移动效果(详细介绍)...
- 如何进行有效的大数据处理、分析?
- 20150317 实习之——余世维视频(上)
- abp+dapper+mysql_ABP架构学习系列四:集成Dapper
- FTP 传送文件到远程服务器
热门文章
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛
- Cleaver快速制作网页PPT
- WP老杨解迷:可知评论系统还能勾搭用户呢
- Android setTag()/getTag()
- ECLIPSE3.2安装 + 汉化 + 配置SWT DESIGNER6.2.0
- 函数模块:POPUP_TO_INFORM
- 突然想起来,前天是感恩节。
- arcengine坐标转换[转]
- 697. Degree of an Array 频率最高元素的最小覆盖子数组
- PO、BO、VO、DTO、POJO、DAO的区别