我们在使用织梦CMS系统建站的时候,网站前端在调用文章的过程中,经常会碰到标题和文章摘要会自动截取一定量的字数,而并非全部调用出来,无论怎么修改调用代码都不行,尤其是使用UTF8版本的织梦系统,调用的文字更少了。
其实,这主要是因为Dedecms织梦系统默认的文章标题的最大长度为60字节,使用GBK版本的,也就是30个汉字;使用UTF8版本的,也就是10个汉字;如果文章标题超过60字节将会自动截断,导致标题显示不全,而现在文章标题30个汉字是远远不能满足需要的,所以,我们要做的就是突破系统默认的字数限制。
一、修改文章标题字数长度限制的方法
dedecms系统使用过程中,常遇到输入的标题原本输入的字数跟保存成功后的数字长度不一样,超过的会自动截断删除,那么少的字段不够用怎么办呢?
1、修改标题字数长度限制
对于这个问题,其实,修改的方法很简单,只要两步就可解决织梦DedeCms系统中限制文章标题字数的问题:
第一步、修改网站后台中的系统基本参数
首先,进入网站后台,系统 -> 系统基本参数->其它选项 -> 文档标题最大长度;把参数修改为需要设置的标题最大长度,默认参数是60,一般我们修改成90,或者更大的数字。
第二步、执行SQL命令
使用phpMyAdmin修改dede_archives(如前缀修改过请自动替换)中title长度为90;也可以直接在织梦在后台中,进入“系统->SQL命令行工具”;中执行以下SQL语句代码:
然后点击确定,出现成功执行1个SQL语句即可完成对dedecms文章标题字数限制的修改(相关知识点可查看亿企邦《织梦DedeCMS常用SQL语句标签调用语法及代码》的介绍)。
按照以上2步即可解决了,如果你按照上述方法修改后,仍然无法显示全部,那你需要排查一下问题可能出现在:一是模板问题,检查相应模板相应位置上是否使用了titlelen来限制字数;第二,可能是CSS上控制问题,检查对应CSS文件的相应代码,是否在CSS文件上进行了长度或者宽度限制。
2、解决dedecms UTF-8首页文章标题显示字数太短的办法
原因分析:因为UTF-8编码1个中文汉字占用的是3个字节,GBK占用的是2个字节,所以,原先$titlelen = AttDef($titlelen,30)等于最大取30个字节,所以最多只显示11个汉字。
解决方法:进入dedecms的后台,在“模板管理”中的“标签源码管理",找到arclist.lib.php ,点击“编辑”,找到“$titlelen = AttDef($titlelen,30); ”条语句,把其中的30改为90或者更大的数值即可。当然你也可以在include aglib 这个目录中找到arclist.lib.php,然后同样的方法修改好,再传到你的空间。
3、织梦dedecms限制标题title字数的方法
数据库上已经扩展了标题字数的长度,那如果前端页面在调用过程中,需要限制或缩短标题字数呢?该如何调用呢?
织梦dedecms限制标题title字数的两种方法:
方法一、直接使用 titlelen 属性
比如:我想使网站前端页面调用的标题显示20个汉字,也就是40个字节,那么可以定义 titlelen='40' 即可,这种方法通常在列表标签arclist中使用。常规写法如:
比如:我想使网站前端页面调用的标题显示10个汉字,也就是20个字节,那么,我可以借用 function=cn_substr(@me,20/) 这个函数,其调用代码可以用:[field:title function="cn_substr(@me,20)"/] 。常规写法:
那么,这两种方法是否可以通用呢?
一般情况下,第一种方法适用于列表页title字数的限制,因为这样title的字数都是一样的,如果你用第二种方法的话,是控制不了title字数的。而第二种方法则使用于文章页或者其他地方需要控制title字数,因为字数都不一定一样的。当然了描述(description)也可以使用 function=“cn_substr()”这个函数(相关知识点可查看亿企邦《利于SEO优化的织梦标签调用代码》的介绍)。
二、修改文章摘要长度的方法
在Dedecms系统中,文章摘要被设置了字数上限为250字符,设置上限的主要目的是减少数据库的冗余,保证网站良好的性能。但同时也会带来一些问题,尤其是使用UTF8编码的系统,1个中文汉字占用的是3个字节,可以调用的摘要文字也就83个字而已,显然还是有点少呀,那针对这个问题,我们该怎么修改呢?
1、先说下后台修改默认摘要长度的方法
后台->系统->系统基本参数->其它选项->自动摘要长度(0-250,0表示不启用)如果字数要求不多,直接填写数字就行了。
2、摘要大于250个字节的修改方法
方法一:
在Dedecms中,与文章摘要相关的php文件主要有:
在/dede/文件下的edit(article_edit.php)页面,有一句代码是:“$description = cn_substrR($description,250); ”,这句话中出现了一个熟悉的字符数“250”,这就是系统设置的文章摘要字符数的上限值。 如果是gbk编码则显示出来的就是125个字。如果是utf-8编码则是81个字。显然,我们要突破文章摘要字符数上限,肯定得拿它开刀了。
因此,这里修改“250”为其他值即可,例如“500”。这里不推荐设置得过高,一个是在列表页没必要展示太多内容(展示太多内容不如直接用body了),另一个是避免数据库产生冗余。
完成上面的修改还不够,还需要修改article_description_main.php
在article_description_main.php页面,找到“if($dsize>250) $dsize = 250;”语句,这里限制了在后台自动获取摘要的字符数。把这里的“250”修改为“500”即可,也就是和之前修改的字符数一致即可。(如果你确认你的每一条文章都是手动添加,手动完成摘要获取就不需要修改这个文件了。自动摘要获取主要还是给大量文章和采集准备的。)
最后,登录后台,在系统-系统基本参数-其它选项中,自动摘要长度,改成500即可,也就是和之前修改的字符数一致即可。
按照以上操作,如果你还发现摘要文字还是250字封顶!再多还是不显示,那么,你需要还得修改一下数据库,登录后台,执行SQL语句:
完成上述修改后,我们再到频道列表页,通过标签调用即可,示例标签如下:
方法二:
第一步、进数据库,找到表 dede_archives 下的字段 description字段,点更改,长度250改为你想要的数字,另外如果需要把自动摘要改为手动摘要的话,就把null改为是,默认值改为null。
第二步、修改织梦系统文件。在dede文件夹目录下,找到article_eidt.php文件
找到其中的:
注意,这里的250不是250个字,而是250字符。
有些情况需要修改一下/dede/templets/文件夹里,article_add.htm和article_edit.htm,找到其中的:
第三步、进后台,系统---系统基本参数---其它设置---自动摘要的长度(例如写成:500)
适用即可,不要设置太大,避免增加数据库冗余。
方法三:
在/dede/文件下,找到archives_add.php中的:
可是为什么一定要给摘要规定一个长度呢?所以这个方法就是直接将摘要长度去掉,将代码改为:
在/dede/文件下,archives_add.php 代码如下:
3、网页调用文章摘要的方法
在Dedecms中,在列表页调用文章摘要的方法(能够经过infolen或description相关标签调用)主要有:
第3、4种方法通过function函数实现了对文章摘要显示字符的灵活调整。当然,在没有修改文章摘要内容字符上限时,这4个方法的差异并不大。但是,下面我们来说如何修改这一上限值,就可以体现出[field:description function="cn_substr(@me,字符数)"/]这一方式的重要性。
其实,这主要是因为Dedecms织梦系统默认的文章标题的最大长度为60字节,使用GBK版本的,也就是30个汉字;使用UTF8版本的,也就是10个汉字;如果文章标题超过60字节将会自动截断,导致标题显示不全,而现在文章标题30个汉字是远远不能满足需要的,所以,我们要做的就是突破系统默认的字数限制。
一、修改文章标题字数长度限制的方法
dedecms系统使用过程中,常遇到输入的标题原本输入的字数跟保存成功后的数字长度不一样,超过的会自动截断删除,那么少的字段不够用怎么办呢?
1、修改标题字数长度限制
对于这个问题,其实,修改的方法很简单,只要两步就可解决织梦DedeCms系统中限制文章标题字数的问题:
第一步、修改网站后台中的系统基本参数
首先,进入网站后台,系统 -> 系统基本参数->其它选项 -> 文档标题最大长度;把参数修改为需要设置的标题最大长度,默认参数是60,一般我们修改成90,或者更大的数字。
第二步、执行SQL命令
使用phpMyAdmin修改dede_archives(如前缀修改过请自动替换)中title长度为90;也可以直接在织梦在后台中,进入“系统->SQL命令行工具”;中执行以下SQL语句代码:
alter table dede_archives change title title varchar(90)这种情况下不需要登录数据库去修改值,只需要使用SQL命令即可,方便简单,但是提醒大家修改之前做好数据库的备份。
然后点击确定,出现成功执行1个SQL语句即可完成对dedecms文章标题字数限制的修改(相关知识点可查看亿企邦《织梦DedeCMS常用SQL语句标签调用语法及代码》的介绍)。
按照以上2步即可解决了,如果你按照上述方法修改后,仍然无法显示全部,那你需要排查一下问题可能出现在:一是模板问题,检查相应模板相应位置上是否使用了titlelen来限制字数;第二,可能是CSS上控制问题,检查对应CSS文件的相应代码,是否在CSS文件上进行了长度或者宽度限制。
2、解决dedecms UTF-8首页文章标题显示字数太短的办法
原因分析:因为UTF-8编码1个中文汉字占用的是3个字节,GBK占用的是2个字节,所以,原先$titlelen = AttDef($titlelen,30)等于最大取30个字节,所以最多只显示11个汉字。
解决方法:进入dedecms的后台,在“模板管理”中的“标签源码管理",找到arclist.lib.php ,点击“编辑”,找到“$titlelen = AttDef($titlelen,30); ”条语句,把其中的30改为90或者更大的数值即可。当然你也可以在include aglib 这个目录中找到arclist.lib.php,然后同样的方法修改好,再传到你的空间。
3、织梦dedecms限制标题title字数的方法
数据库上已经扩展了标题字数的长度,那如果前端页面在调用过程中,需要限制或缩短标题字数呢?该如何调用呢?
织梦dedecms限制标题title字数的两种方法:
方法一、直接使用 titlelen 属性
比如:我想使网站前端页面调用的标题显示20个汉字,也就是40个字节,那么可以定义 titlelen='40' 即可,这种方法通常在列表标签arclist中使用。常规写法如:
{arclist typeid='2' row='6' titlelen='40' flag='c'}方法二、使用“cn_substr()”函数截取字符
<a href='[field:arcurl/]'>[field:title/]</a>
{/arclist}
比如:我想使网站前端页面调用的标题显示10个汉字,也就是20个字节,那么,我可以借用 function=cn_substr(@me,20/) 这个函数,其调用代码可以用:[field:title function="cn_substr(@me,20)"/] 。常规写法:
<a href='[field:arcurl/]'>[field:title function="cn_substr(@me,20)"/]</a>这两种方法可以说是织梦cms常用的限制title字数的方法。
那么,这两种方法是否可以通用呢?
一般情况下,第一种方法适用于列表页title字数的限制,因为这样title的字数都是一样的,如果你用第二种方法的话,是控制不了title字数的。而第二种方法则使用于文章页或者其他地方需要控制title字数,因为字数都不一定一样的。当然了描述(description)也可以使用 function=“cn_substr()”这个函数(相关知识点可查看亿企邦《利于SEO优化的织梦标签调用代码》的介绍)。
二、修改文章摘要长度的方法
在Dedecms系统中,文章摘要被设置了字数上限为250字符,设置上限的主要目的是减少数据库的冗余,保证网站良好的性能。但同时也会带来一些问题,尤其是使用UTF8编码的系统,1个中文汉字占用的是3个字节,可以调用的摘要文字也就83个字而已,显然还是有点少呀,那针对这个问题,我们该怎么修改呢?
1、先说下后台修改默认摘要长度的方法
后台->系统->系统基本参数->其它选项->自动摘要长度(0-250,0表示不启用)如果字数要求不多,直接填写数字就行了。
2、摘要大于250个字节的修改方法
方法一:
在Dedecms中,与文章摘要相关的php文件主要有:
/dede/archives_add.php在织梦/dede/文件下的add(article_add.php)页面中,有一句代码是:“$description = cn_substrR($description,$cfg_auot_description); ”,这句话实现了[field:description function="cn_substr(@me,字符数)"/]这一功能。因为这一语句确实有利于页面布局,因此我们在实验中没有修改。
/dede/archives_edit.php
/dede/article_add.php
/dede/article_edit.php
/dede/article_description_main.php
在/dede/文件下的edit(article_edit.php)页面,有一句代码是:“$description = cn_substrR($description,250); ”,这句话中出现了一个熟悉的字符数“250”,这就是系统设置的文章摘要字符数的上限值。 如果是gbk编码则显示出来的就是125个字。如果是utf-8编码则是81个字。显然,我们要突破文章摘要字符数上限,肯定得拿它开刀了。
因此,这里修改“250”为其他值即可,例如“500”。这里不推荐设置得过高,一个是在列表页没必要展示太多内容(展示太多内容不如直接用body了),另一个是避免数据库产生冗余。
完成上面的修改还不够,还需要修改article_description_main.php
在article_description_main.php页面,找到“if($dsize>250) $dsize = 250;”语句,这里限制了在后台自动获取摘要的字符数。把这里的“250”修改为“500”即可,也就是和之前修改的字符数一致即可。(如果你确认你的每一条文章都是手动添加,手动完成摘要获取就不需要修改这个文件了。自动摘要获取主要还是给大量文章和采集准备的。)
最后,登录后台,在系统-系统基本参数-其它选项中,自动摘要长度,改成500即可,也就是和之前修改的字符数一致即可。
按照以上操作,如果你还发现摘要文字还是250字封顶!再多还是不显示,那么,你需要还得修改一下数据库,登录后台,执行SQL语句:
alter table `dede_archives` change `description` `description` varchar( 500 )500代表我们设置存放摘要的这个表可以保存的字符串长度为500个字符,GBK编码下是汉字500个!执行完毕,再生成试试!这样才真正的突破了250个摘要文字的限制!
完成上述修改后,我们再到频道列表页,通过标签调用即可,示例标签如下:
{dede:list typeid='' row='5' titlelen='100' orderby='new' pagesize='5'}通过以上方式,我们就实现了调用的文章摘要字符为500字符,完全突破了文章摘要250字符的系统限制,为网页布局提供了更加广阔的空间。
<h3><a href='[field:arcurl/]'>[field:title/]</a></h3>
<p>[field:description function='cn_substr(@me,500)'/]...</p>
{/dede:list}
方法二:
第一步、进数据库,找到表 dede_archives 下的字段 description字段,点更改,长度250改为你想要的数字,另外如果需要把自动摘要改为手动摘要的话,就把null改为是,默认值改为null。
第二步、修改织梦系统文件。在dede文件夹目录下,找到article_eidt.php文件
找到其中的:
$description = cn_substrR($description,250);将250改为你想要的数字,比如:500。
注意,这里的250不是250个字,而是250字符。
有些情况需要修改一下/dede/templets/文件夹里,article_add.htm和article_edit.htm,找到其中的:
<textarea name="description" rows="5" id="description" style="width:80%;height:50px">把height:50px改为height:100px乃至更多。
第三步、进后台,系统---系统基本参数---其它设置---自动摘要的长度(例如写成:500)
适用即可,不要设置太大,避免增加数据库冗余。
方法三:
在/dede/文件下,找到archives_add.php中的:
$description = cn_substrR($description,$cfg_auot_description);archives_edit.php 中的:
$description = cn_substrR($description,250);这两个语句是用来定义摘要的,$cfg_auot_description 是自动摘要长度的变量,250是长度的最大值。
可是为什么一定要给摘要规定一个长度呢?所以这个方法就是直接将摘要长度去掉,将代码改为:
在/dede/文件下,archives_add.php 代码如下:
$description = $description;在/dede/文件下,archives_edit.php 代码如下:
$description = $description;完全可以行得通,如果不想要文章摘要,可以在把 article_article.html 中的一下字符删除掉,代码如下:
{dede:field.description runphp='yes'}至此,这个摘要长度的限制就算彻底解决了。
if(@me<>'' )@me = '
'.@me.'
';
{/dede:field.description}
3、网页调用文章摘要的方法
在Dedecms中,在列表页调用文章摘要的方法(能够经过infolen或description相关标签调用)主要有:
1:[field:info /]第1、2种方法是直接调用文章摘要,在调用的字数问题上,当使用[field:info /]时,可以在{dede:arclist infolen=' ' }{/dede:arclist}中,设置调用摘要的字符数(最高可设置为系统设置的250);如果使用[field:description /],则直接使用后台设置的摘要字符上限。显然,这两种方式都很被动,灵活性太差。
2:[field:description /]
3:[field:info function="cn_substr(@me,字符数)"/]
4:[field:description function="cn_substr(@me,字符数)"/]
第3、4种方法通过function函数实现了对文章摘要显示字符的灵活调整。当然,在没有修改文章摘要内容字符上限时,这4个方法的差异并不大。但是,下面我们来说如何修改这一上限值,就可以体现出[field:description function="cn_substr(@me,字符数)"/]这一方式的重要性。