首页 > 解决方案 > OpenCart 3 + Journal 3,从客人结帐中删除电子邮件字段?

问题描述

我想从客人的结帐页面中删除电子邮件字段,我使用OpenCart 3和主题Journal 3。那我能做什么?

我试图从guest.php中调用它,但仍然无法正常工作。

标签: phpopencartopencart-3journal

解决方案


您不能只删除电子邮件字段。许多系统属性在结帐时连接到电子邮件,尽管使用 journal3 使电子邮件的提取更加复杂。

您可以在 Journal Quick Checkout 中查看可以打开/切换哪些字段:

日记 > 皮肤 > 结帐


更新

要在 Journal 3 Quick Checkout 中为访客禁用电子邮件:

转到/catalog/view/theme/journal3/template/journal3/checkout/register.twig

寻找

{# customer email #}

<div class="form-group required account-email">
  <label class="control-label" for="input-email">{{ entry_email }}</label>
  <input v-model="order_data.email" type="text" name="email" value="" placeholder="{{ entry_email }}" id="input-email" class="form-control"/>
  <span class="text-danger" v-if="error && error.email" v-html="error.email"></span>
</div>

添加支票,例如密码v-if="account === 'register'"。新代码是

{# customer email #}

<div v-if="account === 'register'" class="form-group required account-email">
  <label class="control-label" for="input-email">{{ entry_email }}</label>
  <input v-model="order_data.email" type="text" name="email" value="" placeholder="{{ entry_email }}" id="input-email" class="form-control"/>
  <span class="text-danger" v-if="error && error.email" v-html="error.email"></span>
</div>

现在转到/catalog/controller/journal3/checkout.php并找到

    // email
    if ((utf8_strlen(Arr::get($this->request->post, 'order_data.email')) > 96) || !filter_var(Arr::get($this->request->post, 'order_data.email'), FILTER_VALIDATE_EMAIL)) {
        $error['email'] = $this->language->get('error_email');
    } else if (($this->session->data['account'] === 'register') && $this->model_account_customer->getTotalCustomersByEmail(Arr::get($this->request->post, 'order_data.email'))) {
        $error['email'] = $this->language->get('error_exists');
    }

用。。。来代替

    // email
    if ($this->session->data['account'] === 'register') {
        if ((utf8_strlen(Arr::get($this->request->post, 'order_data.email')) > 96) || !filter_var(Arr::get($this->request->post, 'order_data.email'), FILTER_VALIDATE_EMAIL)) {
            $error['email'] = $this->language->get('error_email');
        } else if (($this->session->data['account'] === 'register') && $this->model_account_customer->getTotalCustomersByEmail(Arr::get($this->request->post, 'order_data.email'))) {
            $error['email'] = $this->language->get('error_exists');
        }
    }

推荐阅读