簡體   English   中英

在 OpenCart 3.x 的產品描述頁面中添加自定義字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM