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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

完美UCH表情功能奉上(可以后台管理,发表和回复时直接插入,!自适应问题解决!)

[复制链接]
zetd 发表于 2008-6-2 20:53:22 | 显示全部楼层 |阅读模式
前台代码大家可以移植到其他地方,比如迷你博客,日志等,具体调用方法我就不写了,大家参考下space_thread_view.htm里的调用代码就明白了,实在不明白的可以问我……


大家可以叫我老贼,有什么新想法可以告诉我,只要有精力和时间,我一定满足大家要求

表情自适应问题解决(没有安装的朋友不需要看这个):
1、请已经安装的朋友重新下载这个后台文件包,然后将其中admin目录下的admincp_smails.php和tpl下的smails.htm重新覆盖,然后到smails下面删除里面的三个php缓存文件,进后台重新导入表情。很多朋友更新表情自适应后发现表情不显示就是因为没有正确更新后台的缘故,造成表情文件的宽度为NULL,所以错误。
2、修改do_ajax.php和do_ajax.htm,详细可以看下面的对照修改一下

要改的地方比较多,下载文件都是自己写的文件,与UCH原来文件没有冲突,请尽管按照目录拷贝

测试地址http://www.qnw.com.cn/uch/space.php?uid=148&do=thread&id=56
先从后台表情管理开始吧
下载的文件包里admin目录和子目录tpl目录的两个文件分别拷贝到对应文件夹里(注意,装过测试版后台表情管理的兄弟也请重新覆盖并更新表情)
然后修改根目录admincp.php,在censor后面加个smails
  1.         array('config', 'privacy', 'usergroup', 'credit', 'profilefield', 'profield', 'censor','smails'),
复制代码
修改admin/tpl目录下header.htm
  1.                 'censor' => '词语屏蔽',
  2.                 'smails' => '表情管理',
复制代码
然后在根目录新建个smails目录,将表情文件拷贝到该目录,并保证该目录具有可写入文件权限,然后登陆后台管理,刷新模板后就可以看到表情管理,然后选择导入新表情就可以看到表情了


默认的表情代码是文件名前加"#",如果要修改默认的表情代码可以在后台单个修改或者修改admincp_smails.php,找到里面"#"号,替换成你自己喜欢的符号就可以了,当然这样修改后你要把表情目录下的几个PHP缓存文件删除后重新导入表情



然后是前台显示及插入表情

先将压缩包内外面的三个文件复制到根目录下

然后修改source下的do_ajax.php
在文件最后的
  1. include template('do_ajax');
复制代码
前面加入代码
  1. elseif($op == 'smils') {
  2.         $start = empty($_GET['start'])?0:intval($_GET['start']);

  3.         if(empty($_SGLOBAL['supe_uid'])) {
  4.                 showmessage('to_login');
  5.         }
  6.         
  7.         $perpage = 20;
  8.         //检查开始数
  9.         ckstart($start, $perpage);
  10.         $file='./smails/smail_cache.php';
  11.         if (file_exists($file)){
  12.                 $smail_list = unserialize(file_get_contents($file));
  13.                 }
  14.         
  15.         $count = 0;
  16.         $smail_list_temp2=$piclist = array();
  17.         foreach ($smail_list as $smail_list_temp1){
  18.                 $smail_list_temp2[]=$smail_list_temp1;
  19.         }
  20.         for ($i=$start;$i<($perpage*($start/20+1));$i++)
  21.         {
  22.                 if($smail_list_temp2[$i]){
  23.                 $piclist[]=$smail_list_temp2[$i];
  24.                 $count++;
  25.                 }
  26.                 else
  27.                 {
  28.                 break;
  29.                 }

  30.         }
  31.         $multi = smulti($start, $perpage, $count, "do.php?ac=ajax&op=smils", $_GET['ajaxdiv']);
  32.         
  33.         
  34. }
  35. elseif($op == 'smilsbig') {
  36. $start = empty($_GET['start'])?0:intval($_GET['start']);
  37. if(empty($_SGLOBAL['supe_uid'])) {
  38.   showmessage('to_login');
  39. }

  40. $perpage = 26;
  41. //检查开始数
  42. ckstart($start, $perpage);
  43. $file='./smails/smail_cache.php';
  44. if (file_exists($file)){
  45.   $smail_list = unserialize(file_get_contents($file));
  46.   }

  47. $count = 0;
  48. $smail_list_temp2=$piclist = array();
  49. foreach ($smail_list as $smail_list_temp1){
  50.   $smail_list_temp2[]=$smail_list_temp1;
  51. }
  52. for ($i=$start;$i<($perpage*($start/26+1));$i++)
  53. {
  54.   if($smail_list_temp2[$i]){
  55.   $piclist[]=$smail_list_temp2[$i];
  56.   $count++;
  57.   }
  58.   else
  59.   {
  60.   break;
  61.   }
  62. }
  63. $multi = smulti($start, $perpage, $count, "do.php?ac=ajax&op=smilsbig", $_GET['ajaxdiv']);


  64. }
