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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[发布] 表情大转换!自适应高度,多页面

[复制链接]
suxiangkun 发表于 2006-9-15 04:45:36 | 显示全部楼层 |阅读模式
下载请到第三楼

实现很难接受Discuz提供的表情选择功能!或许,这是为了安全而不考虑使用iframe吧!毕竟,据说这个功能漏洞很多?呵呵

但个人认为,iframe功能是真的很好用的!或许现在很多人都在说Web2.0功能之一——无刷新技术,郁闷的是,Discuz竟然没有考虑使用该技术实现无刷新页面而实现表情翻页功能!呵呵,郁闷啊郁闷!

好了,无聊话至此!

该功能不能算是一个插件!因为他仅仅只是在原有基础上进行修改!

以下是修改步聚
-------------------------------------------
表情大改动

1、删除旧表情

        修改模板:post_sminsert.htm

        将以下信息删除:

       
  1. <!--{if $smileyinsert}-->
  2.                 <hr class="line" size="0">
  3.                 <div id="{$editorid}_smiliebox">
  4.                 <table cellpadding="3" cellspacing="0" width="80%" border="0" align="center">
  5.                 $smilies
  6.                 <!--{if $moresmilies}-->
  7.                         <tr>
  8.                         <td colspan="$smcols" align="center"><br><a href="#" onclick="opensmiliewindow(200, 500, '$editorid'); return false">
  9.                         <div align="right" class="bold">{lang post_smilies_more} &#8250;&#8250;</div></a></td>
  10.                         </tr>
  11.                 <!--{/if}-->
  12.                 </table>
  13.                 </div>
  14.                 <!--{/if}-->
复制代码


2、修改post.php文件,使用表情实现分页!

        查找:

       
  1. foreach($_DCACHE['smilies_display'] as $key => $smiley) {
  2.                         $_DCACHE['smilies_display'][$key]['codeinsert'] = addcslashes($smiley['code'], '\\\'');
  3.                 }
  4.                 include template('post_smilies');
  5.                 dexit();
复制代码

       
        将其修改为

       
  1. $smile_count = count($_DCACHE['smilies_display']);//计算共有多少个表情
  2.                 $get_count = $get_count ? intval($get_count) : 0;//计算初始表情
  3.                 $per_count = 30;//每页显示多少表情数量,一般设为30个,可以在一定程度上减少文件的下载
  4.                 $smile_array = array();
  5.                 $query_smile = $db->query("select * from {$tablepre}smilies where type='smiley' order by displayorder asc,id desc limit ".$get_count.",".$per_count);
  6.                 while($query_smile_rows = $db->fetch_array($query_smile))
  7.                 {
  8.                         $new_array_smile["code"] = $query_smile_rows["code"];
  9.                         $new_array_smile["url"] = $query_smile_rows["url"];
  10.                         $smile_array[$query_smile_rows["id"]] = $new_array_smile;
  11.                 }
  12.                 unset($query_smile,$query_smile_rows);
  13.                 $smile_select = "<select onchange="window.location=('post.php?action=smilies&get_count='+this.options[this.selectedIndex].value+'')">";
  14.                 $totalPage = intval($smile_count/$per_count);
  15.                 if($smile_count%$per_count) $totalPage++;
  16.                 for($smile_i=0;$smile_i<$totalPage;$smile_i++)
  17.                 {
  18.                         if($get_count == ($smile_i * $per_count))
  19.                         {
  20.                                 $smile_select .= "<option value='".$get_count."' selected>第 ".($smile_i+1)." 页</option>";
  21.                         }
  22.                         else
  23.                         {
  24.                                 $smile_select .= "<option value='".($smile_i * $per_count)."'>第 ".($smile_i+1)." 页</option>";
  25.                         }
  26.                 }
  27.                 $smile_select .= "</select>";//完成选择
  28.                 include template('post_smilies');
  29.                 dexit();
复制代码


3、修改模板文件

        viewthread.htm
        forumdisplay.htm
        post_newreply.htm
        post_newthread.htm

        在上述模板文件适当位置添加以下代码:

       
  1. <iframe id="iframe2" frameborder=0 src="post.php?action=smilies" width="100%" height="100%" scrolling="no" onload="document.all['iframe2'].height=iframe2.document.body.scrollHeight"></iframe>
复制代码


        说明一下:该代码可实现框架自适应大小,在FireFox下会有点不准确(高度比IE计算少了很多列,我也没搞懂,汗。但不影响使用!)

