Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[展示] [转帖]为DISCUZ! X2增加栏目缩略图,并修复官方的一个BUG

[复制链接]
oyoy8629 发表于 2012-3-20 10:26:57 | 显示全部楼层 |阅读模式
本帖最后由 oyoy8629 于 2012-3-20 10:28 编辑

对于了解DISCUZ! X2的人都知道我们可以在在后台->全局->上传设置->门户附件中设置是否开启文字图片缩略图功能和文章图片缩略图尺寸的大小设置,但是如果不同的栏目需要不同的缩略图该怎么办呢?下面我来为大家解决这个问题。

思路很简单,添加或者修改栏目的时候增加两个文本框输入设置栏目缩略图宽度和高度,然后存到数据库,发布文章生成缩略图时使用这个值来生成!

首先在数据库pre_portal_category表中增加两个字段,如下图所示:

然后找到设置频道栏目的文件:source\admincp\admincp_portalcategory.php

在409行添加如下代码:
  1. showsetting('栏目缩略图宽度', 'thumbnailwidth', $cate['thumbnailwidth'], 'text');
  2. showsetting('栏目缩略图高度', 'thumbnailheight', $cate['thumbnailheight'], 'text');
复制代码
(这里我没有使用语言包,如果有需要自行添加。)

在475行添加如下代码:
  1. 'thumbnailwidth' => $_G['gp_thumbnailwidth'],
  2. 'thumbnailheight' => $_G['gp_thumbnailheight'],
复制代码
到这里已经可以在后台设置缩略图的值。效果如下图所示:



最后我们修改生成缩略图时的文件:source\include\portalcp\portalcp_upload.php
将113、114两行
  1. $thumbimgwidth=$_G['setting']['portalarticleimgthumbwidth']? $_G['setting']['portalarticleimgthumbwidth'] : 300;
  2. $thumbimgheight=$_G['setting']['portalarticleimgthumbheight']? $_G['setting']['portalarticleimgthumbheight'] : 300;
复制代码
替换成如下代码:
  1. $thumbimgwidth = $_G['cache']['portalcategory'][$_G['gp_catid']]['thumbnailwidth'] ? $_G['cache']['portalcategory'][$_G['gp_catid']]['thumbnailwidth'] : $_G['setting']['portalarticleimgthumbwidth'];
  2. $thumbimgheight = $_G['cache']['portalcategory'][$_G['gp_catid']]['thumbnailheight'] ? $_G['cache']['portalcategory'][$_G['gp_catid']]['thumbnailheight'] : $_G['setting']['portalarticleimgthumbheight'];

  3. $thumbimgwidth = $thumbimgwidth ? $thumbimgwidth : 300;
  4. $thumbimgheight = $thumbimgheight ? $thumbimgheight : 300;
复制代码
(没有栏目缩略图就使用全局的,全局的没有就默认为300。)

做到这里已经就算完成了,但是我上传到服务器时就不行了,怎么会这样呢?!找了半天之后才发现是一个JS文件在作祟。大家跟我一起看看吧!

当我们发布文章时在上传附件那一块选择文件的时候执行了一段js代码如下图所示。



(onchange的时候把表单actioncatid的值替换成id等于catidvalue)

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






abcnic 发表于 2012-3-20 10:27:42 | 显示全部楼层
技术帖子 支持了呢
回复

使用道具 举报

 楼主| oyoy8629 发表于 2012-3-20 10:29:28 | 显示全部楼层
自己置顶~
回复

使用道具 举报

朴素 发表于 2012-3-20 10:31:33 | 显示全部楼层
牛逼啊!  {:soso_e179:}
回复

使用道具 举报

2012返利网 发表于 2012-3-20 10:34:19 | 显示全部楼层
帖子 支持了呢
回复

使用道具 举报

hhahahala 发表于 2012-3-20 10:39:35 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

坚定信心 发表于 2012-3-20 10:48:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

陈佳星 发表于 2012-3-20 13:01:43 | 显示全部楼层
再来帮你顶顶.....
回复

使用道具 举报

hhahahala 发表于 2012-3-20 13:14:46 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

xjjyho 发表于 2012-3-20 13:15:57 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-9-28 11:17 , Processed in 0.180984 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表