dx或是dz里文章的简介默认的字符长度是80,如果你的显示地方够小的话,那看来还过得去。如果是这样的场景下:这看起来就太不和诣了。很自然的,想到了要加这个简介内容显示长度。我的思路:
1. Google “dx {summary} 长度”。撸了一圈回来,看到了也都是问的,没有看到解决的方法,有人建议官方把这个长度换成150 :D.进到了一篇dx官方的帖子,不过只是一个bug报告,也没有给出对应的更改,及哪个版本里已经对这个东西给出了一个调整方式。最终无果~
2. 找代码里是不是有对应的配置项。仔仔细细,认认真的扫了一遍后台的管理操作,Y的就看到个“{summary}变量为文章简介”,然后什么参数也不给!最终也无果。
3. 改代码——Y的叫你不听使唤。ok,开始理源码。我的需求场景在门户的文章页,并且是用dx的DIY工具来生成的Block内容块。一般这种相关的东西大多放在
source/module/portal/*
下。首先,我找到了
source/module/portal/portal_black.php
通过这个文件分析,理到了
source/function/function_block.php
在这个源码的第197行:
function block_updatecache($bid, $forceupdate=false) { //省略 N 行 $titlelength = !empty($block['param']['titlelength']) ? intval($block['param']['titlelength']) : 40; $summarylength = !empty($block['param']['summarylength']) ? intval($block['param']['summarylength']) : 80; foreach(C::t('common_block_item_data')->fetch_all_by_bid($bid, 1, 0, $shownum * 2, $bannedids, false) as $value) { $value['title'] = cutstr($value['title'], $titlelength, ''); $value['summary'] = cutstr($value['summary'], $summarylength, ''); $value['itemtype'] = '3'; $datalist[] = $value; $bannedids[] = intval($value['id']); } //省略 N 行 }
看到
$summarylength = !empty($block['param']['summarylength']) ? intval($block['param']['summarylength']) : 80;
当时我以为我找到答案了。可是改成:
$summarylength = 300;
更新缓存->刷新页面,可还是没有一点反应,照旧~继续分析.... 我开始用户咱的php单步调试工具函数了:
function single_step($msg) { echo $msg; exit; }
经过一翻的折腾~我理到了
source/class/block/portal/block_article.php
在这个文件里面,我发现还有一个
214 $summarylength = isset($parameter['summarylength']) ? intval($parameter['summarylength']) : 80;
直接强撸:
$summarylength = 300
source/class/block/block_article.php
的 第90行发现了一个对于summarylength的配置项:
array( ...... 'summarylength' => array( 'title' => 'articlelist_summarylength', 'type' => 'text', 'default' => 300 //80 ) );
改好以上几个地方,再去更新缓存,你想要的长度就可以实现。好,改完,收工。这里也有缺陷,像在DIY的工具里,到编辑数据的时候,超过了80,javascript的检测还是过不去,这个我还没有理,期待有更好的解法,欢迎交流讨论。:D
评论(1)
暂无评论!