我正在为opencart安装创建扩展程序。我目前正在运行OpenCart V1.5.5.1。您将在下面找到我为达到这一点而遵循的代码和程序。希望有人可以帮助我找到完成项目的这一部分所需的其他内容。
我做的第一件事是在opencart数据库的product表中添加两列。这些列如下:
goal_activate tinyint(1)(寻找0或1的可能值)
sales_goal INT(任何整数)
我还使用以下代码为管理面板添加必要的文本和选择框以显示控件。这里的想法是为每个产品提供一个选择框,允许我们的员工打开销售目标(goal_activate)并设置目标值(sales_goal)。
<file name="admin/controller/catalog/product.php">
<operation>
<search position="after"><![CDATA[$this->data['entry_quantity'] = $this->language->get('entry_quantity');]]></search>
<add><![CDATA[
$this->data['entry_goal_activate'] = $this->language->get('entry_goal_activate');
$this->data['entry_sales_goal'] = $this->language->get('entry_sales_goal');
]]></add>
</operation>
</file>
<file name="admin/language/english/catalog/product.php">
<operation>
<search position="after"><![CDATA[$_['entry_quantity'] = 'Quantity:';]]></search>
<add><![CDATA[
$_['entry_goal_activate'] = 'Activate Sales Goal<br/><span class="help">Activate the sales goal thermometer for this product.</span>';
$_['entry_sales_goal'] = 'Set sales goal<br/><span class="help">Sales goal is set in total units sold.</span>';
]]></add>
</operation>
</file>
<file name="admin/view/template/catalog/product_form.tpl">
<operation>
<search position="before"><![CDATA[<td><?php echo $entry_minimum; ?></td>]]></search>
<add><![CDATA[
<td><?php echo $entry_goal_activate; ?></td>
<td><select name="goal_activate">
<?php if ($goal_activate) { ?>
<option value="1" selected="selected"><?php echo $text_yes; ?></option>
<option value="0"><?php echo $text_no; ?></option>
<?php } else { ?>
<option value="1"><?php echo $text_yes; ?></option>
<option value="0" selected="selected"><?php echo $text_no; ?></option>
<?php } ?>
</select></td>
</tr>
<tr>
<td><?php echo $entry_sales_goal; ?></td>
<td><input type="text" name="sales_goal" value="<?php echo $sales_goal; ?>" size="2" /></td>
</tr>
<tr>
]]></add>
</operation>
</file>
现在,管理面板中的一切看起来都很棒,而且我的数据库列都具有正确的数据类型和默认值。我所缺少的是代码,它将根据创建的控件的用户输入实际更改我的数据库值。我相信我缺少对admin / controller / catalog / product.php的控制器文件的一些补充,我只是不确定我需要做什么。任何帮助将不胜感激。如果我的问题中的任何内容不是形成或缺乏信息,我很抱歉,这是我在这里的第一篇文章。
答案 0 :(得分:0)
数据库处理由Opencart的MVC-L框架的model
层完成。所以你必须做这样的改变:
<file name="admin/model/catalog/product.php">
<operation>
<search position="before"><![CDATA[
$this->db->query("UPDATE " . DB_PREFIX . "product SET image = '" . $this->db->escape(html_entity_decode($data['image'], ENT_QUOTES, 'UTF-8')) . "' WHERE product_id = '" . (int)$product_id . "'");
]]></search>
<add><![CDATA[
$this->db->query("UPDATE " . DB_PREFIX . "product SET your_field_1 = '" . $this->db->escape($data['your_field_1']) . "', your_field_2 = '" . $this->db->escape($data['your_field_2']) . "' WHERE product_id = '" . (int)$product_id . "'");
]]></add>
</operation>
</file>
答案 1 :(得分:0)
除了Tibor B.提交的答案之外,我还必须包含以下代码:
<file name="admin/controller/catalog/product.php">
<operation>
<search position="before"><![CDATA[if (isset($this->request->post['minimum'])) {]]></search>
<add><![CDATA[
if (isset($this->request->post['goal_activate'])) {
$this->data['goal_activate'] = $this->request->post['goal_activate'];
} else if (!empty($product_info)) {
$this->data['goal_activate'] = $product_info['goal_activate'];
} else {
$this->data['goal_activate'] = 0;
}
]]></add>
</operation>
<operation>
<search position="before"><![CDATA[if (isset($this->request->post['quantity'])) {]]></search>
<add><![CDATA[
if (isset($this->request->post['sales_goal'])) {
$this->data['sales_goal'] = $this->request->post['sales_goal'];
} elseif (!empty($product_info)) {
$this->data['sales_goal'] = $product_info['sales_goal'];
} else {
$this->data['sales_goal'] = 0;
}
]]></add>
</operation>