我们在制作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:

  1. 来自damon的zencart二次开发教程-《序》
  2. 来自damon的zencart二次开发教程-1.zencart错误的调试及汇总
  3. 来自damon的zencart二次开发教程-3.1开发自己的zencart模板
  4. Oscommerce网站搬家配置问题解决

转载于:https://blog.51cto.com/phpcnm/1184834

来自damon的zencart二次开发教程-2.2登录模块分析相关推荐

  1. 来自damon的zencart二次开发教程-3.2复制模板(仿站)操作教程

    用zencart来复制别人的网站成本低,效率高.前面我发了一篇有关开发自己的zencat模板的文章(<来自damon的zencart二次开发教程-3.1开发自己的zencart模板>),里 ...

  2. 来自damon的zencart二次开发教程-3.1开发自己的zencart模板

    转载自:http://www.yunxiu.org/blog/ 今天在网上FQ看到一篇老外写的,关于制作zencart模板的文章.<Creating a new Zen Cart Templat ...

  3. shopify二次开发教程_详细教程:如何将Shopify的Storefront API与React和Redux结合使用...

    shopify二次开发教程 by Chris Frewin 克里斯·弗里温(Chris Frewin) 详细教程:如何将Shopify的Storefront API与React和Redux结合使用 ( ...

  4. HyperMesh二次开发教程 - 前言

    HyperMesh二次开发教程 前言   笔者从事HyperMesh开发有近5年时间,最初由于兴趣和工作需要自学HyperMesh二次开发,也完成了从仿真工程师到商业CAE仿真软件二次开发工程师的职位 ...

  5. UG二次开发教程(基于NX12.0/VS2015版本)

    ** UG二次开发教程(基于NX12.0/VS2015版本) 安装教程 ** UG NX12.0安装 NX12.0 安装包下载地址: 链接:https://pan.baidu.com/s/1I0CCF ...

  6. pythoncad二次开发视频_revit二次开发|bim软件二次开发|revit二次开发教程|Revit二次开发技术文档...

    二次开发 revit二次开发|bim软件二次开发|revit二次开发教程|Revit二次开发技术文档2019-07-08赞( 0 ) 记录一下CAD二次开发的一些简单实例. 1.helloworld ...

  7. Revit二次开发教程提纲

    本文提供Revit二次开发教程提纲,教程内容包括下列部分 前言--BIM开发需要用到的技术 .NET及C#的基本介绍 1.1 基本语法 1.2 版本介绍 1.3 Visual Studio 1.4 C ...

  8. Django 3.2.5博客开发教程:实现模板之前的分析与准备

    在之前的体验django模板.体验数据查询以及一些常用的模板使用方法文章里,向大家介绍了如何将数据库的数据展现到网页上,和一些简单的模板使用方法.之后我们就开始实现各种页面的展现. 在此之前,我们先从 ...

  9. 最好最实用的二次开发教程 cms

    ◆二次开发 什么是二次开发? 二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能和效果,一 般来说都不会改变原有系统的内核. 为什么要二次开发? 随着信息化技术的不断 ...

最新文章

  1. MySQL BIT、BINARY、VARBINARY、BLOB(二进制类型)
  2. 专辑一:爱之初体验(初级)
  3. 也谈Spring MVC
  4. linux 目录大小是12288,为什么有些目录数的引用超过3,为什么很多目录的大小都是4096...
  5. [Leetcode]62. Unique Paths
  6. java csv 数组_如何在Java中将JSON数组转换为CSV?
  7. B - Dungeon Master
  8. Windows 7 下 QT5 开发环境搭建
  9. java假设模拟请求重新启动路由器(网络爬虫经常使用),还有java怎样下载图片
  10. 创龙TI TMS320C6748定点/浮点DSP C674xSD卡接口、拓展IO信号
  11. 知识点 - 快速沃尔什变换
  12. 2021年金属非金属矿山(地下矿山)主要负责人模拟考试题库及金属非金属矿山(地下矿山)主要负责人复审模拟考试
  13. 【HUST】网络攻防实践|5_二进制文件补丁技术|实验二 getshell
  14. ExpandableListView 去掉默认箭头,设置成别的图片
  15. MybatisPlus 通用CRUD操作
  16. html5跟随手指的小球,Android自定义圆形View实现小球跟随手指移动效果(详细介绍)...
  17. 如何进行有效的大数据处理、分析?
  18. 20150317 实习之——余世维视频(上)
  19. abp+dapper+mysql_ABP架构学习系列四:集成Dapper
  20. FTP 传送文件到远程服务器

热门文章

  1. 2017 ACM-ICPC 亚洲区(西安赛区)网络赛
  2. Cleaver快速制作网页PPT
  3. WP老杨解迷:可知评论系统还能勾搭用户呢
  4. Android setTag()/getTag()
  5. ECLIPSE3.2安装 + 汉化 + 配置SWT DESIGNER6.2.0
  6. 函数模块:POPUP_TO_INFORM
  7. 突然想起来,前天是感恩节。
  8. arcengine坐标转换[转]
  9. 697. Degree of an Array 频率最高元素的最小覆盖子数组
  10. PO、BO、VO、DTO、POJO、DAO的区别