第一部分:基础概念与准备工作

在开始之前,你需要了解几个关键概念,并做好准备工作。

zencart 邮件模板修改
(图片来源网络,侵删)

Zen Cart 邮件系统的工作原理

Zen Cart 的邮件内容是“分离”的,邮件的HTML结构(骨架)存储在 .html 文件中,而(如订单详情、产品名称)则由对应的 .php 文件填充。

  • HTML 模板文件:定义了邮件的布局、样式、颜色和图片。email_template.html 定义了所有邮件的通用外观。
  • PHP 内容文件:定义了邮件的具体内容。order.php 包含了订单确认邮件的所有文字信息,如“尊敬的 [客户姓名]...”。
  • 语言文件:存储了邮件中使用的静态文本,如“订单确认”、“感谢您的惠顾”等,位于 includes/languages/your-language/ 目录下。

准备工作

  1. FTP/SFTP 客户端:你需要一个 FTP 工具(如 FileZilla)来连接到你的服务器。
  2. 文本编辑器:强烈推荐使用专业的代码编辑器,如 VS CodeSublime TextNotepad++切勿使用 Word 等文字处理软件,它们会破坏代码格式。
  3. Zen Cart 后台管理员权限:用于修改一些基础设置。
  4. 网站备份在修改任何文件之前,请务必备份你的整个网站,特别是 includesadmin 目录,这是最重要的安全步骤!

第二部分:修改邮件的 HTML 模板(改变外观)

这部分主要修改邮件的“脸面”,包括颜色、字体、Logo 和布局。

找到 HTML 模板文件

Zen Cart 的默认邮件模板文件位于: /includes/templates/template_default/templates/email/

如果你使用了自定义模板(my_custom_template),那么文件路径会变为: /includes/templates/my_custom_template/templates/email/

zencart 邮件模板修改
(图片来源网络,侵删)

email 目录下,你会看到类似 email_template.htmlemail_template_extra.html 等文件。

  • email_template.html:这是主模板文件,绝大多数邮件(如订单确认、账户创建)都使用它作为基础。
  • email_template_extra.html:用于一些额外的邮件,如密码重置、新客户欢迎邮件等。

最佳实践:不要直接修改 template_default 里的文件,你应该复制 template_default 下的 email 文件夹,然后粘贴到你正在使用的自定义模板目录中(/includes/templates/my_custom_template/templates/),这样,你的修改就不会在升级 Zen Cart 时被覆盖。

修改 HTML 模板(以 email_template.html 为例)

用你的文本编辑器打开 email_template.html 文件,它是一个标准的 HTML 文件,你可以像修改普通网页一样修改它。

