阅读:3342回复:0
定制了一下mod_k2_content,符合中文使用习惯的限制标题字数
文章列表的标题,如果是英文的话,纵始超过数量换行,对外观也没什么影响,而四方四正的中文如果在一个10多条的列表下个个换行。想必不仅会影响页面对齐,还会让人感觉不太专业,纯个人见解!小站心得,转载还请注明啊
鉴于本站用k2搭建!必然要用到K2附带的模块来显示右侧列表,关键问题是K2官方发布的模块却没有限制标题字数,多余则用省略号替代,下面简单说一下修改方法! 首先安装K2这不用说了!最好嘛是K2最新版(下载)。那么这里需要先从模块入手 找到文件:modulesmod_k2_contentmod_k2_content.xml 找到代码: Hide Show 修改为: Hide Show 英文不太好,简单表示description,意思是在后台K2_content模块处可以输入一个限定标题长度的数字,标题超过这个数字嘛,自然是用utf-8截断。 然后打开文件:modulesmod_k2_contenthelper.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的函数里面去添加 找到文件:componentscom_k2helpersutilities.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 } 函数的问题解决了之后就需要让前端显示生效,找到文件modulesmod_k2_contenttmplDefaultdefault.php 找到代码: link; ?>"> 改为: link; ?>" title=""> 我这里在原有的基础上改进了一下,就是鼠标指向链接的时候产生一个 title,这样嘛比较有利SEO优化吧,注意区分和前者是未截断的标题,用在链接title上,后者是截断后的,用于前台显示上。 注意备份原文件,然后保存所有发动,生效!如果想永久性的让K2安装包生效,先解压k2安装包,然后如上述找到对应文件改动后压缩zip,下次就可以一生受用了!!(目前,introtext的中文字符限制暂时无效果,鉴于这里只用到标题,introtext便不多讲了) |
|