zzxworld

使用 Zen Cart 搭建购物网站

昨天在体验 OpenCart 时,顺便提了一下 Zen Cart。之后搜了下,没想到它还健在。既然还在,那我今天就来介绍一下这个曾经让我又爱又恨的电商建站软件:Zen Cart。

老规矩,先说说它的安装流程。后面会给出我的使用体验和建议。

准备工作

Zen Cart 基于 PHP 语言开发,开始前需要先搭建好 PHP 运行环境。目前(2022-08)最新的 Zen Cart 版本为 1.5.7。这个版本对 PHP 要的要求为 7.3.19,建议使用 PHP 7.4。而且跟 WordPress 一样,需要启用 mysqli 扩展。

另外 Zen Cart 只支持 MySQL 数据库,所以还需要搭建好 MySQL 数据库环境。对于 MySQL 数据库的最低版本要求为 5.7.3,建议版本为 8。

安装 Zen Cart

首先到官网去下载源码:

上面地址打开后,右侧有下载连接。下载的文件为 zip 格式,下载到本地后解压,并把代码复制到 PHP 的运行环境。然后通过浏览器访问 /zc_install 目录。比如我是安装在本地开发环境的二级目录下,输入的访问地址为 http://localhost/zencart/zc_install。操作无误的话,应该会出现以下安装界面:

Installer-5.jpg

点击 「Continue」 继续,来到系统设置界面:

Installer-4.jpg

勾选最上面的选项框表示同意相关协议,继续 「Continue」,来到数据库设置界面:

Installer-3.jpg

根据自己的数据库信息进行配置,完成配置后,点击「Continue」按钮继续,来到设置管理员账号和密码的界面:

Installer-2.jpg

注意随机生成的管理员密码和后台目录名称,复制一下,等下登录后台会用到。最后再点一下 「Continue」,完成安装流程。

Installer-1.jpg

根据这个完成页面的提示,需要删除 zc_install 这个目录,留着会有数据被覆盖的风险。

默认的 Zen Cart 前台界面效果如下:

zencart-home.jpg

看起来比我多年前用的版本有了明显改善。不过演示用的商品数据一点都没变,皮克斯的《虫虫危机》和布鲁斯·威利斯的《虎胆龙威》依旧还在。

zencart-products.jpg

来看看后台:

Admin-Home.jpg

嗯,还是熟悉的味道,只是整体色调从绿色换成偏棕灰的色调。至此,Zen Cart 安装算是完成。

体验总结

从功能上来说,Zen Cart 是一个合格的购物网站搭建程序,开箱即用。而且依靠多年积累下来的名号,其周边的模板和插件也算丰富。单就这方面来说,是值得选择使用的。

如果需要在它上面做自定义的一些功能开发,那就十分不推荐了,因为从开发效率来衡量,投入精力和产出比太小。我对这玩意儿太熟了,从 2006 年用 Zen Cart 搭建第一个购物网站开始,后面三四年的时间每天都在和它打交道。一开始我对这个分分钟就能搭建出购物网站的程序非常有好感。但随着使用的深入,需要通过二次开发进行功能扩展的时候,痛苦就随之而来了。

来看看这样一段代码:

        <div class="floatButton">
          <button type="submit" class="btn btn-primary"><?php echo IMAGE_SAVE; ?></button> <a href="<?php echo zen_href_link(FILENAME_CATEGORY_PRODUCT_LISTING, 'cPath=' . $cPath . '&cID=' . $cInfo->categories_id . ((isset($_GET['search']) && !empty($_GET['search'])) ? '&search=' . $_GET['search'] : '')); ?>" class="btn btn-default" role="button"><?php echo IMAGE_CANCEL; ?></a>
        </div>
        <?php
        if ($action === 'edit_category') {
          ?>
          <div class="form-group">
              <?php echo zen_draw_label(TEXT_RESTRICT_PRODUCT_TYPE, 'restrict_type', 'class="col-sm-3 control-label"'); ?>
            <div class="col-sm-9 col-md-6">
                <?php echo zen_draw_pull_down_menu('restrict_type', $type_array, '', 'class="form-control" id="restrict_type"'); ?>
              <br>
              <input type="submit" name="add_type_all" class="btn btn-info" value="<?php echo BUTTON_ADD_PRODUCT_TYPES_SUBCATEGORIES_ON; ?>"> <input type="submit" name="add_type" class="btn btn-info" value="<?php echo BUTTON_ADD_PRODUCT_TYPES_SUBCATEGORIES_OFF; ?>">
            </div>
          </div>
          <?php
        }
        ?>
        <?php echo '</form>'; ?>
        <?php
        $restrict_types_query = "SELECT *
                                 FROM " . TABLE_PRODUCT_TYPES_TO_CATEGORY . "
                                 WHERE category_id = " . (int)$cInfo->categories_id;

这是我从 Zen Cart 后台的分类管理功能中截取出来的,格式没有做任何调整。你能看出这中间存在哪些问题吗?

这段代码让我十分的不爽。对我来说,主要存在这些问题:

  1. PHP 和 HTML 代码混杂在一起。
  2. 代码缩进没有标准,一会 2 个空格,一会儿又是 4 个。
  3. 该断行时不断行。
  4. 有的表单元素用了函数封装,有的又没有用。
  5. 看见那段输出 </form> 的代码了吗?这里非要用 PHP 代码输出的意义何在?

这是短短十多行代码就能找到的一些问题。如果去看一下完整的代码和逻辑,还能发现更多让人迷惑的行为。面对这种代码,我不知道各位看了是什么感觉,反正我是受不了。如果让我就此发表一下评论,那就是我见过开源项目中「屎山」级别的存在。

那么都过去十多年了,目前的 Zen Cart 在这方面有所改观吗?没有!上面的代码就出自最新的 1.5.7 版本。可见 Zen Cart 的开发团队完全没有从根本上优化其代码结构的意愿,这在我看来完全是得过且过的吃老本行为。

如果你想要用 Zen Cart 架设新的电商购物网站,请务必三思。除非你笃定认为只需要用到它的默认功能,不需要动任何代码。否则我还是建议考虑其他的选择。比如 OpenCart 在这方面就好多了。

使用 Flarum 搭建社交论坛

PHP 生态下的开源程序真是繁荣,一连几天体验了各种不同类型的开源建站程序,大部分都是基于 PHP 语言。今天要尝试的这款搭建论坛的程序也是,它的名字叫 Flarum。

使用 OpenCart 搭建购物网站

连续体验了两天博客类的建站软件,有点乏了。换换口味,来看看搭建电商购物网站的软件,今天要尝试的是 OpenCart。

使用 Typecho 搭建个人博客网站

开源程序体验第二篇,今天来尝试一个从功能上看和 WordPress 很像的建站程序:Typecho。

安装和使用 WordPress

最近准备开始体验一些开源的 Web 程序,所以接下来会分享一些相关体验文章。内容会涵盖安装和一些基础性的功能使用介绍,以及个人想法。作为这个系列文章的第一篇,就献给人气爆棚的 WordPress 了。

2 条评论

  1. 不吐不快
    结合自己折腾PHP的一点儿感受,这种混乱的开源框架修改起来真的是非常恶心,但是机器能跑,修他干啥的玩意儿竟然能坚持这么多年也是好奇
    • zzxworld
      这种开源软件诞生时也是有时代背景,只是后面在代码层面没能跟上时代的发展。