复制代码
修改模板目录下do_ajax.htm
在最下面的
  1. <!--{/if}-->

  2. <!--{template footer}-->
复制代码
前面加上

  1. <!--{elseif $op == 'smils'}-->
  2. <table summary="smilies" cellpadding="0" cellspacing="0" style="clear: both;" >
  3. <tr align="center">
  4. <!--{eval $i=0;}-->
  5. <!--{loop $piclist $value}-->
  6.         <td align="center" id="smilie_$value[filecode]_parent" onMouseover="smileyMenu(this)" onClick="insertImaget('$value[filecode]')"><img src="$value[filename]" id="smilie_$value[filecode]" alt="$value[filecode]" title="$value[filecode]" width="$value[filewidth]" />
  7.   </td>
  8.   <!--{if $i==9}-->
  9.    </tr><tr>
  10.    <!--{eval $i=0;}-->
  11.   <!--{else}-->
  12.    <!--{eval $i++;}-->
  13.   <!--{/if}-->
  14. <!--{/loop}-->
  15. </tr>
  16. </table>
  17. $multi[html]
  18. <!--<div class="pages_btnsx">
  19. <div class="pagesx"><strong>1</strong><a href="forumdisplay.php?fid=2&page=2">2</a><a href="forumdisplay.php?fid=2&page=2" class="next">&#8250;&#8250;</a></div>-->
  20. </div>
  21. <!--{elseif $op == 'smilsbig'}-->
  22. <table summary="smilies" cellpadding="0" cellspacing="0" style="clear: both;">
  23. <tr align="center">
  24. <!--{eval $i=0;}-->
  25. <!--{loop $piclist $value}-->
  26.         <td align="center" id="smilie_$value[filecode]_parent" onMouseover="smileyMenu(this)" onClick="edit_insert('$value[refilename]')"><img src="$value[filename]" id="smilie_$value[filecode]" alt="$value[filecode]" title="$value[filecode]"  border="0" width="$value[filewidth]" />
  27.   </td>
  28.   <!--{if $i==12}-->
  29.    </tr><tr>
  30.    <!--{eval $i=0;}-->
  31.   <!--{else}-->
  32.    <!--{eval $i++;}-->
  33.   <!--{/if}-->
  34. <!--{/loop}-->
  35. </tr>
  36. </table>
  37. $multi[html]
  38. <!--<div class="pages_btnsx">
  39. <div class="pagesx"><strong>1</strong><a href="forumdisplay.php?fid=2&page=2">2</a><a href="forumdisplay.php?fid=2&page=2" class="next">&#8250;&#8250;</a></div>-->
  40. </div>
复制代码
到此为止是表情插件的相关设置文件,下面就是在页面如何调用


修改模板目录下space_thread_view.htm
  1.                                 <h4>回复主题</h4>
  2.                                 <table>
  3.                                         <tr>
  4.                                                 <td><textarea id="post_message" name="message" onkeydown="ctrlEnter(event, 'postsubmit_btn');" rows="6"></textarea></td>
  5.                                         </tr>
复制代码
后面加上
  1.                                         <tr><td>
  2.                                                 <div class="tabs_header">
  3.                                                         <ul class="tabs">
  4.                                                                 <li class="active" style="width:68px;"><a>默认表情</a></li>
  5.                                                         </ul>
  6.                                                 </div>
  7.                                                 <script language='javascript' type='text/javascript' src='smils.js'></script>
  8.                                                 <style type='text/css'>@import url(smils.css);</style>
  9.                                                 <div id="smilieslist"></div>
  10.                                         <script type="text/javascript">ajaxget('do.php?ac=ajax&op=smils&ajaxdiv=smilieslist', 'smilieslist');</script>

  11.                                         </td></tr>
复制代码
这段代码就是用AJAX调用图片的列表,你可以吧这段代码放到任何你需要表情功能的表单内,注意,这段是不带编辑器的表单才能用,下面那段是带编辑器的。至于显示就是找到显示的模板文件找到$value[message](一般是这个),调用下smilsfunction.php,然后用smils_replace函数替换下message,具体可以看post_li.htm的修改



修改模板目录下cp_thread.htm
  1.         <tr>
  2.                 <th><label for="message">内容:</label></th>
  3.                 <td>
  4. <!--                <textarea id="message" name="message" onkeydown="ctrlEnter(event, 'btnsubmit');" style="width:98%;" rows="10"></textarea>-->
  5.                                 <textarea class="userData" name="message" id="uchome-ttHtmlEditor" style="height:100%;width:100%;display:none;border:0px">$threadedit[message]</textarea>
  6.                                 <iframe src="editor.php?charset=$_SC[charset]&allowhtml=$allowhtml" name="uchome-ifrHtmlEditor" id="uchome-ifrHtmlEditor" scrolling="no" border="0" frameborder="0" style="width:100%;border: 1px solid #C5C5C5;" height="250"></iframe>
  7.                
  8.                 </td>
  9.         </tr>
