因为喜欢使用markdown
来写文章,所以将fastadmin
的后台文本编辑器改用了markdown编辑器,但随之而来的问题是,前台文章因为没有markdown语法渲染,所有显示的杂乱无章的.
前台选用 HyperDown
对文本进行md语法渲染并显示.
md语法解析html代码
$parser = new MarkdownParser();
$value = $parser->makeHtml($value);
但是又遇到了一个新问题,原cms中的付费查看文章信息的功能无法正常使用,因为原<paid></paid>
和####paidbegin####
两种语法都无法在md下正常解析,所以我将默认的付费内容标签换了一个其他的字符,然后功能又可以重新使用了.
public function getContentAttr($value, $data)
{
$parser = new MarkdownParser();
$value = $parser->makeHtml($value);
//如果内容中包含有付费标签
$value = str_replace(['[pay_start]', '[pay_end]'], ['<paid>', '</paid>'], $value);
$pattern = '/<paid>(.*?)<\/paid>/is';
if (preg_match($pattern, $value) && !$this->getAttr('ispay')) {
$value = preg_replace($pattern, "<div class='alert alert-warning alert-paid'>内容已经隐藏,付费后查看</div>", $value);
}
return $value;
}
本修改方案可能会影响后续cms插件的升级,如有使用请酌情考虑.
Bug天天改,头发日日疏,码字不易,如果有帮助到你,就点击"下方感谢"支持一下把.