【问题标题】:How to modify Product in Silvershop (adding custom fields to $db)如何在 Silvershop 中修改产品(将自定义字段添加到 $db)
【发布时间】:2019-07-22 14:35:25
【问题描述】:

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

【问题讨论】:

    标签: silverstripe silvershop


    【解决方案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 完成了

    【讨论】:

      猜你喜欢
      • 2014-06-21
      • 2017-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-30
      • 1970-01-01
      • 1970-01-01
      • 2016-09-12
      相关资源
      最近更新 更多