dx或是dz里文章的简介默认的字符长度是80,如果你的显示地方够小的话,那看来还过得去。如果是这样的场景下:
这看起来就太不和诣了。很自然的,想到了要加这个简介内容显示长度。我的思路:
1. Google “dx {summary} 长度”。撸了一圈回来,看到了也都是问的,没有看到解决的方法,有人建议官方把这个长度换成150
.进到了一篇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
路过。………..