k2的字符截断/字数限制功能

字符截断,也就是通常所说的字数限制,是一个很常用的功能。而K2组件本身,也有此类功能,例如分类列表的文章内容摘要的字数限制。

这个默认的功能,对英文等拉丁文字符语言环境是有效的,但对于中文环境就不起作用。其实主要是因为默认的字符截断功能是基于单词截断(空格隔开),而中文的书写是不带空格的,所以无法正常截取字数。

下面我们就来介绍一下基于不同需求情况下,K2字符截断的方法

根据单词截断语句

我们可以使用K2自身的K2HelperUtilities::wordLimit功能,例如在K2模板的category_item.php页面,你可以使用以下代码

<?php echo K2HelperUtilities::wordLimit($this->item->introtext,100); ?>

除了截断文章摘要内容,也可以截断文章标题,原理是一样的。左边是对象,右边是参数(你要限制的单词数量)例如

<?php echo K2HelperUtilities::wordLimit($this->item->title,10); ?>

根据字符截断语句

这种方法适用于中文环境,它是根据字符截断内容。其实更准确的来说,这种方法是根据字节来截断。因为对于英文字母,一个字母是一个字节,但对于汉字,在UTF8编码是1个字符占用3个字节。就是一个汉字等于三个英文字母。所以我们填入参数的时候,需要把想要限制的字数乘以3

<?php echo K2HelperUtilities::characterLimit($this->item->title,10); ?>

用法是类似的,也是可以用在不同的地方,包括K2的内容模块K2 Content的模板,都可以使用字符截断的功能

除了上面介绍的K2提供的字符截断功能,还有一种也常见,更容易实现的方法

用CSS截断字符串

CSS3提供了一个叫做text-overflow的属性,我们可以这样使用

.mytext {
overflow:hidden;/* 内容超出宽度时隐藏超出部分的内容 */
text-overflow:ellipsis;/* 当对象内文本溢出时显示省略标记(...) ;需与overflow:hidden;一起使用。*/
white-space:nowrap;
}

CSS的方法,一般只适用像标题的字数限制的场景,因为它是把多出的内容隐藏不显示,原来的文字内容并没有减少。

各位可以根据需求选择适合自己的方法。如需要了解Joomla的字符截断功能,可以浏览我们的文章《Joomla的字符截断/字数限制功能》。