我是Silverstripe的新手,在文档或SO上找不到我的问题的答案.
我正在使用Silverstripe纯粹作为CMS:没有网站作为前端.
我有最简单的DataObject产品和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之后,构建了我的管理面板,我可以像往常一样将高分辨率图像上传到’Uploads’目录.
我想上传CMS以将图像重新采样为几种不同的尺寸,同时保留原始图像.新的和原始图像也需要保存到FlushGeneratedImagesTask不会删除它们的位置.通过查看文档,我知道图像可以轻松调整大小,但我不清楚添加所需自定义功能的位置(或方式).有人可以帮忙吗?
(我认为Silverstripe 3.1 – resize image on upload最接近回答这个问题,但是缺少一个步骤来说明如何让CMS使用新的/被覆盖的功能.)
我正在使用Silverstripe 3.1版
最佳答案 >创建一个扩展Image的新类MyImage.
>在MyImage类中创建一个onBeforeWrite()函数.
>在此函数内部,创建一个新图像$image = Image :: create().您可以在此处设置重新采样图像的文件名,名称,标题,ParentID等
>使用$image-> SetWidth(…)调整图像大小
>更新你的数组Product :: $has_one to say MyImage => MYIMAGE