首页 > 网站 > 建站经验 > 正文

uchome工作笔记--添加微新闻功能

2024-08-30 19:06:56
字体:
来源:转载
供稿:网友

微新闻功能介绍:

微新闻即短小的新闻新闻,像新鲜事,微博一样.

功能有:用户通过即时窗口发布,其他用户可以在第一条微新闻下的直接进行回复评论.

在UCHOME中添加功能具体方法如下:

1、建立发布微新闻的页面:

以下是发布微新闻的发布框,可用更新个人签名的模块来修改,称为页面a.html:

  1. <div id="mood_wxwform">   
  2.     <form method="post" action="cp.php?ac=mnews" id="mood_addwxwform">   
  3.         <div id="mood_statusinput_wxw" class="statusinput_wxw"><textarea name="message" id="mood_message_wxw" onclick="statusFace();" onkeydown="if(event.keyCode == 13 ){ event.returnValue=false;event.cancel = true;$('mood_add_wxw').click();$('mood_message_wxw').value='';this.blur(); };" >你可以在这里发布你相关的所见所闻,分享给大家!</textarea></div>   
  4.         <div class="statussubmit_wxw">   
  5.             <input type="button" id="mood_add_wxw" name="add_wxw" value="发布" class="submit" style="display:block;" onclick="ajaxpost('mood_addwxwform', 'reloadMood');$('mood_message_wxw').value='';" />   
  6.             <input type="hidden" name="addsubmit" value="true" />   
  7.             <input type="hidden" name="spacenote" value="true" />   
  8.             <input type="hidden" name="formhash" value="<!--{eval echo formhash();}-->" />   
  9.         </div>   
  10.            
  11.     </form>   
  12. </div> 

a.html显示微新闻部分:

  1. <div id="mood_mystatus_wxw">   
  2. <!--{if $wxwlist}-->   
  3. <!--{loop $wxwlist $r}-->   
  4. <table style="width:620px; margin-top:10px;"><tr><td style="vertical-align:top; padding-top:5px; width:50px;"><!--{avatar($_SGLOBAL[supe_uid],small)}--></td>   
  5. <td style="vertical-align:top; padding-left:10px;">   
  6. <div style="height:auto; font-size:14px; color:#617d80; line-height:22px;"><span style="color:#124a83; font-weight:bold;">$r[username]</span>:$r[message]</div>   
  7. <br/>   
  8. <div style="height:25px; font-size:12px; color:#617d80; list-style:22px;">   
  9.   <!--{if emptyempty($_TPL[hidden_time])}-->   
  10.         <span class="gray"><!--{date('m-d H:i',$r[dateline],1)}--></span>   
  11.         <!--{/if}-->   
  12.         </div>   
  13. </td></tr></table>   
  14. <!--{/loop}-->   
  15. <!--{if $count==$perpage}-->   
  16.     <div class="page" style="padding-top:20px;">   
  17.         <a href="javascript:;" onclick="getmore();" id="a_feed_more">查看更多动态</a>   
  18.     </div>   
  19.     <!--{/if}-->   
  20. <!--{/if}-->   
  21. </div>   
  22. <div id="friendswxw" style="display:none;">   
  23. <!--{if $friendwxwlist}-->   
  24. <!--{loop $friendwxwlist $r}-->   
  25. <table style="width:620px; margin-top:10px;"><tr><td style="vertical-align:top; padding-top:5px; width:50px;"><!--{avatar($_SGLOBAL[supe_uid],small)}--></td>   
  26. <td style="vertical-align:top; padding-left:10px;">   
  27. <div style="height:auto; font-size:14px; color:#617d80; line-height:22px;"><span style="color:#124a83; font-weight:bold;">$r[username]</span>:$r[message]</div>   
  28. <br/>   
  29. <div style="height:25px; font-size:12px; color:#617d80; list-style:22px;">   
  30.   <!--{if emptyempty($_TPL[hidden_time])}-->   
  31.         <span class="gray"><!--{date('m-d H:i',$r[dateline],1)}--></span>   
  32.         <!--{/if}-->   
  33.          <span style="margin-left:15px; color:#124981;">   
  34.            
  35.         (<a href="javascript:;" onclick="dowxwcomment_get('dowxwcomment_$r[newsid]', 1);" id="dowxw_a_op_$r[newsid]">回复</a>)   
  36.         (<a href="cp.php?ac=share&type=blog&id=$blog[blogid]" id="a_share" onclick="ajaxmenu(event, this.id, 1)" class="a_share">分享</a>)  //开源软件:Vevb.com 
  37. </span></div>   
  38. <div id="dowxwcomment_$r[newsid]" style="display:none;"></div>   
  39. </td></tr></table>   
  40. <!--{/loop}-->   
  41. <!--{else}-->   
  42. <span class="gray">好友还没有发布微新闻!</span>   
  43. <!--{/if}-->   
  44. </div> 

