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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[原创]用浮动层来显示Smilies(100个左右)[9.7]增加分页显示

[复制链接]
lu5266 发表于 2005-9-3 09:35:46 | 显示全部楼层 |阅读模式
【插件名称】用一个浮动层来显示Smilies
【功能说明】对于很多Smilies的来说,这应该是个解决版面问题的办法 ,大概可以容纳多很多的 (我的是50个举牌子表情,加上5个相对小一些的表情,我使用的风格还是窄风格,如果大的话,还可以更多的)

【适用版本】2.5&sp1
【插件作者】lu5266
【修改文件】include/cache.php  forumdisplay.php viewthread.php (如果在快速发贴和快速发贴也显示的,就需要改)
【修改模板】post_sminsert.htm  post_editpost.htm   post_newthread.htm  post_newreply.htm  forumdisplay.htm viewthread.htm
【技术支持】www.5466.ik8.com
【演示地址】http://free4.e-168.cn/luzhenling/bbs/forumdisplay.php?fid=12

[9.7]增加分页显示  看三楼


=====================================================
[9.5]bug改正: 在快速回复和发贴的时候,有可能用不了

在viewthread.php,forumdisplay.php里
查找:
  1. showimg
复制代码

替换为:
  1. AddText
复制代码


在viewthread.htm,forumdisplay.htm里
查找:
  1. {template post_bbinsert}
复制代码

能找到的话,就可以用了.
找不到的话,在文档顶部加上
  1. <script language="JavaScript" src="include/bbcode.js"></script>
复制代码


实在不好意思啊.

=====================================================


安装方法:

1:修改post_sminsert.htm

选中所有的

替换为:

  1. <!--{if $smileyinsert}-->
  2. <br>
  3. ┊<a href="javascript:show_hot_smile(hot_smile,1);">显示表情列表</a>┊
  4. <br><br>
  5. ┊<a href="javascript:show_hot_smile(hot_smile,0);">隐藏表情列表</a>┊
  6. <br>
  7. <!--{/if}-->
复制代码


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

查找:

  1. <script language="JavaScript">
  2. var postminchars = $minpostsize;
复制代码


在前面加上:

  1. <div id=hot_smile  style='position:absolute;top:expression(body.clientHeight/130+body.scrollTop);visibility:hidden'>
  2. <table cellspacing="0" cellpadding="0" border="0"  align="center" bgcolor="{BORDERCOLOR}">
  3. <tr><td>
  4. {template post_layer_sminsert}
  5. </td ></tr>


  6. </table></div>

  7. <script language=javascript>
  8. var objname = "";
  9. var H1Visible = 0;
  10. hot_smile.style.right=0; //层定位,距右边的距离
  11. //hot_smile.style.top=400;
  12. function show_hot_smile(objname,showmethod){
  13. if (objname != ""){
  14. if (showmethod==1){
  15. objname.style.visibility="visible";
  16. H1Visible = 1;}
  17. else{
  18. objname.style.visibility="hidden";
  19. H1Visible = 0; }
  20. }
  21. }
  22. </script>
复制代码


=========================================================
说明: (其他的模板也是类似) ,这个说明一定要看啊,否则又会有不必要的问题了,这个必须看.
=========================================================
A: top:expression(body.clientHeight/130+body.scrollTop);中的130是跟顶部距离的参数,越大就离顶部越近,130基本上是贴近顶部了,2的话就是居中的位置高度 .如果不想层随滚动条动的话,可以去掉这个语句.

B: hot_smile.style.right=0; //层定位,距右边的距离

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

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

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

  上面几个参数是要自己测试到合适自己的,这个我没法确定的.

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

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


查找:

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


后面加上:

  1. onfocus="show_hot_smile(hot_smile,1);"
复制代码


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

================================================
下面的是快速回复和快速发贴的修改方法: (不用的话,可以跳过,完成插件安装咯)
================================================

4:修改forumdisplay.htm viewthread.htm


forumdisplay.htm
查找:
  1. <!--{if $fastpost && $allowpost}-->
复制代码


viewthread.htm
查找:
  1. <!--{if $fastpost && $allowpostreply}-->
复制代码


在前面加上:

  1. <div id=hot_smile  style='position:absolute;top:expression(body.clientHeight/130+body.scrollTop);visibility:hidden'>
  2. <table cellspacing="0" cellpadding="0" border="0"  align="center" bgcolor="{BORDERCOLOR}">
  3. <tr><td>
  4. {template post_layer_sminsert}
  5. </td ></tr>


  6. </table></div>

  7. <script language=javascript>
  8. var objname = "";
  9. var H1Visible = 0;
  10. hot_smile.style.right=0;
  11. //hot_smile.style.top=400;
  12. function show_hot_smile(objname,showmethod){
  13. if (objname != ""){
  14. if (showmethod==1){
  15. objname.style.visibility="visible";
  16. H1Visible = 1;}
  17. else{
  18. objname.style.visibility="hidden";
  19. H1Visible = 0; }
  20. }
  21. }
  22. </script>
复制代码


查找:


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


后面加上:

  1. onfocus="show_hot_smile(hot_smile,1);"
复制代码


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

能找到的话,就可以用了.
找不到的话,在文档顶部加上
  1. <script language="JavaScript" src="include/bbcode.js"></script>
复制代码



5:修改include/cache.php

查找

  1. 'forumdisplay'        => array('announcements_forum','forums','icons','onlinelist'),
