织梦DedeCms文章标题和简介摘要字数长度限制修改的方法教程

分类栏目:综合教程

504

我们在使用织梦CMS系统建站的时候,网站前端在调用文章的过程中,经常会碰到标题和文章摘要会自动截取一定量的字数,而并非全部调用出来,无论怎么修改调用代码都不行,尤其是使用UTF8版本的织梦系统,调用的文字更少了。

其实,这主要是因为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'}
<a href='[field:arcurl/]'>[field:title/]</a>
{/arclist}
 
方法二、使用“cn_substr()”函数截取字符

比如:我想使网站前端页面调用的标题显示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/archives_edit.php

/dede/article_add.php

/dede/article_edit.php

/dede/article_description_main.php
 
在织梦/dede/文件下的add(article_add.php)页面中,有一句代码是:“$description = cn_substrR($description,$cfg_auot_description); ”,这句话实现了[field:description function="cn_substr(@me,字符数)"/]这一功能。因为这一语句确实有利于页面布局,因此我们在实验中没有修改。

在/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'}
<h3><a href='[field:arcurl/]'>[field:title/]</a></h3>
<p>[field:description function='cn_substr(@me,500)'/]...</p>
{/dede:list}
 
通过以上方式,我们就实现了调用的文章摘要字符为500字符,完全突破了文章摘要250字符的系统限制,为网页布局提供了更加广阔的空间。

方法二:

第一步、进数据库,找到表 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 /]

2:[field:description /]

3:[field:info function="cn_substr(@me,字符数)"/]

4:[field:description function="cn_substr(@me,字符数)"/]
 
第1、2种方法是直接调用文章摘要,在调用的字数问题上,当使用[field:info /]时,可以在{dede:arclist infolen=' ' }{/dede:arclist}中,设置调用摘要的字符数(最高可设置为系统设置的250);如果使用[field:description /],则直接使用后台设置的摘要字符上限。显然,这两种方式都很被动,灵活性太差。

第3、4种方法通过function函数实现了对文章摘要显示字符的灵活调整。当然,在没有修改文章摘要内容字符上限时,这4个方法的差异并不大。但是,下面我们来说如何修改这一上限值,就可以体现出[field:description function="cn_substr(@me,字符数)"/]这一方式的重要性。