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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

求助啊!!dz x1.5 帖子里的图片,如何实现19楼

[复制链接]
hosel 发表于 2011-9-7 21:52:37 | 显示全部楼层 |阅读模式
各位大大 求助了
如何让帖子里的图片
在未登录的时候,显示小图片
登录了后,显示大图片
就是19楼那样的功能
我现在找不到dz x1.5里面
显示图片的代码在哪里
什么逻辑原理。。。。
脑袋都找大了
请各位大大指点啊~~~~
 楼主| hosel 发表于 2011-9-8 09:55:54 | 显示全部楼层
尾毛没人指教啊~~~
自己顶起来
回复

使用道具 举报

蓝豆 发表于 2011-9-13 16:46:00 | 显示全部楼层
本帖最后由 蓝豆 于 2011-9-13 16:46 编辑

截个图看看吧
回复

使用道具 举报

 楼主| hosel 发表于 2011-9-14 21:44:16 | 显示全部楼层
蓝豆 发表于 2011-9-13 16:46
截个图看看吧

就如图所示,点击会弹出登陆框,要求登录。



不过我现在已经实现图片不登陆看小图,登录看大图

但是没有解决附件怎么给添加“登录/注册看大图”这句话

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

 楼主| hosel 发表于 2011-9-14 21:44:48 | 显示全部楼层
等我完全解决后 会将方法贴出来
大家探讨下哦~~~
回复

使用道具 举报

 楼主| hosel 发表于 2011-9-19 15:54:25 | 显示全部楼层
问题已经解决了
虽然没人顶偶的
偶还是把偶的方法分享下吧
虽然不一定是最佳方法~~~
回复

使用道具 举报

 楼主| hosel 发表于 2011-9-19 16:09:25 | 显示全部楼层
一、首先修改图片大小
因为dz的图片分为好几种上传形式,有从相册上传,有网络图片,有图片附件,
但我的理解,总体其实就是分为:附件图片和网络图片两种形式

A、 先说网络图片大小的修改
在function_viewthread.php 中,找到

$post['message'] = discuzcode($post['message'], $post['smileyoff'], $post['bbcodeoff'], $post['htmlon'] & 1, $_G['forum']['allowsmilies'], $_G['forum']['allowbbcode'], ($_G['forum']['allowimgcode'] && $_G['setting']['showimages'] ? 1 : 0), $_G['forum']['allowhtml'], ($_G['forum']['jammer'] && $post['authorid'] != $_G['uid'] ? 1 : 0), 0, $post['authorid'], $_G['forum']['allowmediacode'], $post['pid']);

在它的前面添加:

   $aa = "/\[img\=[0-9]+\,[0-9]+\]/";
   $bb = "[img]";
   $cc = "[img=80,0]";
   $post['message'] = preg_replace($aa, $bb, $post['message']);
   $post['message'] = str_replace($bb, $cc, $post['message']);

B、附件图片大小修改
在function_attachment文件中,找到
function attachwidth($width) {
global $_G;

if($_G['setting']['imagemaxwidth'] && $width) {
  return 'width="'.($width > $_G['setting']['imagemaxwidth'] ? $_G['setting']['imagemaxwidth'].(!defined('IN_MOBILE') ? '" class="zoom"': '') : $width.'"');
} else {
  return 'thumbImg="1"';
}
}

我的理解是,它返回了附件图片的宽度,以及等比例缩放,所以,在这可以对图片大小进行限定,返回一个固定值
我是这么写的:
function attachwidth($width) {
global $_G;
//有修改 20110913 限定未登录时,附件图片的显示大小
if(!$_G['uid']){
    return 'width=80';
}
if($_G['setting']['imagemaxwidth'] && $width) {
  return 'width="'.($width > $_G['setting']['imagemaxwidth'] ? $_G['setting']['imagemaxwidth'].(!defined('IN_MOBILE') ? '" class="zoom"': '') : $width.'"');
} else {
  return 'thumbImg="1"';
}
}

回复

使用道具 举报

 楼主| hosel 发表于 2011-9-19 16:30:36 | 显示全部楼层
二、关于“登录/注册查看大图”提示修改,并跳转弹出登录/注册框

A、针对网络图片的修改
在function_discuzcode.php文件中,找到

