如何限制字符但保持换行符/格式?

时间:2017-01-27 00:24:42

标签: silverstripe

我正在使用默认情况下自动生成的标准Content字段来添加一些文字。

"Content" => "HTMLText"

如果我使用限制功能,例如

$Content.BigSummary(300)

这限制了单词,但没有保留换行符。 Aka剥离了HTML。

查看框架代码,有ContextSummary()

public function ContextSummary($characters = 500, $string = false, $striphtml = true, $highlight = true,
            $prefix = "... ", $suffix = "...")

但是经过测试,在HTMLText字段上使用它似乎不起作用,它限制了字符,但除非字段类型为Text,否则它不会保留HTML,例如

的htmlText:

$Content.ContextSummary(200, false, false) - 正在删除HTML

文字:

$Content.ContextSummary(200, false, false) - 保留HTML(这就是我想要的)

我做错了吗?或者我可以使用另一种功能来实现我想要的功能吗?或者创建一个自定义函数?

1 个答案:

答案 0 :(得分:0)

问题在于转换为简单文字并返回到html - < br>标签丢失,因为我遇到过一次。这是我用过的类似黑客。

// override ContextSummary from the Page_Controller
public function ContextSummary($field = 'Content', $characters = 500, $string = false) {
  $content = $this->dbObject($field);
  $content->setValue(str_replace('<br>', '__br__', $content->getValue);
  $summary = $content->ContextSummary($characters, $string, $stripHtml = false);
  return str_replace('__br__', '<br>', $summary);
}

and use $ContextSummary(Content) instead of $Content.ContextSummary in template