在OpenCart 3.x的产品描述页面中添加自定义字段

问题描述 投票:1回答:2

我想通过添加其他字段来自定义基于OpenCart的站点的产品描述页面,但是我无法对描述描述页面的文件进行罚款。我已经检查过[[catalog / view / theme /(mytemplate)/product/product.twig文件,但这不是我的产品描述页面的文件。

opencart opencart-3
2个回答
0
投票
[在OpenCart 3.x中编辑.twig文件时,您经常会遇到Twig缓存问题。您将编辑文件,但看不到任何更改。

为避免这种情况,1.进入管理面板2.在右上角单击齿轮图标。3.关闭树枝缓存。

让我知道这是否有帮助?


0
投票
在产品描述OpenCart 3.X(多语言)中添加新字段。在右上角的Admin的

Dashboard上,单击Gear图标。在弹出窗口中,将

Cache关闭(同时关闭)并刷新。这是必需的,以便可以看到编辑结果。

1。首先,您需要在数据库中添加一个新字段。使用

phpMyAdmin

打开数据库,找到表oc_product_description(oc_-是我的前缀,请使用您的前缀)。打开oc_product_description时,打开SQL选项卡并编写(不要忘记将oc_更改为数据库前缀):

ALTER TABLE `oc_product_description` ADD `subtitle` VARCHAR(255) NOT NULL AFTER `name`; 这将添加新列

字幕。

2。版本管理模型

admin / model / catalog / product.php

查找(≈12行)foreach ($data['product_description'] as $language_id => $value) { $this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', description = '" . $this->db->escape($value['description']) . "', tag = '" . $this->db->escape($value['tag']) . "', meta_title = '" . $this->db->escape($value['meta_title']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "'"); }

替换为

foreach ($data['product_description'] as $language_id => $value) {
  $this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', subtitle = '" . $this->db->escape($value['subtitle']) . "', description = '" . $this->db->escape($value['description']) . "', tag = '" . $this->db->escape($value['tag']) . "', meta_title = '" . $this->db->escape($value['meta_title']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "'");
}

查找(≈146行)

foreach ($data['product_description'] as $language_id => $value) {
  $this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', description = '" . $this->db->escape($value['description']) . "', tag = '" . $this->db->escape($value['tag']) . "', meta_title = '" . $this->db->escape($value['meta_title']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "'");
}

替换为

foreach ($data['product_description'] as $language_id => $value) {
  $this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', subtitle = '" . $this->db->escape($value['subtitle']) . "', description = '" . $this->db->escape($value['description']) . "', tag = '" . $this->db->escape($value['tag']) . "', meta_title = '" . $this->db->escape($value['meta_title']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "'");
}

查找(≈432行)

$product_description_data[$result['language_id']] = array(
  'name'             => $result['name'],

在下面添加

  'subtitle'         => $result['subtitle'],

3。版本管理模型

admin / controller / catalog / product.php

查找(≈500行)if (isset($this->error['name'])) { $data['error_name'] = $this->error['name']; } else { $data['error_name'] = array(); }

在下面添加

if (isset($this->error['subtitle'])) {
  $data['error_subtitle'] = $this->error['subtitle'];
} else {
  $data['error_subtitle'] = array();
}

查找

if ((utf8_strlen($value['name']) < 1) || (utf8_strlen($value['name']) > 255)) {
  $this->error['name'][$language_id] = $this->language->get('error_name');
}

在下面添加

if (utf8_strlen($value['subtitle']) > 255) {
  $this->error['subtitle'][$language_id] = $this->language->get('error_subtitle');
}

4。编辑管理员语言

管理员/语言/ zh-gb(或您的管理员语言)/catalog/product.php

末尾添加$_['entry_subtitle'] = 'Product Subtitle'; $_['error_subtitle'] = 'Product Subtitle must less than 255 characters!';

5。版本管理员视图

admin / view / template / catalog / product_form.twig

查找(≈50行)<div class="form-group required"> <label class="col-sm-2 control-label" for="input-name{{ language.language_id }}">{{ entry_name }}</label> <div class="col-sm-10"> <input type="text" name="product_description[{{ language.language_id }}][name]" value="{{ product_description[language.language_id] ? product_description[language.language_id].name }}" placeholder="{{ entry_name }}" id="input-name{{ language.language_id }}" class="form-control"/> {% if error_name[language.language_id] %} <div class="text-danger">{{ error_name[language.language_id] }}</div> {% endif %} </div> </div>

在下面添加

<div class="form-group">
  <label class="col-sm-2 control-label" for="input-name{{ language.language_id }}">{{ entry_subtitle }}</label>
  <div class="col-sm-10">
    <input type="text" name="product_description[{{ language.language_id }}][subtitle]" value="{{ product_description[language.language_id] ? product_description[language.language_id].subtitle }}" placeholder="{{ entry_subtitle }}" id="input-subtitle{{ language.language_id }}" class="form-control"/>
    {% if error_subtitle[language.language_id] %}
      <div class="text-danger">{{ error_subtitle[language.language_id] }}</div>
    {% endif %} </div>
</div>

现在,在编辑或添加产品时,我们可以在管理面板中看到新字段。

最后,我们将编辑客户端。 

6。版本客户模型

catalog / model / catalog / product.php

查找(≈10行)if ($query->num_rows) { return array( 'product_id' => $query->row['product_id'], 'name' => $query->row['name'],

在下面添加

'subtitle'         => $query->row['subtitle'],

7。 Edition客户控制器

catalog / controller / product / product.php

查找(≈228行)$data['heading_title'] = $product_info['name'];

在下面添加

$data['subtitle'] = $product_info['subtitle'];

8。编辑客户视图

目录/视图/主题/默认(或您的主题)/模板/product/product.twig

查找<h1>{{ heading_title }}</h1>

在下面添加

<h3>{{ subtitle }}</h3>

恭喜!我们做到了!完成所有操作后,您必须清除

ocmod
缓存。转到管理,

扩展名-修改,右上角按钮“刷新”。然后返回到管理控制台,单击右上角的齿轮图标。在弹出窗口中打开缓存(同时打开)并刷新它。

这适用于任何OpenCart 3.X,但是在某些较旧的3.X版本中,您将必须通过清理文件系统中的存储来清除twig缓存。
© www.soinside.com 2019 - 2024. All rights reserved.