【问题标题】:Create Custom Field in OpenCart 2.0在 OpenCart 2.0 中创建自定义字段
【发布时间】:2015-04-10 07:39:41
【问题描述】:

我是 OpenCart 的新手,我想知道如何在 OpenCart 后端(在产品部分)添加自定义字段(启用 WYSIWYG 编辑器的文本区域),然后将其回显到前端(@ 987654323@).

我已关注此tutorial 并成功在后端管理面板中创建了自定义字段,但无法将其回显到前端。

【问题讨论】:

  • 请清除 vqmod(如果您正在使用它)和 opencart 缓存的所有缓存,否则可能不会出现更改。

标签: php opencart2.x


【解决方案1】:

您好,我发现这个教程与 Opencart 2.0 兼容:

http://www.php-dev-zone.com/2015/01/how-to-add-custom-product-field-in.html

请不要覆盖核心文件,而是使用 vqmod:

http://www.opencart.com/index.php?route=extension/extension/info&extension_id=19501

我建议您使用教程并将所有内容写入 实际的核心文件首先看看它是否有效(这似乎是正确的)和 然后以正确的方式进行操作并将其全部移至 vqmod。

在:/catalog/controller/product/product.php

您会发现如下内容:

$data['description'] = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8');

如果您在此处添加字段,例如:

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

然后在前端您将能够将其回显到

/catalog/view/theme/default/template/product/product.tpl

作为

$custom_desc;

【讨论】:

  • 感谢您的回复,我已经按照您提供的 URL 并成功创建了自定义字段,但教程没有显示如何将它们回显到前端。
  • 我看到这个错误Notice: Undefined variable: custom_desc in C:\wamp\www\Dazzle_OpenCart\catalog\view\theme\dazzle\template\product\product.tpl on line 330
  • 每次修改后请务必清除缓存(以防万一)
  • 您可能还需要将其添加到 $data['products'][] = array(.. 并尝试回显为 $product['custom_desc'];
  • 控制器中有一个数组$data['products'],你需要在其中添加你的自定义字段,然后在前端回显为$product['custom_field']跨度>
【解决方案2】:
open admin\model\catalog\product.php

Find addProducts($data) 
function and add below code just after 
`sort_order`
and before     
date_added = NOW()");
your_desc = '" . $this->db->escape($data['your_desc']) . "',

Now find 
editProduct($product_id, $data)` function and add below code just after sort_order and before date_modified = NOW()
your_desc = '" . $this->db->escape($data['your_desc']) . "',

Now open admin\controller\catalog\product.php
Find getForm() function and add below code:

$data['entry_your_desc'] = $this->language->get('entry_your_desc');

Find below code 
if (isset($this->request->post['isbn'])) {
        $data['isbn'] = $this->request->post['isbn'];
    } elseif (!empty($product_info)) {
        $data['isbn'] = $product_info['isbn'];
    } else {
        $data['isbn'] = '';
    }

and add your code just after it

if (isset($this->request->post['your_desc'])) {
 $data['your_desc'] = $this->request->post['your_desc'];
} elseif (isset($product_info)) {
$data['your_desc'] = $product_info['your_desc'];
} else {
$data['your_desc'] = '';
}

Open catalog\view\theme\default\template\product\product.tpl
and find the below code:

<li><?php echo $text_stock; ?> <?php echo $stock; ?></li>
Now add your code after it:
 <li><?php echo $text_your_desc; ?> <?php echo $your_desc; ?></li>
You can place wherever you want to.

Open catalog\language\english\product\product.php
and add your piece of code:

$_['text_your_desc']               = 'Your_description';

Open catalog\controller\product\product.php
Find:

$data['heading_title'] = $product_info['name'];
and add:

$data['text_your_desc'] = $this->language->get('text_your_desc');

Scroll down and find

$data['product_id'] = (int)$this->request->get['product_id'];

now add:

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

Open admin\view\template\catalog\product_form.tpl
Find:

<div class="tab-pane" id="tab-data">

Now add your code:

<div class="form-group">
<label class="col-sm-2 control-label" for="input-your_desc">
<?php echo $entry_your_desc; ?>
</label>
<div class="col-sm-10">
<input type="text" name="your_desc" value="<?php echo $your_desc; ?>"      placeholder="<?php echo $entry_your_desc; ?>" id="input-your_desc" class="form- control" />
</div>
</div>

Open catalog\model\catalog\product.php
Find:

if ($query->num_rows) {
and add your code:

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

Open admin\language\english\catalog\product.php
Find :

//Entry
and add :

$_['entry_your_desc']      = 'Your_description';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-28
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多