常见的修改项:

  • 添加 Logo: 在 <body> 标签后找到 <h1> 标签,将你的 Logo 图片链接替换掉默认的 Zen Cart Logo。

    <!-- 原始代码 -->
    <h1><a href="{$store_url}"><img src="{$logo}" alt="{$store_name}" /></a></h1>
    <!-- 修改后 (替换 logo.png 为你的Logo文件名) -->
    <h1><a href="{$store_url}"><img src="{$logo}" alt="{$store_name}" /></a></h1>

    你的 Logo 文件应该放在 /includes/templates/你的模板/images/ 目录下。

  • 修改颜色: 找到 <style> 标签,修改 CSS 属性。

    /* 原始代码 */
    body { background-color: #f7f7f7; color: #555555; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.5; }
    h1, h2, h3 { color: #333333; }
    a { color: #0066cc; }
    /* 修改后 (将主色调改为绿色) */
    body { background-color: #f7f7f7; color: #555555; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.5; }
    h1, h2, h3 { color: #2e7d32; } /* 绿色 */
    a { color: #2e7d32; text-decoration: none; } /* 绿色链接,无下划线 */
  • 修改页眉/页脚文字: 直接在 HTML 中找到 <p> 标签并修改其中的文字。

    <!-- 原始代码 -->
    <p>如果您有任何问题,请随时回复此邮件。</p>
    <!-- 修改后 -->
    <p>如果您对订单有任何疑问,欢迎随时通过客服热线 400-xxx-xxxx 联系我们。</p>
  • 添加页脚签名或免责声明: 在邮件末尾的 {$FOOTER} 变量之后添加。

    ...
    <p>{$FOOTER}</p>
    <!-- 在这里添加你的自定义内容 -->
    <hr>
    <p style="font-size: 12px; color: #888;">
      本邮件由系统自动发送,请勿直接回复。<br>
      © {$year} {$store_name}. 保留所有权利。
    </p>
    ...

保存文件并测试

  1. 保存修改后的 email_template.html 文件。
  2. 登录你的 Zen Cart 后台,访问 工具 -> 店铺 -> 邮件
  3. 点击 “发送测试邮件”,将测试邮件发送到你自己的邮箱,查看修改效果。

第三部分:修改邮件的 PHP 内容(改变文字信息)

这部分主要修改邮件中显示的动态文字,尊敬的 [客户姓名]”或“您的订单 [订单号] 已创建”。

找到 PHP 内容文件

这些文件位于: /includes/modules/pages/your-page-name/

订单确认邮件的内容文件是: /includes/modules/pages/checkout_process/checkout_process.php

  • account.php:账户创建/更新邮件
  • password_forgotten.php:密码重置邮件
  • contact_us.php:联系我们表单提交通知邮件
  • checkout_process.php:订单确认邮件

修改 PHP 内容文件

打开 checkout_process.php,你会看到类似这样的代码:

// ... 一些代码 ...
  $email_html = $smarty->fetch(CURRENT_TEMPLATE . '/templates/email/checkout_process.html'); // 加载HTML模板
  $email_text = $smarty->fetch(CURRENT_TEMPLATE . '/templates/email/checkout_process.html'); // 加载文本模板
  // 邮件主题
  $email_subject = EMAIL_SUBJECT_ORDER_CONFIRMATION;
  // 邮件正文内容 (HTML)
  $HTML = '<strong>' . ENTRY_GUEST . ' ' . $order->customer['name'] . '</strong>,';
  $HTML .= '<br />' . TEXT_EMAIL_THANKS_FOR_SHOPPING . '<br /><br />';
  $HTML .= TEXT_EMAIL_FOLLOWING_IS . '<br /><br />';
  $HTML .= '<strong>' . ENTRY_ORDER_NUMBER . ' ' . $order->info['order_number'] . '</strong><br />';
  $HTML .= '<strong>' . ENTRY_DATE_ORDERED . ' ' . zen_date_long($order->info['date_purchased']) . '</strong><br /><br />';
  // ... 更多内容 ...
  // 邮件正文内容 (纯文本)
  $TEXT = ENTRY_GUEST . ' ' . $order->customer['name'] . ",\n\n";
  $TEXT .= TEXT_EMAIL_THANKS_FOR_SHOPPING . "\n\n";
  $TEXT .= TEXT_EMAIL_FOLLOWING_IS . "\n\n";
  $TEXT .= ENTRY_ORDER_NUMBER . ' ' . $order->info['order_number'] . "\n";
  $TEXT .= ENTRY_DATE_ORDERED . ' ' . zen_date_long($order->info['date_purchased']) . "\n\n";
  // ... 更多内容 ...
  // 发送邮件
  zen_mail($order->customer['name'], $order->customer['email_address'], $email_subject, $HTML, $TEXT, $from, $from, $attachments, true);
// ... 一些代码 ...

常见的修改项:

  • 修改问候语: 找到 $HTML$TEXT 变量,修改它们开头的字符串。

    // 原始代码
    $HTML = '<strong>' . ENTRY_GUEST . ' ' . $order->customer['name'] . '</strong>,';
    $TEXT = ENTRY_GUEST . ' ' . $order->customer['name'] . ",";
    // 修改后 (假设你的语言文件中定义了 MY_DEAR_CUSTOMER)
    $HTML = '<strong>' . MY_DEAR_CUSTOMER . ' ' . $order->customer['name'] . '</strong>,';
    $TEXT = MY_DEAR_CUSTOMER . ' ' . $order->customer['name'] . ",";
  • 添加自定义信息: 在 $HTML$TEXT 变量中直接添加你的文字。

    // 在 $HTML 中添加
    $HTML .= '<br /><br />';
    $HTML .= '<p style="color: #e74c3c;">温馨提示:您的订单预计将在 3 个工作日内发货。</p>';
    // 在 $TEXT 中添加 (纯文本版本)
    $TEXT .= "\n\n";
    $TEXT .= "温馨提示:您的订单预计将在 3 个工作日内发货,\n";
  • 使用语言常量: 为了便于多语言管理和维护,建议将所有静态文本都定义在语言文件中,然后在 PHP 文件中调用。

    1. 打开你的语言文件:/includes/languages/your-language/checkout_process.php
    2. 添加一个常量:define('MY_CUSTOM_MESSAGE', '您的订单预计将在 3 个工作日内发货。');
    3. checkout_process.php 中使用它:
      $HTML .= '<p style="color: #e74c3c;">' . MY_CUSTOM_MESSAGE . '</p>';
      $TEXT .= "\n" . MY_CUSTOM_MESSAGE . "\n";

第四部分:常见问题与高级技巧

邮件中显示乱码?

  • 编码问题:确保你的 HTML 文件开头有正确的字符编码声明:<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  • Zen Cart 后台设置:进入 工具 -> 商店 -> 邮件,检查“字符集”是否设置为 UTF-8

如何添加自定义字段(如自定义发票抬头)?

这需要更深入的修改,通常涉及修改 checkout_process.php 和数据库。

  1. 修改 PHP 文件:在 $HTML$TEXT 中添加你的自定义字段,假设你已经通过某种方式(如插件或手动)将自定义字段值存储在 $order->info['custom_invoice_title'] 中。
    $HTML .= '<br /><strong>' . '发票抬头:' . '</strong> ' . $order->info['custom_invoice_title'] . '<br />';
    $TEXT .= "\n" . '发票抬头:' . $order->info['custom_invoice_title'] . "\n";
  2. 修改数据库:你可能需要修改 orders 表结构,添加一个新的列来存储这个自定义字段。

使用邮件模板插件

如果你觉得手动修改很麻烦,可以考虑使用邮件模板插件,"Ultimate Email Styler" 或其他类似插件,这些插件通常提供一个后台界面,让你可以像编辑网页一样可视化地设计邮件模板,无需直接修改代码。


修改 Zen Cart 邮件模板的核心思路是:

  1. 外观修改 -> 编辑 .html 文件(推荐在自定义模板中操作)。
  2. 内容修改 -> 编辑 .php 文件(或对应的语言文件)。
  3. 安全第一 -> 任何操作前都先备份。
  4. 测试验证 -> 每次修改后都通过后台发送测试邮件来检查效果。

希望这份详细的指南能帮助你成功修改 Zen Cart 的邮件模板!