本帖最后由 oyoy8629 于 2012-3-20 10:28 编辑
对于了解DISCUZ! X2的人都知道我们可以在在后台->全局->上传设置->门户附件中设置是否开启文字图片缩略图功能和文章图片缩略图尺寸的大小设置,但是如果不同的栏目需要不同的缩略图该怎么办呢?下面我来为大家解决这个问题。
思路很简单,添加或者修改栏目的时候增加两个文本框输入设置栏目缩略图宽度和高度,然后存到数据库,发布文章生成缩略图时使用这个值来生成!
首先在数据库pre_portal_category表中增加两个字段,如下图所示:
然后找到设置频道栏目的文件:source\admincp\admincp_portalcategory.php
在409行添加如下代码: - showsetting('栏目缩略图宽度', 'thumbnailwidth', $cate['thumbnailwidth'], 'text');
- showsetting('栏目缩略图高度', 'thumbnailheight', $cate['thumbnailheight'], 'text');
复制代码 (这里我没有使用语言包,如果有需要自行添加。)
在475行添加如下代码:- 'thumbnailwidth' => $_G['gp_thumbnailwidth'],
- 'thumbnailheight' => $_G['gp_thumbnailheight'],
复制代码 到这里已经可以在后台设置缩略图的值。效果如下图所示:
最后我们修改生成缩略图时的文件:source\include\portalcp\portalcp_upload.php
将113、114两行- $thumbimgwidth=$_G['setting']['portalarticleimgthumbwidth']? $_G['setting']['portalarticleimgthumbwidth'] : 300;
- $thumbimgheight=$_G['setting']['portalarticleimgthumbheight']? $_G['setting']['portalarticleimgthumbheight'] : 300;
复制代码 替换成如下代码:- $thumbimgwidth = $_G['cache']['portalcategory'][$_G['gp_catid']]['thumbnailwidth'] ? $_G['cache']['portalcategory'][$_G['gp_catid']]['thumbnailwidth'] : $_G['setting']['portalarticleimgthumbwidth'];
- $thumbimgheight = $_G['cache']['portalcategory'][$_G['gp_catid']]['thumbnailheight'] ? $_G['cache']['portalcategory'][$_G['gp_catid']]['thumbnailheight'] : $_G['setting']['portalarticleimgthumbheight'];
- $thumbimgwidth = $thumbimgwidth ? $thumbimgwidth : 300;
- $thumbimgheight = $thumbimgheight ? $thumbimgheight : 300;
复制代码 (没有栏目缩略图就使用全局的,全局的没有就默认为300。)
做到这里已经就算完成了,但是我上传到服务器时就不行了,怎么会这样呢?!找了半天之后才发现是一个JS文件在作祟。大家跟我一起看看吧!
当我们发布文章时在上传附件那一块选择文件的时候执行了一段js代码如下图所示。
(onchange的时候把表单action的catid的值替换成id等于catid的value)
onchange之前:
onchange之后:
大家不难发现catid变了!onchange之前的12变成了122 问题其实就出在replace方法里面的正则:/catid\=\d/ \d匹配一个数字字符 但是只匹配了一次 所以catid就成了 ‘12’+’2’ 也就是122。 那么我们修改成 \d* 匹配零次或多次即可。
为什么我之前在本地是好的呢?!因为我本地的DISCUZ! X2是新装测试用的。刚刚新建了一个栏目有木有!栏目id才个位数有没有!坑爹啊有木有!版本升级到2.5这个问题还在有木有,难道没有人遇到这个问题么?
好了!就说到这里吧,希望对大家有帮助!如果有什么问题,希望大家指正!
原文转自:http://bbs.phphubei.com/thread-20066-1-1.html
|