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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[插件] 用一个浮动层来显示Smilies for 4.0 by lu5266

[复制链接]
lu5266 发表于 2005-12-31 11:54:52 | 显示全部楼层 |阅读模式
原来2.5写了一个,一朋友叫写4.00的,很久了,都没时间,现在终于写好了
是因为全部都是重新写过代码,所以比原来的分页可变成无限多,所以容量也变成无限多
而且所有的图片都是在需要的时候才请求下载(开始的时候以函数代码形式),就是图片可以很多,而不影响速度


【插件名称】用一个浮动层来显示Smilies
【功能说明】对于很多Smilies的来说,这应该是个解决版面问题的好办法 ,可以容纳无限多,因为可以无限分页
而且所有的图片都是在需要的时候才请求下载(开始的时候以函数代码形式),就是图片可以很多,而不影响速度

【适用版本】4.00
【插件作者】lu5266
【修改文件】 post.php
【修改模板】post_sminsert.htm  post_editpost.htm   post_newthread.htm  post_newreply.htm
【技术支持】www.5466.ik8.com
【演示地址】演示
【版权所有】lu5266(www.5466.ik8.com) 转贴请保留必要信息



安装方法:

1:修改post_sminsert.htm

用附件覆盖


2:修改post_newthread.htm  post_newreply.htm  post_editpost.htm (三个修改一样的)


查找:

  1. onKeyDown="ctlent(event);"
复制代码


后面加上:

  1. onfocus="if(this.value.length<1)show_hot_smile(hot_smile,1);"
复制代码


3:修改post.php

查找:

  1.         $smilies = '';
  2.         $moresmilies = 0;
  3.         if($smileyinsert && is_array($_DCACHE['smilies_display'])) {
  4.                 $smileyinsert = 1;
  5.                 $smcols = $smcols ? $smcols : 3;
  6.                 $smilies .= '<tr align="center">';
  7.                 foreach($_DCACHE['smilies_display'] as $key => $smiley) {
  8.                         if($key >= $smcols * 6) {
  9.                                 $moresmilies = 1;
  10.                                 break;
  11.                         }
  12.                         $smilies .= '<td valign="top"><img src="'.SMDIR.'/'.$smiley['url'].'" border="0" onmouseover="this.style.cursor=\'hand\';" onclick="AddText(\''.addcslashes($smiley['code'], '\\\'').'\');"></td>'."\n";
  13.                         $smilies .= !(++$key % $smcols) ? '</tr><tr align="center">' : '';
  14.                 }
  15.         } else {
  16.                 $smileyinsert = 0;

  17.         }
复制代码



替换为:

  1. //===========start layer smiles by lu5266(www.5466.ik8.com)===========
  2.           $smilies = '';
  3.            if($smileyinsert && is_array($_DCACHE['smilies_display'])) {
  4.                 $smileyinsert = 1;
  5.                 $twopage=0;       
  6.                 $smile_num =32;//每页的smile个数
  7.                 $smcols = $smcols ? $smcols : 3;
  8.                 $smilies .= '<script language=javascript defer>function sdisp1(){ sdispt="';
  9.                 foreach($_DCACHE['smilies_display'] as $key => $smiley) {
  10.                         $smilies .= '<td align=center valign=top><img src='.SMDIR.'/'.$smiley['url'].' border=0 onmouseover=this.style.cursor=\\\'hand\\\' onclick=AddText(\\\''.addcslashes($smiley['code'], '\\\'').'\\\')></td>';
  11.                         $smilies .= !(++$key % $smcols) ? '<br>' : NULL;
  12.                         if($key%$smile_num==0 && $key !=0){
  13.                         $spagei=$key/$smile_num+1;                         
  14.                         $spage[]=++$twopage;
  15.                         $smilies.='";document.getElementById("sdisp").innerHTML=sdispt;}  function sdisp'.$spagei.'(){sdispt="';
  16.                         }                         
  17.                 }
  18.                 if($key>$twopage*$smile_num) $spage[]=$twopage+1;
  19.                 $smilies .= '";document.getElementById("sdisp").innerHTML=sdispt;}</script>';
  20.         } else {
  21.                 $smileyinsert = 0;
  22.         }
  23. //===========end layer smiles by lu5266(www.5466.ik8.com)===========
复制代码



完工


说明: (其他的模板也是类似) ,这个说明一定要看啊,否则又会有不必要的问题了,这个必须看.

文件里的你自己可以相应修改: $smile_num =32;//每页的smile个数
摸版: post_sminsert.htm post_layer_sminsert.htm ....

