如何在 Silvershop 中修改产品(将自定义字段添加到 $db)
How to modify Product in Silvershop (adding custom fields to $db)
我目前正在使用 SilverShop 开发商店。我想为我的产品添加一些特定的字段,例如我的衣服是用什么面料制成的以及图像。我知道我们不应该在核心 SilverShop 源代码中进行这些更改。
我是否应该在新文件中扩展产品 class,例如 app/src/ProductPage.php
?
class Product extends Page implements Buyable
{
private static $db = [
'InternalItemID' => 'Varchar(30)', //ie SKU, ProductID etc (internal / existing recognition of product)
'Model' => 'Varchar(30)',
'BasePrice' => 'Currency(19,4)', // Base retail price the item is marked at.
//physical properties
// TODO: Move these to an extension (used in Variations as well)
'Weight' => 'Decimal(12,5)',
'Height' => 'Decimal(12,5)',
'Width' => 'Decimal(12,5)',
'Depth' => 'Decimal(12,5)',
'Featured' => 'Boolean',
'AllowPurchase' => 'Boolean',
'Popularity' => 'Float' //storage for CalculateProductPopularity task
];
...
使用DataExtension
对于 SilverStripe 4,它将类似于:
ProductExtension.php :
use SilverStripe\ORM\DataExtension;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\TextField;
class ProductExtension extends DataExtension
{
private static $db = [
'NewField' => 'Varchar(255)'
];
public function updateCMSFields(FieldList $fields)
{
$fields->addFieldsToTab('Root.Main', TextField::create('NewField', 'This is new field'));
}
}
然后,将下一行添加到 mysite.yml
SilverShop\Page\Product:
extensions:
- ProductExtension
dev/build
完成了
我目前正在使用 SilverShop 开发商店。我想为我的产品添加一些特定的字段,例如我的衣服是用什么面料制成的以及图像。我知道我们不应该在核心 SilverShop 源代码中进行这些更改。
我是否应该在新文件中扩展产品 class,例如 app/src/ProductPage.php
?
class Product extends Page implements Buyable
{
private static $db = [
'InternalItemID' => 'Varchar(30)', //ie SKU, ProductID etc (internal / existing recognition of product)
'Model' => 'Varchar(30)',
'BasePrice' => 'Currency(19,4)', // Base retail price the item is marked at.
//physical properties
// TODO: Move these to an extension (used in Variations as well)
'Weight' => 'Decimal(12,5)',
'Height' => 'Decimal(12,5)',
'Width' => 'Decimal(12,5)',
'Depth' => 'Decimal(12,5)',
'Featured' => 'Boolean',
'AllowPurchase' => 'Boolean',
'Popularity' => 'Float' //storage for CalculateProductPopularity task
];
...
使用DataExtension
对于 SilverStripe 4,它将类似于:
ProductExtension.php :
use SilverStripe\ORM\DataExtension;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\TextField;
class ProductExtension extends DataExtension
{
private static $db = [
'NewField' => 'Varchar(255)'
];
public function updateCMSFields(FieldList $fields)
{
$fields->addFieldsToTab('Root.Main', TextField::create('NewField', 'This is new field'));
}
}
然后,将下一行添加到 mysite.yml
SilverShop\Page\Product:
extensions:
- ProductExtension
dev/build
完成了