复制代码
后面加上
  1.         <tr>
  2.         <th>表情:</th><td>
  3.                                                 <div class="tabs_header">
  4.                                                         <ul class="tabs">
  5.                                                                 <li class="active" style="width:68px;"><a>默认表情</a></li>
  6.                                                         </ul>
  7.                                                 </div>
  8.                                                 <script language='javascript' type='text/javascript' src='smils.js'></script>
  9.                                                 <style type='text/css'>@import url(smils.css);</style>
  10.                                                 <div id="smilieslist"></div>
  11.                                         <script type="text/javascript">ajaxget('do.php?ac=ajax&op=smilsbig&ajaxdiv=smilieslist', 'smilieslist');</script>
  12.         
  13.                                         </td>
  14.                                         </tr>
复制代码
修改source目录下function_thread.php(这个文件是安装话题编辑和图片上传插件的朋友才有)
在头部增加
  1. @include_once(S_ROOT.'/smilsfunction.php');
复制代码
然后在
  1. function blog_post($POST, $olds=array()) {
  2.         global $_SGLOBAL, $_SC;
  3.         //内容
复制代码
后面加上
  1.         $POST['message'] = smils_replace($POST['message']);
复制代码
修改模板文件下space_post_li.htm
在头部增加
  1. <!--{eval @include_once(S_ROOT.'/smilsfunction.php');}-->
复制代码
然后在将
  1.         <div class="detail" id="detail_$value[pid]">
  2.                 $value[message]
  3.                 <!--{if $value[pic]}--><div><a href="$value[pic]" target="_blank"><img src="$value[pic]" class="resizeimg" /></a></div><!--{/if}-->
  4.         </div>
复制代码
改成
  1.         <div class="detail" id="detail_$value[pid]">
  2.                 <!--{eval echo smils_replace($value['message']);}-->
  3.                 <!--{if $value[pic]}--><div><a href="$value[pic]" target="_blank"><img src="$value[pic]" class="resizeimg" /></a></div><!--{/if}-->
  4.         </div>
复制代码
然后后台更新模板,测试一下吧

]!!!!这里需要注意的是如果您没有使用我做的话题编辑器和图片上传插件,那么请在模板文件cp_thread.htm!!!!
  1.         <tr>
  2.                 <th><label for="pic">图片:</label></th>
  3.                 <td><input id="pic" class="t_input" type="text" name="pic" value="http://" size="40" /> (只支持 .jpg、.gif、.png为结尾的URL地址)
  4.         </tr>
复制代码
后面加
  1.                                         <tr><td>
  2.                                                 <div class="tabs_header">
  3.                                                         <ul class="tabs">
  4.                                                                 <li class="active" style="width:68px;"><a>默认表情</a></li>
  5.                                                         </ul>
  6.                                                 </div>
  7.                                                 <script language='javascript' type='text/javascript' src='smils.js'></script>
  8.                                                 <style type='text/css'>@import url(smils.css);</style>
  9.                                                 <div id="smilieslist"></div>
  10.                                         <script type="text/javascript">ajaxget('do.php?ac=ajax&op=smils&ajaxdiv=smilieslist', 'smilieslist');</script>

  11.                                         </td></tr>
复制代码
如果您安装了其他话题发表插件,估计话题发表是不能用表情插件了……






希望大家多多检查,如果有问题及时向我反映

[ 本帖最后由 zetd 于 2008-6-3 19:42 编辑 ]

本帖子中包含更多资源

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

x

评分

5

查看全部评分

sharson_hr 发表于 2008-6-2 20:53:52 | 显示全部楼层
居然是沙发
回复

使用道具 举报

meeu 发表于 2008-6-2 21:03:54 | 显示全部楼层
还在前排
回复

使用道具 举报

hb163 发表于 2008-6-2 21:06:12 | 显示全部楼层
强帖,顶了。。收藏。
回复

使用道具 举报

zaobkun 发表于 2008-6-2 21:10:18 | 显示全部楼层
不错啊。支持一个
回复

使用道具 举报

cfking 发表于 2008-6-2 21:39:35 | 显示全部楼层
支持一个。。。。。
回复

使用道具 举报

to51du 发表于 2008-6-2 21:41:40 | 显示全部楼层
好东西  帮你顶啊
回复

使用道具 举报

dinhuajj 发表于 2008-6-2 21:48:12 | 显示全部楼层
好东西,不错,网站现在丰富了很多
回复

使用道具 举报

coobii 发表于 2008-6-2 21:56:53 | 显示全部楼层
zetD太强了,期待你的新作.
强烈支持你的插件.
回复

使用道具 举报

island520 发表于 2008-6-2 22:00:29 | 显示全部楼层
很不错的东西
问题是
要改的
真的好多啊
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 08:35 , Processed in 0.034352 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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