A: top:expression(body.clientHeight/130+body.scrollTop);中的130是跟顶部距离的参数,越大就离顶部越近,130基本上是贴近顶部了,2的话就是居中的位置高度 .如果不想层随滚动条动的话,可以去掉这个语句.

B: hot_smile.style.right=0; //层定位,距右边的距离,也可以自己 用 hot_smile.style.left=0; 代替,那样就变成距左边的距离

C: //hot_smile.style.top=400;  //这个参数你要用的话, 就要先去掉A的那句和//hot_smile.style.top中的//
实现的是定位层跟顶部的距离,越大就离顶部越远

D: cols="85" 是输入框的宽度,可以根据你每行的表情个数(层的宽度取决于表情个数和图片大小)来做适当修改(后台)

E: 如果你的层宽度太大,就是后台设置每行表情的个数太大,我认为小表情的话6个到7个为适.自己实际测试决定

  上面几个参数是要自己测试到合适自己的,这个我没法确定的.
F:要修改背景可以在post_sminsert.htm修改层属性
我的改法:

查找:
  1. <div id=hot_smile  style='position:absolute;top:expression(body.clientHeight/130+body.scrollTop);visibility:hidden'>
复制代码


替换为:
  1. <div id=hot_smile  style='position:absolute;top:expression(body.clientHeight/300+body.scrollTop);visibility:hidden;background-color:{ALTBG1};border: 3px dotted {HEADERBGCODE};'>
复制代码

还有风格有宽,有窄的话,最好根据具体的模板修改 D 的参数(特别的模板的话,就独立出来,其他的就是改默忍的就可以了)

其实这个层可以放到任何你想放的地方,只要你懂(哈哈,废话)


截图:

[ 本帖最后由 lu5266 于 2006-1-1 12:24 编辑 ]

本帖子中包含更多资源

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

x
 楼主| lu5266 发表于 2005-12-31 11:56:35 | 显示全部楼层
在快速发贴和回复里也使用的方法:
【修改文件】include/cache.func.php  forumdisplay.php viewthread.php
【修改模板】 forumdisplay.htm viewthread.htm

安装方法:

1:把附件post_layer_sminsert.htm 传到default目录下

2:修改forumdisplay.htm viewthread.htm
(1)
forumdisplay.htm
查找:
  1. <!--{if $fastpost && $allowpost}-->
复制代码


viewthread.htm
查找(要第二个):
  1. <!--{if $fastpost && $allowpostreply}-->
复制代码


在上面加上:

  1. {template  post_layer_sminsert}
复制代码

(2)
查找:

  1. onKeyDown="ctlent(event);"
复制代码


后面加上:
  1. onfocus="if(!this.value) show_hot_smile(hot_smile,1);"
复制代码


(3)
viewthread.htm
查找:
  1. <input type="checkbox" name="emailnotify" value="1"> {lang post_email_notify}
复制代码

forumdisplay.htm
查找:
  1. <input type="checkbox" name="addtoblog" value="1"> {lang post_blog_thread}<!--{/if}-->
复制代码


下面加上:

  1.         <br><input type="checkbox" name="copymessage" checked> 自动复制内容
  2.         <br><a href=javascript:show_hot_smile(hot_smile,1)>  [显示]  </a>
  3.     <a href=javascript:show_hot_smile(hot_smile,0)>  [隐藏]   </a><b>表情</b>
复制代码


(4)
查找:
  1. {template post_bbinsert}
复制代码

能找到的话,这步完工.
找不到的话,在文档顶部加上
  1. <script language="JavaScript" src="include/bbcode.js"></script>
复制代码


3:修改include/cache.func.php

查找

  1. 'forumdisplay'        => array('announcements_forum', 'globalstick', 'forums', 'icons', 'onlinelist'),
  2.                 'viewthread'        => array('forums', 'usergroups', 'ranks', 'bbcodes', 'smilies', 'fields_thread'),
复制代码


替换为:

  1. 'forumdisplay'        => array('announcements_forum', 'globalstick', 'forums', 'icons', 'onlinelist', 'smilies_display'),
  2.                 'viewthread'        => array('forums', 'usergroups', 'ranks', 'bbcodes', 'smilies', 'fields_thread', 'smilies_display'),
复制代码


4.修改viewthread.php,forumdisplay.php

在viewthread.php

查找:

  1. include template('viewthread');
复制代码


在forumdisplay.php

查找:

  1. include template('forumdisplay');
复制代码


