迅睿cms内容描述多行文本字段如何保留空格与换行?

本文主要解决迅睿cms中内容多行文本字段两个常见的问题,一是模块内容描述字段(description)保存时过滤掉空格与换行的问题。二是多行文本类型的字段(Textarea)包括自带描述字段,在模板中如何调用换行显示。

问题一:描述字段过滤掉空格与换行

迅睿cms添加内容时,如果描述字段(description)没有填写的话,会从内容(content)字段中自动提取一段文字,提取的时候会过滤掉空格与换行。比如做英文站,空格被过滤后就无法阅读了。

解决办法:

后台-设置-内容设置-模块管理-对应模块内容字段-修改描述字段(description)-数据验证-删除过滤函数,如下图:

删除函数


问题二:多行文本类型字段换行显示调用

模块内容中的多行文本类型字段(Textarea)包括上面提到的内容描述字段,在前端模板中使用默认标签调用不换行,如何调用换行显示呢。

解决办法:

这里以内容描述字段(description)为例,换行显示调用标签:

{nl2br($description)}
//如果是自建多行文本字段,把字段名修改为你的字段英文名称
{nl2br($字段名)}
//如果在list循环中调用,把[字段名]改成[$t.字段名]
{nl2br($t.字段名)}


延伸:自定义过滤函数实现个性过滤需求

有时需要在首页调用栏目内容,但内容中有可能插入了视频、图片等,首页只需要调用文字。如果使用系统内置的dr_clearhtml会把换行也过滤掉,文字挤在一起不好看。这种情况就可以通过自定义函数来实现个性化过滤需求。

解决办法:

打开:config/custom.php 添加以下代码:

<?php

/**
 * 开发者自定义函数文件
 */

function dr_reserve_text($str) {

    if (is_array($str) || !$str) {
        return '';
    }

    $str = preg_replace('~<img(.*?)>~s','',$str); //过滤图片
    $str = preg_replace('~<video(.*?)>~s','',$str); //过滤视频
    $str = str_replace("div","p",$str); //div转p
    $str = str_replace("<p>
</p>","",$str); //删除空行

    return trim($str);
}

然后前端就可以使用自定义过滤函数调用了,示例:

{dr_strcut(dr_reserve_text(dr_share_cat_value(1, 'content')), 600)}
//调用栏目ID为1的内容,截取600,这样就过滤掉了图片、视频、空行的同时保留了换行