相应的a.php页面:

  1. //分页   
  2. $perpage =5; //;$_SCONFIG['feedmaxnum']<50?50:$_SCONFIG['feedmaxnum'];   
  3. $start = 0;   
  4. if($_GET['pages']>1)   
  5. {   
  6.     $perpage=$perpage*$_GET['pages'];   
  7.     }   
  8. $perpage = mob_perpage($perpage);   
  9.    
  10. $query$_SGLOBAL['db']->query("SELECT a.newsid,a.username,a.uid,a.dateline,b.message FROM ".tname('m_news')." as a left join ".tname('m_newsfield')." as b on a.newsid=b.newsid where a.uid=".$space[uid]." order by dateline desc LIMIT $start,$perpage");   
  11. $count = $filtercount = 0;   
  12. $wxwlist=array();   
  13. while ($value=$_SGLOBAL['db']->fetch_array($query)) {   
  14.            
  15.             $wxwlist[] = $value;   
  16.             $count++;   
  17.         };   

调用的JS代码,也同样用个性签名的来做修改:

  1. <script type="text/javascript">   
  2.     function statusFace() {   
  3.         if($('mood_message_wxw').value == '你可以在这里发布你相关的所见所闻,分享给大家!'){   
  4.             $('mood_message_wxw').value = '';   
  5.         }   
  6.         $('mood_statusinput_wxw').style.zIndex = '20000';   
  7.         $('mood_statusinput_wxw').className = 'statusinput2_wxw';   
  8.            
  9.            
  10.         var div = $('mood_face_bg');   
  11.         if(div) {   
  12.             div.parentNode.removeChild(div);   
  13.         }   
  14.         div = document.createElement('div');   
  15.         div.id = 'mood_face_bg';   
  16.         div.style.position = 'absolute';   
  17.         div.style.left = div.style.top = '0px';   
  18.         div.style.width = '100%';   
  19.         div.style.height = document.body.scrollHeight + 'px';   
  20.         div.style.backgroundColor = '#000';   
  21.         div.style.zIndex = 10000;   
  22.         div.style.display = 'none';   
  23.         div.style.filter = 'alpha(opacity=0)';   
  24.         div.style.opacity = 0;   
  25.         div.onclick = function() {   
  26.             hiddenstatus();   
  27.         }   
  28.         $('append_parent').appendChild(div);   
  29.        
  30.        
  31.         if($('mood_message_wxw_menu') != null) {   
  32.             $('mood_message_wxw_menu').style.display = '';   
  33.             $('mood_add_wxw').style.display = '';   
  34.         } else {   
  35.             var faceDiv = document.createElement("div");   
  36.             faceDiv.id = 'mood_message_wxw_menu';   
  37.             faceDiv.className = 'facebox';   
  38.             faceDiv.style.position = 'absolute';   
  39.             var faceul = document.createElement("ul");   
  40.             for(i=1; i<31; i++) {   
  41.                 getStatusFace(i, faceul);      
  42.             }   
  43.             faceDiv.appendChild(faceul);   
  44.             $('append_parent').appendChild(faceDiv);   
  45.         }   
  46.         //定位菜单   
  47.         setMenuPosition('mood_message_wxw', 0);   
  48.         div.style.display = '';   
  49.     }   
  50.        
  51.     function hiddenstatus() {   
  52.         $('mood_message_wxw_menu').style.display = 'none';   
  53.         $('mood_face_bg').style.display = 'none';   
  54.         $('mood_statusinput_wxw').className = 'statusinput_wxw';   
  55.         if($('mood_message_wxw').value == ''){   
  56.             $('mood_message_wxw').value = '你可以在这里发布你相关的所见所闻,分享给大家!';   
  57.         }   
  58.         $('mood_statusinput_wxw').style.zIndex = '1';   
  59.     }   
  60.        
  61.     function getStatusFace(i, faceul) {   
  62.         var faceli = document.createElement("li");   
  63.         faceli.innerHTML = '<img src="image/face/'+i+'.gif" style="cursor:pointer; position:relative;" />';   
  64.         faceli.getElementsByTagName('img').item(0).onclick = function(){var faceText = '[em:'+i+':]'if($('mood_message_wxw') != null) { insertContent('mood_message_wxw', faceText); }};   
  65.         faceul.appendChild(faceli);   
  66.     }   
  67.        
  68.     function reloadMood(showid, result) {   
  69.         var x = new Ajax();   
  70.         x.get('cp.php?ac=mnews&op=getwxw'function(s){   
  71.             $('mood_mystatus_wxw').innerHTML = s;   
  72.         });   
  73.         //提示获得积分   
  74.         showreward();   
  75.         hiddenstatus();   
  76.     }   
  77. </script> 