分别在上面加上:

  1. //===========start layer smiles by lu5266(www.5466.ik8.com)===========
  2.        $smilies = '';
  3.            if($smileyinsert && is_array($_DCACHE['smilies_display'])) {
  4.                 $smileyinsert = 1;
  5.                 $twopage=0;       
  6.                 $smile_num =32;//每页的smile个数
  7.                 $smcols = $smcols ? $smcols : 3;
  8.                 $smilies .= '<script language=javascript defer>function sdisp1(){ sdispt="';
  9.                 foreach($_DCACHE['smilies_display'] as $key => $smiley) {
  10.                         $smilies .= '<td align=center valign=top><img src='.SMDIR.'/'.$smiley['url'].' border=0 onmouseover=this.style.cursor=\\\'hand\\\' onclick=AddText(\\\''.addcslashes($smiley['code'], '\\\'').'\\\')></td>';
  11.                         $smilies .= !(++$key % $smcols) ? '<br>' : NULL;
  12.                         if($key%$smile_num==0 && $key !=0){
  13.                         $spagei=$key/$smile_num+1;                         
  14.                         $spage[]=++$twopage;
  15.                         $smilies.='";document.getElementById("sdisp").innerHTML=sdispt;}  function sdisp'.$spagei.'(){sdispt="';
  16.                         }                         
  17.                 }
  18.                 if($key>$twopage*$smile_num) $spage[]=$twopage+1;
  19.                 $smilies .= '";document.getElementById("sdisp").innerHTML=sdispt;}</script>';
  20.         } else {
  21.                 $smileyinsert = 0;
  22.         }
  23. //===========end layer smiles by lu5266(www.ik8.com)===========
复制代码


更新缓存,

恭喜你,你完成了


附上添加smiles的sql语句,可以省去你的许多麻烦
自己做必要的修改

  1. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::37', '0061.gif');
  2. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::38', '0062.gif');
  3. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::39', '0063.gif');
  4. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::40', '0064.gif');
  5. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::41', '0065.gif');
  6. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::42', '0066.gif');
  7. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::43', '0067.gif');
  8. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::44', '0068.gif');
  9. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::45', '0069.gif');
  10. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::46', '0070.gif');
  11. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::47', '0071.gif');
  12. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::48', '0072.gif');
  13. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::49', '0073.gif');
  14. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::50', '0074.gif');
  15. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::51', '0075.gif');
  16. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::52', '0076.gif');
  17. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::53', '0077.gif');
  18. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::54', '0078.gif');
  19. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::55', '0079.gif');
  20. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::56', '0080.gif');
  21. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::57', '0081.gif');
  22. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::58', '0082.gif');
  23. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::59', '0083.gif');
  24. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::60', '0084.gif');
  25. INSERT INTO cdb_smilies(displayorder, type, code, url)VALUES ('1', 'smiley', '::61', '0085.gif');
复制代码

[ 本帖最后由 lu5266 于 2006-2-11 12:53 编辑 ]

本帖子中包含更多资源

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

x
回复

使用道具 举报

oytktk 发表于 2005-12-31 11:59:02 | 显示全部楼层
:)
回复

使用道具 举报

 楼主| lu5266 发表于 2005-12-31 12:03:29 | 显示全部楼层
原帖由 oytktk 于 2005-12-31 11:59 发表
:)


最近一直考试

没有一次是考得好的

哎。。。。。。。。。。。。。
回复

使用道具 举报

winter0706 发表于 2005-12-31 12:11:10 | 显示全部楼层

^.^

十卜
回复

使用道具 举报

 楼主| lu5266 发表于 2005-12-31 12:12:21 | 显示全部楼层
楼上

不要笑我啊

我惨得要命了
回复

使用道具 举报

秋舞叶 发表于 2005-12-31 12:20:15 | 显示全部楼层
顶死 LULU
回复

使用道具 举报

5025488.net 发表于 2005-12-31 12:24:59 | 显示全部楼层
支持
回复

使用道具 举报

qhdnono 发表于 2005-12-31 12:26:23 | 显示全部楼层
顶啊,老大终于弄好哩,等你等的好苦啦,呵呵,不好意思老催你哩,插件最爱lulu的,顶起


[ 本帖最后由 qhdnono 于 2005-12-31 12:36 编辑 ]
回复

使用道具 举报

qhdnono 发表于 2005-12-31 13:45:59 | 显示全部楼层

老大

老大啊,能不能在浮动的层后加个底呀,就像原来的那样?再加个外边框,背景透明有点乱,还有一个,怎么在快速回复和快速发贴也加上这个浮动层哩?谢谢啦麻烦啦

[ 本帖最后由 qhdnono 于 2005-12-31 13:53 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 03:49 , Processed in 0.040717 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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