我在prestashop数据库的product表中添加了一个字段“mystock”。现在我想在编辑产品页面中显示/编辑此文件。产品更新时也会更新。
答案 0 :(得分:6)
这个适用于prestashop 1.5.4
将文件Product.php添加到包含以下内容的\ override \ classes:
<?php
Product::$definition['fields']['mystock'] = array('type' => ObjectModel::TYPE_INT, 'validate' => 'isUnsignedInt');
class Product extends ProductCore
{
public $mystock;
}
...假设您需要一个字段来输入数字。
然后3)altafhussain的回答
不要忘记将您的字段添加到数据库中,对于数字字段:
ALTER TABLE ps_product
ADD mystock
INT NOT NULL;
答案 1 :(得分:4)
此过程需要一些解决方法。下面我列出了它们。
1)打开class / Product.php。将 public $ mystock; 放在类属性列表中,您可以在课程开始后看到。
2)在文件中找到 public static $ definition = array(,它将是一个长数组。找到&#39; fields&#39; =&gt;数组( 在其中,您将看到所有数据库字段都放置了验证,数据类型等。将mystock放在该数组中作为另一个项目,并放置正确的验证和数据类型,如放置在其他字段中。
3)现在打开 adminFolder / themes / default / template / controllers / products / informations.tpl ,并在正确的位置放置具有正确名称和ID的字段。请注意,字段名称/ id应该与db字段名称和我们在Products.php类中添加的名称相同。
多数民众赞成, 希望您了解这一过程并使其发挥作用。
谢谢
答案 2 :(得分:3)
我遇到了这篇文章并基于它构建了我的组件,它似乎是最干净的解决方案:http://nemops.com/prestashop-products-new-tabs-fields/基本上它描述了如何创建一个模块,它在产品编辑页面的自定义面板中添加了多语言字段。
无需编辑模板,核心文件或添加覆盖文件。
答案 3 :(得分:1)
四个步骤中最好的综合解决方案是:
1)将文件Product.php添加到包含以下内容的\ override \ classes:
<?php
Product::$definition['fields']['mystock'] = array('type' => ObjectModel::TYPE_INT, 'validate' => 'isUnsignedInt');
class Product extends ProductCore
{
public $mystock;
}
2)打开adminFolder / themes / default / template / controllers / products / informations.tpl,并在适当的位置输入正确的名称和ID字段。
3)删除文件缓存/ class_index.php
4)将您的字段添加到数据库字段:
ALTER TABLE ps_product ADD mystock INT NOT NULL;
[感谢Bell418 1)和4)和Altaf Hussain 2)]