为所有产品添加全局自定义字段 - PrestaShop 1.6
Add global custom field for all products - PrestaShop 1.6
我想添加自定义字段,但为所有产品添加一个,而不是为每个产品添加一个。
为此,我创建了 override/classes/Product.php
:
class Product extends ProductCore{
public $is_exclusive = null;
function __construct( $id_product = null, $full = false, $id_lang = null,
$id_shop = null, Context $context = null ) {
Product::$definition['fields']['is_exclusive'] =
array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml');
}
我可以在 ps_product_lang
中创建一个字段,但这将为每个产品创建一行。
我想要的是所有产品的一个字段。可以在"Product"页面编辑。
在这种情况下,您可以在 ps_product table 中创建它,这样它只出现一次,覆盖产品 class,并且覆盖产品页面BO。
我的建议是创建一个模块,将其嫁接在钩子上"displayAdminProductsExtra",这样您的产品的 BO 中就会有更多的字段。因此,您可以获得 table 的附加信息,而无需更改 Prestashop 的结构。
然后你可以放一个tpl在你想要的FO挂钩上显示。
此致
如果您只想为所有产品使用一个字段,则必须添加一项配置。
您可以覆盖产品 class 并将其添加到构造方法中(如果此字段仅可读)
function __construct( $id_product = null, $full = false, $id_lang = null,
$id_shop = null, Context $context = null ) {
$this->is_exclusive = Configuration::get('custom_key');
}
您还必须手动将自定义值添加到配置 table
真正的方法是创建新模块。您可以在模块配置页面中管理您的配置:
Configuration::updateValue($key, $value); // save data
Configuration::get($key, $id_lang); // get data
如果您的数据与以下语言相关:
$value = [
1 => 'value 1', // for language 1
2 => 'value 2', // for language 2
3 => 'value 3', // for language 3
];
Configuration::updateValue($key, $value); // save data
Configuration::get($key, 2); // get data of language 2
提示:最简单的方法是通过PrestaShop module creator创建一个新模块,然后对其进行编辑。
我想添加自定义字段,但为所有产品添加一个,而不是为每个产品添加一个。
为此,我创建了 override/classes/Product.php
:
class Product extends ProductCore{
public $is_exclusive = null;
function __construct( $id_product = null, $full = false, $id_lang = null,
$id_shop = null, Context $context = null ) {
Product::$definition['fields']['is_exclusive'] =
array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml');
}
我可以在 ps_product_lang
中创建一个字段,但这将为每个产品创建一行。
我想要的是所有产品的一个字段。可以在"Product"页面编辑。
在这种情况下,您可以在 ps_product table 中创建它,这样它只出现一次,覆盖产品 class,并且覆盖产品页面BO。
我的建议是创建一个模块,将其嫁接在钩子上"displayAdminProductsExtra",这样您的产品的 BO 中就会有更多的字段。因此,您可以获得 table 的附加信息,而无需更改 Prestashop 的结构。
然后你可以放一个tpl在你想要的FO挂钩上显示。
此致
如果您只想为所有产品使用一个字段,则必须添加一项配置。
您可以覆盖产品 class 并将其添加到构造方法中(如果此字段仅可读)
function __construct( $id_product = null, $full = false, $id_lang = null,
$id_shop = null, Context $context = null ) {
$this->is_exclusive = Configuration::get('custom_key');
}
您还必须手动将自定义值添加到配置 table
真正的方法是创建新模块。您可以在模块配置页面中管理您的配置:
Configuration::updateValue($key, $value); // save data
Configuration::get($key, $id_lang); // get data
如果您的数据与以下语言相关:
$value = [
1 => 'value 1', // for language 1
2 => 'value 2', // for language 2
3 => 'value 3', // for language 3
];
Configuration::updateValue($key, $value); // save data
Configuration::get($key, 2); // get data of language 2
提示:最简单的方法是通过PrestaShop module creator创建一个新模块,然后对其进行编辑。