if(!$bbcodeoff) {
  if($parsetype != 1 && strpos($msglower, '[swf]') !== FALSE) {
   $message = preg_replace("/\[swf\]\s*([^\[\<\r\n]+?)\s*\[\/swf\]/ies", "bbcodeurl('\\1', ' <img src=\"'.STATICURL.'image/filetype/flash.gif\" align=\"absmiddle\" alt=\"\" /> <a href=\"{url}\" target=\"_blank\">Flash: {url}</a> ')", $message);
  }

在它前面加上

if (!$_G['uid']) {
    $message = str_replace('[/img]','[/img]<br><span class=wdl><a href="member.php?mod=logging&amp;action=login">登录/<a href="member.php?mod='.$_G['setting']['regname'].'" title="注册帐号">'.$_G['setting']['reglinkname'].'</a>查看大图</a></span><br>',$message);
}

B、针对附件图片
在discuzcode.htm文件中
找到

<p class="mbn">
      <!--{if $_G['setting']['thumbstatus'] && $attach['thumb'] }-->
       <a href="javascript:;"><img id="aimg_$attach[aid]" src="{if $attach[refcheck]}forum.php?mod=attachment{$is_archive}&aid=$aidencode{else}{$attach[url]}$attach[attachment].thumb.jpg{/if}" alt="$attach[imgalt]" title="$attach[imgalt]" /></a>
      <!--{else}-->
       <img id="aimg_$attach[aid]" src="{STATICURL}image/common/none.gif" file="{if $attach[refcheck]}forum.php?mod=attachment{$is_archive}&aid=$aidencode&noupdate=yes{else}{$attach[url]}$attach[attachment]{/if}" $widthcode id="aimg_$attach[aid]" alt="$attach[imgalt]" />
      <!--{/if}-->
      </p>

改成:

<p class="mbn">
      <!--{if $_G['setting']['thumbstatus'] && $attach['thumb'] }-->
       <a href="javascript:;"><img id="aimg_$attach[aid]" src="{if $attach[refcheck]}forum.php?mod=attachment{$is_archive}&aid=$aidencode{else}{$attach[url]}$attach[attachment].thumb.jpg{/if}" alt="$attach[imgalt]" title="$attach[imgalt]" /></a><br><!--{if (!$_G['uid']) }--><br><span class="wdl"><a href="http://www.baidu.com">登录</a>/注册查看大图</span><br><!--{/if}--><br>
      <!--{else}-->
       <img id="aimg_$attach[aid]" src="{STATICURL}image/common/none.gif" file="{if $attach[refcheck]}forum.php?mod=attachment{$is_archive}&aid=$aidencode&noupdate=yes{else}{$attach[url]}$attach[attachment]{/if}" $widthcode id="aimg_$attach[aid]" alt="$attach[imgalt]" /><!--{if (!$_G['uid']) }--><br><span class="wdl"><a href="http://www.baidu.com">登录</a>/注册查看大图</span><br><!--{/if}-->
      <!--{/if}-->
      </p>

注意:我所介绍的只是大致的修改方式,尤其是如果对图片显示方式进行了修改的话,还得分情况来修改,比如我的服务器上,就对附件的显示方式做了修改,我所修改的地方,不知以上两点。


回复

使用道具 举报

 楼主| hosel 发表于 2011-9-19 16:37:46 | 显示全部楼层
三、补充问题
A、“登录/注册查看大图”样式修改
因为“登录/修改查看大图”是在帖子里显示的
所以它们会受到帖子样式的影响
看个人喜好,我是对它进行了样式修改
把样式修改放在了viewthread.htm文件中

B、对于网络图片的修改,还有一点要提到
就是DZ 定义的 IMAGEMAXWIDTH,在DZ 1.5中,不知道为什么输出总是%777
导致我无法对网络图片进行修改,
后来我将function_discuzcode.php中
function parseimg 函数,修改为;

global $_G;
$extra = '';
$width = intval($width);
$height = intval($height);
$imagemaxwidth = IMAGEMAXWIDTH;
$imagemaxwidth = 777;
if($width > $imagemaxwidth) {
  $height = intval($imagemaxwidth * $height / $width);
  $width = $imagemaxwidth;

重新定义了一个$imagemaxwidth 来解决这个问题
回复

使用道具 举报

 楼主| hosel 发表于 2011-9-19 16:39:58 | 显示全部楼层
基本上我做的修改就这些
不一定是最好的
也不一定对大家有用
我只是 针对我的服务器上的环境来做的修改
不一定都适用
只是分享下
如果大家有更好的方式
请积极分享哦~~~{:soso_e100:}

还有,哪位高手能给我解释下
为什么IMAGEMAXWIDTH会是%777???
谢谢了~~~~O(∩_∩)O
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-21 17:20 , Processed in 0.101804 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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