如何使用不同的区域设置更新SilverStripe Watermarkable扩展程序

时间:2015-08-05 18:02:52

标签: php silverstripe

我已将 3.1.2 的Silverstripe更新为 3.1.13 (框架,CMS和扩展程序)。已安装silverstripe-watermarkablesilverstripe-translatable个扩展程序且工作正常。 现在,我在Settings > Watermark Image上的默认语言环境(lv_LV)上传了我的水印图片。 一切都很好,而我正在浏览默认语言环境中的网站,但是当我更改为不同的可用语言环境(假设说英语或俄语)时,它会抛出错误

  

[注意] getimagesize()[function.getimagesize]:读错误!

这只是几个错误中的一个。到目前为止,我已经想到的是,当我将$watermark_path = $watermarkFile->getFullPath();中的silverstripe-watermarkable/code/ImageWatermarkExtension.php更改为my/path/to/actual/watermark_image.png时 它运作良好,那么,我该怎么做才能为这个问题创建解决方案呢?

1 个答案:

答案 0 :(得分:1)

我有一个解决方案!我一直在编辑扩展文件,这是一种糟糕的方式。我只想改变应该改变的DataObject

// mysite/code/MyImage.php
<?php

class MyImage extends WatermarkImage {
  ...
  public function getWatermark() {
    // in this example we assume has an image named "Watermark"
    $siteConfig = SiteConfig::current_site_config();
    if ($siteConfig->Watermark()) {
      return $siteConfig->getTranslation('lv_LV')->Watermark();
    }
  }
  ...
}

问题出在return $siteConfig->Watermark();,关键是->getTranslation('lv_LV')。 我想出了

  • 不更改扩展名code目录文件
  • 仅更新DataObject,而不是更新核心