我是Silverstripe的新手,我很难在文档中或在SO上找到我的问题的答案。
我将Silverstripe纯粹用作CMS:没有网站作为前端。
我有最简单的DataObject Product
和ModelAdmin ProductAdmin
,如下所示:
class Product extends DataObject
{
private static $db = array(
'Name' => 'Varchar',
'Copy' => 'Text'
);
private static $has_one = array(
'MyImage' => 'Image'
);
}
class ProductAdmin extends ModelAdmin
{
private static $managed_models = array(
'Product'
);
private static $url_segment = 'product';
private static $menu_title = 'Product';
}
在/dev/build
之后,我的管理面板已构建完毕,我可以像往常一样将高分辨率图像上传到“上传”目录。
我希望上传,以便CMS将图片重新取样为多种不同的尺寸,同时保留原件。新的和原始图像也需要保存到FlushGeneratedImagesTask不会删除它们的位置。通过查看文档,我知道图像可以轻松调整大小,但我不清楚添加所需自定义功能的位置(或方式)。有人可以帮忙吗?
(我认为Silverstripe 3.1 - resize image on upload最接近回答此问题,但缺少一步,说明如何让CMS使用新的/覆盖的功能。)
我正在使用Silverstripe 3.1版
答案 0 :(得分:2)
onBeforeWrite()
。 $image = Image::create()
。您可以在此处设置重新采样图像的文件名,名称,标题,ParentID等$image->SetWidth(...)
Product::$has_one
以说明MyImage => MyImage