我想通过添加其他字段来自定义基于OpenCart的站点的产品描述页面,但是我无法对描述描述页面的文件进行罚款。我已经检查过[[catalog / view / theme /(mytemplate)/product/product.twig文件,但这不是我的产品描述页面的文件。
为避免这种情况,1.进入管理面板2.在右上角单击齿轮图标。3.关闭树枝缓存。
让我知道这是否有帮助?
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缓存。