我目前正在使用SilverShop开发一家商店。我想在我的产品中添加一些特定领域,例如我的衣服制成的面料和图像。我知道我们不应在核心SilverShop源代码中进行这些更改。
我应该将Product类扩展到新文件中,例如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
];
...
答案 0 :(得分:1)
使用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
完成