目前,Word MS(杂志)主题盛行,CMS主题有一个共有的特性就是,首页只显示文章部分内容,也就是俗称的文字截断,这个与真正的WP摘要功能无关,只是控制文章字数显示在首页,真正的WP摘要需要主题的支持,两者不能混为一谈.
那么显示文章部分内容有什么好处呢,那就是既可以增加首页的信息量,方便浏览者快速找到想看的内容,又不会把首页拉的很长,整齐美观,还有什么...想起来再说.
实现文字截断的方法很多,比如:在编辑文章时在适当位置加入more标签、安装启用中文工具箱等,特别是一些国外主题会加入特殊的函数实现文字截断,但中文字符与英文字符的算法不同,对中文的截断不是很理想。
文章截断:
1 | <?php echo mb_strimwidth(strip_tags(apply_filters('the_content', $post->post_content)), 0, 200,"..."); ?> |
用上面的代码替换当前主题archive.php、index.php模板文件中类似:
1 | <?php the_content('Read more...'); ?> |
或
1 | <?php the_excerpt(); ?> |
其中数字200是字数,可以适当调整,但最好保持为偶数.
文章标题截断:
很多CMS主题是以分类文章列表形式展示的,但当某个文章标题太长,就会造成回行,很不美观,必须要将多余的文字去掉,比较简单也比较笨拙方法是用CSS截断,可惜当文章标题同时有汉字和英文时问题就明显了,经常是一个字只截断了一半,看上去很古怪。还是定义PHP函数实现标题截断比较合理也非常容易。
下面的标题截断函数与文章截断函数同出一辙:
1 | <?php echo mb_strimwidth(get_the_title(), 0, 24, ''); ?> |
不过当中文与英文同时存在于标题中时,还是会造成截断不准确,这个问题在文章截断中并不是很明显。
最理想的标题截断方法:
首先将下面的代码添加到主题functions.php模板文件中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | //文字截断 function cut_str($src_str,$cut_length) { $return_str=''; $i=0; $n=0; $str_length=strlen($src_str); while (($n<$cut_length) && ($i<=$str_length)) { $tmp_str=substr($src_str,$i,1); $ascnum=ord($tmp_str); if ($ascnum>=224) { $return_str=$return_str.substr($src_str,$i,3); $i=$i+3; $n=$n+2; } elseif ($ascnum>=192) { $return_str=$return_str.substr($src_str,$i,2); $i=$i+2; $n=$n+2; } elseif ($ascnum>=65 && $ascnum<=90) { $return_str=$return_str.substr($src_str,$i,1); $i=$i+1; $n=$n+2; } else { $return_str=$return_str.substr($src_str,$i,1); $i=$i+1; $n=$n+1; } } if ($i<$str_length) { $return_str = $return_str . ''; } if (get_post_status() == 'private') { $return_str = $return_str . '(private)'; } return $return_str; } |
再用下面的代码
1 | <?php echo cut_str($post->post_title,32); ?> |
替换主题模板中的
1 | <?php the_title(); ?> |
其中:调整数字32可以控制标题的长度.
以上函数代码全部来自网络,原作者未知,有认领者请留言!
会员登录关闭
注册会员关闭