• 3072阅读
  • 1回复

dede文章摘要字数的设置方法infolen或description相关标签调用

楼层直达
在Dedecms系统中,文章摘要(可以通过infolen或description相关标签调用)被设置了字数上限为250字符,设置上限的主要目的是减少数据库的冗余,保证网站良好的性能。因此,如果对简介内容不设置上限显然不合理,但是如果可以自由控制这一上限,那么将对网页内容布局带来积极作用。在网页设计过程中,往往需要在频道列表页面调用到文章摘要,如果可以有效控制文章摘要的字数,那么就可以使得页面布局很灵活。 aD2+9?m  
fx W,S  
在Dedecms中,在列表页调用文章摘要的方法主要有: w"-'  
MhE'_sq  
1:[field:info /] ;n-)4b]\  
2:[field:description /] $!+t2P@d.5  
3:[field:info function="cn_substr(@me,字符数)"/] )gO=5_^u*o  
4:[field:description function="cn_substr(@me,字符数)"/] %]>LnbM>4  
第1、2种方法是直接调用文章摘要,在调用的字数问题上,当使用[field:info /]时,可以在{dede:arclist infolen=' ' }{/dede:arclist}中,设置调用摘要的字符数(最高可设置为系统设置的250);如果使用[field:description /],则直接使用后台设置的摘要字符上限。显然,这两种方式都很被动,灵活性太差。 UV?.KVD~  
pq \M;&  
第3、4种方法通过function函数实现了对文章摘要显示字符的灵活调整。当然,在没有修改文章摘要内容字符上限时,这4个方法的差异并不大。但是,下面我们来说如何修改这一上限值,就可以体现出[field:description function="cn_substr(@me,字符数)"/]这一方式的重要性。 W*'gqwM&  
9.bMA<X  
在Dedecms中,与文章摘要相关的php文件主要有: j Hd <*  
[+=h[DC  
/dede/archives_add.php ELx?ph-9  
/dede/archives_edit.php 7l-` k  
/dede/article_add.php <lk_]+ XJ3  
/dede/article_edit.php .Yxx   
/dede/article_description_main.php jGB2`^&d  
在add页面,有一句话是:“$description = cn_substrR($description,$cfg_auot_description); ”,这句话实现了[field:description function="cn_substr(@me,字符数)"/]这一功能。因为这一语句确实有利于页面布局,因此我们在实验中没有修改。 'o2V}L'nG  
4<`x*8` ,  
在edit页面,有一句话是:“$description = cn_substrR($description,250); ”,这句话中出现了一个熟悉的字符数“250”,这就是系统设置的文章摘要字符数的上限值。 如果是gbk编码则显示出来的就是125个字。如果是utf-8编码则是81个字。显然,我们要突破文章摘要字符数上限,肯定得拿它开刀了。是的,这里修改“250”为其他值即可,例如“500”。这里不推荐设置得过高,一个是在列表页没必要展示太多内容(展示太多内容不如直接用body了),另一个是避免数据库产生冗余。 S9sFC!s1g  
u8Ul +u  
完成上面的修改还不够,还需要修改article_description_main.php oR.KtS$uh  
8G?{S.%.  
在article_description_main.php页面,找到“if($dsize>250) $dsize = 250;”语句,这里限制了在后台自动获取摘要的字符数。把这里的“250”修改为“500”即可,也就是和之前修改的字符数一致即可。(如果你确认你的每一条文章都是手动添加,手动完成摘要获取就不需要修改这个文件了。自动摘要获取主要还是给大量文章和采集准备的。) 7)S ;VG k  
~rBeJZ  
最后,登录后台,在系统-系统基本参数-其它选项中,自动摘要长度,改成500即可,也就是和之前修改的字符数一致即可。 Qtmsk:qm  
#]G$o?@Y=^  
完成上述修改后,我们再到频道列表页,通过标签调用即可,示例标签如下: 0T!_;IQ  
P ;>8S:8  
{dede:list typeid='' row='5' titlelen='100' orderby='new' pagesize='5'} _oxc~v\<  
<h3><a href='[field:arcurl/]'>[field:title/]</a></h3> w'q}aQS  
<p>[field:description function='cn_substr(@me,500)'/]...</p> UzVnC:  
{/dede:list} \NbMSC&H  
通过以上方式,我们就实现了调用的文章摘要字符为500字符,完全突破了文章摘要250字符的系统限制,为网页布局提供了更加广阔的空间。
只看该作者 安逸沙发  发表于: 2014-10-12
第一步:修改数据表 y<mmv~=  
    打开数据表,找到相关数据表,查找 description 字段,将其中数值改为想要的字符数。 BwtjTwd  
    或者用 SQL 命令行工具 执行: V`xZ4 i%L  
    文章摘要,原为  varchar(255) g a|RW0  
      alter table dede_archives modify column description varchar(600) NOT NULL DEFAULT ''; [=*c8  
    TAG 标签,修改  dede_tagindex、dede_taglist    中的 tag ,原为  char(12) 和 varchar(12) 2w)[1s[  
      alter table dede_tagindex modify column tag char(30) NOT NULL DEFAULT ''; r0kJx$f  
      alter table dede_taglist modify column tag varchar(30) NOT NULL DEFAULT ''; |9>?{ B\a  
    注:UTF-8中,原 12,即 12/3=4 个中文字,现在是  30/3=10 个中文字 Ny|2Fcs  
dw{L,u`68  
  第二步:修改相关程序文件 0>hV?A  
   2{ ^k*Cfd  
  DEDE 修改文章摘要,标题,来源,作者 等的字数限制 gP=(2EVE  
    /dede/archives_add.php (iM*Y"Y  
    /dede/archives_edit.php qOaI4JP@  
    /dede/article_add.php 7"}<J7"})  
    /dede/article_edit.php j8/rd  
    四个文件都要修改,如果修改专题摘要,还得修改: .)Xyz d  
    /dede/spec_add.php 3^p<Wx  
    /dede/spec_edit.php ?kBi9^)N4  
{m1=#*  
    查找以下代码(后面的数字可能有出入): xj 6ht/qq  
      $title= cn_substrR($title,$cfg_title_maxlen); Vgy}0pCl  
      $shorttitle = cn_substrR($shorttitle,36);//简略标题字符数 +EI+@hS  
      $color = cn_substrR($color,7); 'N1_:$z@(  
      $writer = cn_substrR($writer,20);//作者字符数 8@`"ZzM  
      $source = cn_substrR($source,30);//文章来源字符数 8GpPyG ],e  
      $description = cn_substrR($description,250);//摘要字符数,改为 350 5Fh?YS=  
      $description = cn_substrR($description,$cfg_auot_description); Nb.AsIR^  
        //自动摘要字符数,后台>其它选项 设置的 自动摘要长度 RU} M&&  
      $keywords = trim(cn_substrR($keywords,30));//关键词字符数 EW;R^?Z  
      $filename = trim(cn_substrR($filename,40));//文件名字符数 l| 1O9I0Gd  
      if(!TestPurview('a_Check,a_AccCheck,a_MyCheck')) Gb)!]:8  
    修改相应括号里的数字为想要显示的字符数 X$"=\p>X  
     |e+8Xz1>  
     }e}J6 [wP  
    ------------------------------------------------------------- #vk-zx*v7=  
  修改 TAG 标签的 R"Ol'y{  
    /include/archives.func.php          //  (旧版是这里?) \0 &7^  
    /include/helpers/archive.helper.php      //  (新版中封装到这里了) *=]hc@  
      查找      if(isset($tag[12]) |\g=ua+h  
        修改为    if(isset($tag[30]) \^<eJf D  
      查找      if(isset($tag[20]) WfbG }%&J  
        修改为    if(isset($tag[30])
快速回复

限100 字节
安逸网提示:如果您在写长篇帖子又不马上发表,建议存为草稿
 
认证码:
上一个 下一个