SilverStripe所见即所得图像无法使用base_tag

时间:2016-04-28 06:00:43

标签: silverstripe

我已从模板to allow for the use of SVG icon sprites中删除了base_tag。这样做的副作用是主页上的页面上的图像中断。

HTMLEditorField::saveInto()方法强制图片上的相对网址,最终指向/some-page-other-than-home/assets/image.jpg,这是错误的。

如何将图像解析到根/assets/目录而不是指向/some-page-other-than-home/assets/

1 个答案:

答案 0 :(得分:1)

SilverStripe在某些方法上提供了extension hooks。 HTMLEditorField有一个'processImage' hook,您可以使用它。

您可以使用以下方法挂钩此方法:

<强> 1。创建您的扩展程序配置。

/mysite/_config/Config.yml

HtmlEditorField:
  extensions:
    - HTMLEditorFieldExtension

<强> 2。创建一个HTMLEditorFieldExtension类。

/mysite/code/HTMLEditorFieldExtension.php

<?php
class HTMLEditorFieldExtension extends DataExtension
{
    // This method name must be the same as the extension hook
    public function processImage($image, $img) {

        // Get the image src attribute
        $src = $img->getAttribute('src');

        // Concatenate  a leading slash
        $img->setAttribute('src', '/' . $src);
    }
}

第3。运行dev / build。

这需要这样做,因此SilverStripe可以找到新的扩展名。在此之后,您的图像现在应该缺少前导斜杠。