复制代码


替换为:

  1. 'forumdisplay'        => array('announcements_forum','forums','icons','onlinelist','smilies'),
复制代码


6.修改viewthread.php,forumdisplay.php

在viewthread.php

查找:

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


在forumdisplay.php

查找:

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


分别在前面加上:

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


7:更新缓存.还有顺手顶下

=================================
分享我找到的189个举牌子表情
https://discuz.dismall.com/viewth ... ge=1&highlight=
=================================

[ 本帖最后由 lu5266 于 2005-9-9 06:34 编辑 ]

本帖子中包含更多资源

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

x
snowz 发表于 2005-9-3 09:41:22 | 显示全部楼层
图列呢...

偶看看了..

对于表情多的..确实需要一个好的解决方法
回复

使用道具 举报

 楼主| lu5266 发表于 2005-9-3 09:51:28 | 显示全部楼层
更新为分两页显示(多页的我感觉不需要,也难写.)

现在的两页的可以容纳一般大的表情起码有100个(这个已经够多了)


更新方法:

1:在forumdisplay.php viewthread.php  post.php里

查找:

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



替换为:

  1.         if($smileyinsert && is_array($_DCACHE['smilies'])) {
  2.                 $smileyinsert = 1;
  3.                 $twopage=0;
  4.                 $smile_num = 50;//每页的smile个数
  5.                 $smcols = $smcols ? $smcols : 3;
  6.                 $smilies .= '<tr>';
  7.                 foreach(array_reverse($_DCACHE['smilies']) as $key => $smiley) {
  8.                         $smilies .= '<td align="center" valign="top"><img src="'.SMDIR.'/'.$smiley['url'].'" border="0" onmouseover="this.style.cursor=\'hand\';" onclick="AddText(\''.htmlspecialchars(addcslashes($smiley['code'], '\\\'')).'\');"></td>'."\n";
  9.                         $smilies .= !(++$key % $smcols) ? '</tr><tr>' : NULL;
  10.                         if($key/$smile_num==1){ $smilies='<tr><td colspan="5" align="center" bgcolor="#E7DAC8" ><a href="javascript:next_page(\'next\');"><b><font color="red" >┊下一页┊</font><a href="javascript:show_hot_smile(hot_smile,0);"><font color="red">┊隐藏Smilies列表┊</font></b></a> </td></tr>'.$smilies.'</table></div><div  id=hot_smile2  style=\'position:absolute;visibility:hidden;\' ><table cellpadding="0" cellspacing="0" border="0" bgcolor="#E7DAC8" style="border:1px dotted #808000;">
  11. <tr><td colspan="5" align="center" bgcolor="#E7DAC8" ><a href="javascript:next_page(\'back\');"><b><font color="red" >┊上一页┊</font><a href="javascript:show_hot_smile(hot_smile,0);"><font color="red">┊隐藏Smilies列表┊</font></b></a></td></tr>';
  12.                         }
  13.                         if($key/$smile_num==1) $twopage=1 ;
  14.                 }
  15.         } else {
  16.                 $smileyinsert = 0;
  17.         }
复制代码



2:下载附件把原来的覆盖



说明:

A: $smile_num = 50;//每页的smile个数

B: forumdisplay.php viewthread.php这两个文件的修改的条件是你原来安装过一楼的,否则找不到

c: 对于层第一页的背景颜色,可以在对应的模板那里修改
<table cellspacing="0" cellpadding="0" border="0"  align="center" bgcolor="{BORDERCOLOR}">

层第二页的背景颜色,在forumdisplay.php viewthread.php  post.php里的
<table cellpadding="0" cellspacing="0" border="0" bgcolor="#E7DAC8"

[ 本帖最后由 lu5266 于 2005-9-7 22:28 编辑 ]

本帖子中包含更多资源

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

x
回复

使用道具 举报

jimmyjimmyqqq 发表于 2005-9-3 10:01:50 | 显示全部楼层
板凳,支持你,lu5266
回复

使用道具 举报

freddy 发表于 2005-9-3 10:41:38 | 显示全部楼层
位置也不留一个..唉~郁闷~加精了!
回复

使用道具 举报

 楼主| lu5266 发表于 2005-9-3 10:51:15 | 显示全部楼层
原帖由 freddy 于 2005-9-3 10:41 发表
位置也不留一个..唉~郁闷~加精了!

哈哈
怎么留啊


[ 本帖最后由 lu5266 于 2005-9-7 21:56 编辑 ]

本帖子中包含更多资源

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

x
回复

使用道具 举报

freddy 发表于 2005-9-3 10:53:53 | 显示全部楼层
我要沙发!呜哇~
回复

使用道具 举报

 楼主| lu5266 发表于 2005-9-3 10:56:12 | 显示全部楼层
原帖由 freddy 于 2005-9-3 10:53 发表
我要沙发!呜哇~

留不下来啊

我不能关闭主题的

嘿嘿
回复

使用道具 举报

 楼主| lu5266 发表于 2005-9-3 10:56:31 | 显示全部楼层
原帖由 jimmyjimmyqqq 于 2005-9-3 10:01 发表
板凳,支持你,lu5266


呵呵
回复

使用道具 举报

freddy 发表于 2005-9-3 10:57:48 | 显示全部楼层
说正经的~我再支持一遍!!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 01:58 , Processed in 0.036964 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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