我在 prestashop 数据库的产品表中添加了一个字段“mystock”。现在我想在编辑产品页面中显示/编辑这个文件。产品更新时也会更新。
5 回答
这个适用于我的 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) 打开类/Product.php。公开 $mystock ; 在类属性列表中,您可以在类启动后看到。
2) 在文件中,找到public static $definition = array( ,这将是一个长数组。找到'fields' => array(在里面,你会看到所有的数据库字段都放置了验证,数据类型等. 将您的 mystock 作为另一个项目放在该数组中,并像放置其他字段一样放置正确的验证和数据类型。
3) 现在打开adminFolder/themes/default/template/controllers/products/informations.tpl并将具有正确名称和 ID 的字段放在适当的位置。请注意,字段名称/ id 都应与数据库字段名称和我们在 Products.php 类中添加的名称相同。
就是这样,希望您了解该过程并使其发挥作用。
谢谢
我遇到了这篇文章并基于它构建了我的组件,它似乎是最干净的解决方案:http: //nemops.com/prestashop-products-new-tabs-fields/基本上它描述了如何制作一个模块,它添加了多语言产品编辑页面上自定义面板中的字段..
无需编辑模板、核心文件或添加覆盖文件。
谢谢阿尔塔夫萨因。您必须将您的字段添加到“products_shop”和“products”表中。
ALTER TABLE ps_product_shop ADD `mystock` int NOT NULL DEFAULT 0;
ALTER TABLE ps_product ADD `mystock` int NOT NULL DEFAULT 0;
我正在使用 ps 1.6.0.6
最好的四步综合解决方案是:
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)]