![](/img/trans.png)
[英]Opencart 3.x generating SEO-Friendly links for 'Search on homepage' and 'admin page'
[英]Adding a custom field in products description page in OpenCart 3.x
我想通過添加一個附加字段來自定義我的站點的基於 OpenCart 的產品描述頁面,但我無法對描述描述頁面的文件進行罰款。 我已經檢查了目錄/視圖/主題/(mytemplate)/product/product.twig文件,但這不是我的產品描述頁面的文件。
在產品描述 OpenCart 3.X(多語言)中添加新字段。
在右上角的管理員儀表板上單擊齒輪圖標。 在彈出窗口 window 中關閉緩存(兩者)並刷新。 這是必要的,以便可以看到您的編輯結果。
1.首先,您需要在數據庫中添加一個新字段。 使用phpMyAdmin ,打開你的數據庫,找到表oc_product_description (oc_ - 是我的前綴,使用你的)。
當您打開oc_product_description時,打開 SQL 選項卡並寫入(不要忘記將 oc_ 更改為您的數據庫前綴):
ALTER TABLE `oc_product_description` ADD `subtitle` VARCHAR(255) NOT NULL AFTER `name`;
這將添加一個新列subtitle 。
2. 版本管理員 model 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 model 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. 編輯管理語言admin/language/en-gb(或您的管理語言)/catalog/product.php
在最后添加
$_['entry_subtitle'] = 'Product Subtitle';
$_['error_subtitle'] = 'Product Subtitle must less than 255 characters!';
5.版admin查看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.版客戶model目錄/型號/目錄/產品.php
查找(≈10 行)
if ($query->num_rows) {
return array(
'product_id' => $query->row['product_id'],
'name' => $query->row['name'],
在下面添加
'subtitle' => $query->row['subtitle'],
7.版客戶controller目錄/控制器/產品/產品.php
查找(≈228 行)
$data['heading_title'] = $product_info['name'];
在下面添加
$data['subtitle'] = $product_info['subtitle'];
8.編輯客戶視圖目錄/視圖/主題/默認(或您的主題)/模板/產品/產品.twig
尋找
<h1>{{ heading_title }}</h1>
在下面添加
<h3>{{ subtitle }}</h3>
恭喜! 我們做到了! 在完成所有操作后,您必須清除ocmod緩存。 Go 到管理員,擴展 - 修改,右上角按鈕刷新。 比 go 返回管理儀表板,單擊右上角的齒輪圖標。 在彈出 window 中打開緩存(兩者)並刷新它。 更多關於緩存 OpenCart 3.X 緩存清理在這里https://stackoverflow.com/a/61524855/3187127
這適用於任何 OpenCart 3.X,但在某些較舊的 3.X 版本中,您必須通過清理文件系統中的存儲來清除twig緩存。
在 OpenCart 3.x 中編輯 a.twig 文件時,您經常會遇到 Twig 緩存的問題。 您將編輯該文件,但看不到任何更改。
為避免這種情況, 1. go 到您的管理面板 2. 在右上角單擊齒輪圖標。 3.關閉twig緩存。
讓我知道這是否有幫助?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.