如何在Silvershop中修改产品(将自定义字段添加到$ db)

时间:2019-07-22 14:35:25

标签: silverstripe silvershop

我目前正在使用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
    ];
...

1 个答案:

答案 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完成