以上就完成了发布框的与微新闻信息的显示,接下来看如果发布微新闻,当点击发布按钮时:

  1. <input type="button" id="mood_add_wxw" name="add_wxw" value="发布" class="submit" style="display:block;" onclick="ajaxpost('mood_addwxwform', 'reloadMood');$('mood_message_wxw').value='';" />  

表单提交到mnews.php:

  1. <form method="post" action="cp.php?ac=mnews" id="mood_addwxwform">   
  2. mnews.php代码部分: 
  3. [html] view plaincopyprint? 
  4. if(submitcheck('addsubmit')) {   
  5.     if(emptyempty($mnews['newsid']))    
  6.     {   
  7.         $mnews = array();   
  8.     }   
  9.     else   
  10.     {   
  11.         if(!checkperm('allowmblog'))   
  12.         {   
  13.             ckspacelog();   
  14.             showmessage('no_authority_to_add_log');   
  15.         }   
  16.     }   
  17.    
  18.     include_once(S_ROOT.'./source/function_mnews.php');   
  19.     //入库   
  20.     if($newmnews = mnews_post($_POST$mnews)) {   
  21.           //开源软件:Vevb.com 
  22.             $aa="1";   
  23.      }   
  24. }   

至此发布功能完成,接下来是回复,回复延用动态信息的回复框:

  1. <span id="dowxwcomment_form_{$newsid}_{$id}">   
  2.     <form id="dowxwcommform_{$newsid}_{$id}" method="post" action="cp.php?ac=comment" style="padding-left:10px;">   
  3.         <a href="#" id="do_face_{$newsid}_{$id}" title="插入表情" onclick="showFace(this.id, 'do_message_{$newsid}_{$id}');return false;"><img src="image/facelist.gif" align="absmiddle" /></a>   
  4.         <input type="text" id="do_message_{$newsid}_{$id}" name="message" size="35" class="t_input" onkeydown="return ctrlEnter(event, 'dowxwcommform_btn_{$newsid}_{$id}', 1);">   
  5.         <input type="hidden" name="commentsubmit" value="true" />   
  6.         <input type="hidden" name="idtype" value="newsid">   
  7.          <input type="hidden" name="id" value="{$newsid}">   
  8.         <input type="button" name="do_button" class="submit" id="dowxwcommform_btn_{$newsid}_{$id}" onclick="ajaxpost('dowxwcommform_{$newsid}_{$id}', 'dowxwcomment_get', 1)" value="回复">   
  9.         <button type="button" name="btncancel" class="button" onclick="dowxwcomment_form_close($newsid, $id);">取消</button>   
  10.         <input type="hidden" name="formhash" value="<!--{eval echo formhash();}-->" />   
  11.     </form>   
  12.     <div id="__dowxwcommform_{$newsid}_{$id}"></div>   
  13.     </span>

以上表单,提交到:

  1. action="cp.php?ac=comment",完成入库,统计,权限判断等操作后返回请求页面    
  2. if($_POST['idtype']=='newsid')   
  3.     {   
  4.         $url='cp.php?ac=mnews&op=getcomment';   
  5.         }   
  6.     showmessage($msg$url, 0, $magvalues); 

回复功能完成.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表