4、修改模板文件

        post_smilies.htm


        找到以下代码:



  1. <table cellspacing="{INNERBORDERWIDTH}" cellpadding="{TABLESPACE}" width="100%" class="tableborder" id="smilietable">
  2. <tr><td colspan="2" class="header">{lang post_smilies_more}</td></tr>

  3. <!--{loop $_DCACHE['smilies_display'] $key $smiley}-->
  4.         <tr align="center">
  5.         <td class="altbg1">$smiley[code]</td>
  6.         <td class="altbg2"><img src="{SMDIR}/$smiley[url]" border="0" alt="$smiley[code]" id="smilie_$key" onClick="insertSmilies($key)" onMouseover="this.style.cursor = is_ie ? 'hand' : 'pointer';" /></td>
  7.         </tr>
  8. <!--{/loop}-->

  9. </table>

  10. <script type="text/javascript">
  11. function insertSmilies(smilieid) {
  12.         window.opener.checkFocus();
  13.         var src = $('smilie_' + smilieid).src;
  14.         var code = $('smilie_' + smilieid).pop;
  15.         if(typeof window.opener.wysiwyg != 'undefined' && window.opener.wysiwyg && window.opener.allowsmilies && (!window.opener.$('smileyoff') || window.opener.$('smileyoff').checked == false)) {
  16.                 if(is_moz) {
  17.                         window.opener.applyFormat('InsertImage', false, src);
  18.                         var smilies = window.opener.findtags(editdoc.body, 'img');
  19.                         for(var i = 0; i < smilies.length; i++) {
  20.                                 if(smilies[i].src == src && smilies[i].getAttribute('smilieid') < 1) {
  21.                                         smilies[i].setAttribute('smilieid', smilieid);
  22.                                         smilies[i].setAttribute('border', "0");
  23.                                 }
  24.                         }
  25.                 } else {
  26.                         window.opener.insertText('<img src="' + src + '" border="0" smilieid="' + smilieid + '" alt="" /> ', false);
  27.                 }
  28.         } else {
  29.                 code += ' ';
  30.                 window.opener.AddText(code);
  31.         }
  32. }
  33. </script>
复制代码



        替换代码为:


  1. <table cellspacing="0" cellpadding="0" width="100%" class="tableborder altbg1" style="border-bottom:0px">
  2. <tr><td height="25px" style="font-weight:bold;">&nbsp;{lang post_smilies}</td><td align="right">{$smile_select}&nbsp;</td></tr>
  3. </table>
  4. <table cellspacing="{INNERBORDERWIDTH}" cellpadding="{TABLESPACE}" width="100%" class="tableborder" id="smilietable">
  5. <tr>
  6.         <td colspan="2">
  7. <!--{loop $smile_array $key $smiley}-->
  8. <img src="{SMDIR}/$smiley[url]" border="0" alt="$smiley[code]" id="smilie_$key" onClick="insertSmilies($key)" onMouseover="this.style.cursor = is_ie ? 'hand' : 'pointer';" />
  9. <!--{/loop}-->
  10.         </td>
  11. </tr>
  12. </table>

  13. <script type="text/javascript">
  14. function insertSmilies(smilieid) {
  15.         window.parent.checkFocus();
  16.         var src = $('smilie_' + smilieid).src;
  17.         var code = $('smilie_' + smilieid).pop;
  18.         if(typeof window.parent.wysiwyg != 'undefined' && window.parent.wysiwyg && window.parent.allowsmilies && (!window.parent.$('smileyoff') || window.parent.$('smileyoff').checked == false)) {
  19.                 if(is_moz) {
  20.                         window.parent.applyFormat('InsertImage', false, src);
  21.                         var smilies = window.parent.findtags(editdoc.body, 'img');
  22.                         for(var i = 0; i < smilies.length; i++) {
  23.                                 if(smilies[i].src == src && smilies[i].getAttribute('smilieid') < 1) {
  24.                                         smilies[i].setAttribute('smilieid', smilieid);
  25.                                         smilies[i].setAttribute('border', "0");
  26.                                 }
  27.                         }
  28.                 } else {
  29.                         window.parent.insertText('<img src="' + src + '" border="0" smilieid="' + smilieid + '" alt="" /> ', false);
  30.                 }
  31.         } else {
  32.                 code += ' ';
  33.                 window.parent.AddText(code);
  34.         }
  35. }
  36. </script>
复制代码

[ 本帖最后由 suxiangkun 于 2006-9-15 04:48 编辑 ]
 楼主| suxiangkun 发表于 2006-9-15 04:47:03 | 显示全部楼层

这是效果预览图片

呵呵,大伙看看

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| suxiangkun 发表于 2006-9-15 04:48:20 | 显示全部楼层

这是下载信息

改动方法,具体请查看:discuz5表情大改动.txt

附加的文件是情感在官方程序基础上修改的

演示网站:www.rconline.com.cn

本帖子中包含更多资源

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

x
回复

使用道具 举报

一起工作室 发表于 2006-9-15 04:50:01 | 显示全部楼层
收录到!!真正的DZ5.0插件收集帖!(最后更新于9月15日04.44)[现已经收集插件82个!] &raquo;https://discuz.dismall.com/thread-392898-1-1.html

自己在安装去!!
回复

使用道具 举报

一杯苦咖啡 发表于 2006-9-15 08:07:27 | 显示全部楼层
<iframe id="iframe2" frameborder=0 src="post.php?action=smilies" width="100%" height="100%" scrolling="no" onload="document.all['iframe2'].height=iframe2.document.body.scrollHeight"></iframe>

到底放到哪里了!
回复

使用道具 举报

缘亦如此 发表于 2006-9-15 08:36:17 | 显示全部楼层
好东西,多支持你个!
回复

使用道具 举报

疾风烈火 发表于 2006-9-15 09:07:29 | 显示全部楼层
留个号
回复

使用道具 举报

飞天蛙 发表于 2006-9-15 12:55:11 | 显示全部楼层
表情太多了拉慢速度阿
回复

使用道具 举报

hippoo 发表于 2006-9-15 13:10:22 | 显示全部楼层
不错。正在找这个。
回复

使用道具 举报

空世纪 发表于 2006-9-15 13:19:07 | 显示全部楼层
谢谢,测试成功,不过确实存在显示速度有点慢。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 16:04 , Processed in 0.032031 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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