文章列表的标题,如果是英文的话,纵始超过数量换行,对外观也没什么影响,而四方四正的中文如果在一个10多条的列表下个个换行。想必不仅会影响页面对齐,还会让人感觉不太专业,纯个人见解!小站心得,转载还请注明啊

鉴于本站用k2搭建!必然要用到K2附带的模块来显示右侧列表,关键问题是K2官方发布的模块却没有限制标题字数,多余则用省略号替代,下面简单说一下修改方法!

首先安装K2这不用说了!最好嘛是K2最新版(下载)。那么这里需要先从模块入手

找到文件:modules\mod_k2_content\mod_k2_content.xml

找到代码:

<param name="itemTitle" type="radio" default="1" label="Title" description="">
<option value="0">Hide</option>
<option value="1">Show</option>
</param>

修改为:

<param name="itemTitle" type="radio" default="1" label="Title" description="">
<option value="0">Hide</option>
<option value="1">Show</option>
</param>
<param name="itemTitleLimit" type="text" size="" default="" label="Title word limit" description="Leave blank to diasble. If you enable this option, title will be cut off as utf-8." />

英文不太好,简单表示description,意思是在后台K2_content模块处可以输入一个限定标题长度的数字,标题超过这个数字嘛,自然是用utf-8截断。

然后打开文件:modules\mod_k2_content\helper.php

找到原代码:

$item->title = JFilterOutput::ampReplace($item->title); //输出整串标题

替换为:

$item->titles = '';//定义item->titles
if ($params->get('itemTitle')) {//当标题为真
// Word limit
if ($params->get('itemTitleLimit')) {//当上述后台有值输入时候
$item->titles = K2HelperUtilities::wordtitleLimit($item->title, $params->get('itemTitleLimit'));//调用截断函数,并将截断后的值赋给$item->title
} else {
$item->titles = $item->title;//后台无值输入则返回原$item->title并赋值给$item->titles
}
}

*注意以上的title和titles

完了之后需要找到这个“截断函数库“ 其实原本是没有的,这时候需要到K2的函数里面去添加

找到文件:components\com_k2\helpers\utilities.php

找 到大约第50行发现这段代码:function wordLimit($str, $limit = 100, $end_char = '…')查找这段代码是有原因的,因为这个函数原本是用来截断K2的introtext,便于代码规范,所以将标题截断放在附近,本 来是可以利用这个截断函数,但没成功!索性自己写一串

在其上面添加代码(49行),添加:

function wordtitleLimit($str, $length) {//定义函数的两个参数
if (strlen($str) > $length) {//判断当获取到的$str的长度大于给定的$length时
return mb_substr($str, 0,$length, 'utf-8') . "..." ;//执行字符串截断,以utf-8的方式,截掉的字符串以……替代
}
return $str;//返回$str
}

函数的问题解决了之后就需要让前端显示生效,找到文件\modules\mod_k2_content\tmpl\Default\default.php

找到代码:

<?php if($params->get('itemTitle')): ?>
<a class="moduleItemTitle" href="/link; ?>">title; ?>
<!--请一定注意href="/..."多了个"/"在复制代码的时候切记删除-->

改为:

get('itemTitle')): ?>
<a class="moduleItemTitle" href="/link; ?>" title="title; ?>"><?php echo $item->titles; ?></a><!--请一定注意href="/..."多了个"/"在复制代码的时候切记删除-->
<?php endif; ?>

我这里在原有的基础上改进了一下,就是鼠标指向链接的时候产生一个 title,这样嘛比较有利SEO优化吧,注意区分<?php echo $item->title; ?>和<?php echo $item->titles; ?>前者是未截断的标题,用在链接title上,后者是截断后的,用于前台显示上。

注意备份原文件,然后保存所有发动,生效!如果想永久性的让K2安装包生效,先解压k2安装包,然后如上述找到对应文件改动后压缩zip,下次就可以一生受用了!!(目前,introtext的中文字符限制暂时无效果,鉴于这里只用到标题,introtext便不多讲了)

除特殊标明文章转自第三方网站,文章均由JOOMLASK.COM原创提供
欢迎友情转载,请务必保留本文出处并引用本文链接: 定制了一下mod_k2_content,符合中文使用习惯的限制标题字数