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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

【原创】根据个别论坛发布滚动公告 For D25 SP1

[复制链接]
8度空间 发表于 2005-7-2 04:30:04 | 显示全部楼层 |阅读模式
演示: http://www.8talk.net/bbs/

作者:凡人·八度空间论坛 (friends@8talk.net)
安装需求:Discuz 2.5F/2.5FSP1
安装程度:容易
上传附件:announcement_build0702.rar
修改文件:
/
- forumdisplay.php
/admin/
- announcements.php
/include/
- cache.php
/templates/
- forumdisplay.htm

技术支持: 无需
插件功能:根据个别论坛发布公告,公告将以滚动方式显示在所选择的论坛上。可以选择多个板块,只有所有论坛公告将在所有论坛和主页显示,其余将只在所选择的论坛显示,没有选择任何论坛的公告将默认为所有论坛公告。

1。首先到后台数据库升级数据库:


  1. ALTER TABLE `cdb_announcements` ADD `forumid` TINYTEXT NOT NULL AFTER `id` ;
复制代码


2。打开forumdisplay.php:

查寻:

  1. $announcement_list = array();
  2. if($page == 1  && $_DCACHE['announcements_forum']) {
  3.         foreach($_DCACHE['announcements_forum'] as $ann) {
  4.                 $ann['authorencode'] = rawurlencode($ann['author']);
  5.                 $ann['starttime'] = gmdate("$dateformat $timeformat", $ann['starttime'] + ($timeoffset * 3600));
  6.                 $announcement_list[] = $ann ;
  7.         }
  8. }
复制代码


替换成:

  1. $announcements = '';
  2. if($_DCACHE['announcements_forum']) {
  3.         $space = '';
  4.         foreach($_DCACHE['announcements_forum'] as $announcement) {
  5.                 if (strstr($announcement[forumid], "\t$fid\t") || $announcement[forumid] == ''){
  6.                         if($timestamp >= $announcement['starttime'] && ($timestamp <= $announcement['endtime'] || !$announcement['endtime'])) {
  7.                                 if ($announcement['posturl']){
  8.                                         $announcements .= $space.'<a href="'.$announcement['posturl'].'" target="_blank"><span class="bold">'.$announcement['subject'].'</span> '.
  9.                                         '('.gmdate($dateformat, $announcement['starttime'] + $timeoffset * 3600).')</a>';
  10.                                 }else{
  11.                                         $announcements .= $space.'<a href="announcement.php?id='.$announcement['id'].'#'.$announcement['id'].'" target="_blank"><span class="bold">'.$announcement['subject'].'</span> '.
  12.                                         '('.gmdate($dateformat, $announcement['starttime'] + $timeoffset * 3600).')</a>';
  13.                                 }
  14.                                 $space = '&nbsp; &nbsp; &nbsp; &nbsp;';
  15.                         }
  16.                 }
  17.         }
  18. }
复制代码



3。打开include/cache.php:

查寻:

  1. $conditions = "ORDER BY displayorder ASC, starttime DESC";
复制代码


替换成:

  1. $conditions = "WHERE forumid='' ORDER BY displayorder ASC, starttime DESC";
复制代码


查寻:

  1. $cols = " id, author, posturl, subject,starttime";
复制代码


替换成:

  1. $cols = " id, forumid, author, posturl, subject,starttime";
复制代码


查寻:

  1. $conditions = "ORDER BY displayorder ASC, starttime DESC LIMIT 0, $ann_num";
复制代码


替换成:

  1. $conditions = "ORDER BY displayorder ASC, starttime DESC";
复制代码


4。打开templates/default/forumdisplay.htm:

查寻并删除:

  1.           <!--{if $page == 1 && count($announcement_list)}-->
  2.                         <!--{loop $announcement_list $key $announcement}-->

  3.           <tr>
  4.             <!--{if !$announcement[posturl]}-->
  5.             <td width="4%" align="center" bgcolor="{ALTBG2}"><a href="announcement.php?id=$announcement[id]#$announcement[id]" target="_blank"><img src="{IMGDIR}/announcement.gif" border="0"></a></td>
  6.             <td bgcolor="{ALTBG2}" colspan="2" onMouseOver ="this.style.backgroundColor='{ALTBG1}'" onMouseOut ="this.style.backgroundColor='{ALTBG2}'"><B>{lang
  7.               announcement}$announcement[id] :</B> <a href="announcement.php?id=$announcement[id]#$announcement[id]">$announcement[subject]</a></td>
  8.             <!--{else}-->
  9.             <td bgcolor="{ALTBG2}" align="center"><a href="$announcement[posturl]" target="_blank"><img src="{IMGDIR}/announcement.gif" border="0"></a></td>
  10.             <td bgcolor="{ALTBG2}" colspan="2" onMouseOver ="this.style.backgroundColor='{ALTBG1}'" onMouseOut ="this.style.backgroundColor='{ALTBG2}'"><B>{lang
  11.               announcement}$announcement[id] :</B> <a href="$announcement[posturl]"target="_blank">$announcement[subject]</a></td>
  12.             <!--{/if}-->
  13.             <td bgcolor="{ALTBG1}" align="center"><a href="viewpro.php?username=$announcement[authorencode]">$announcement[author]</a></td>
  14.             <td bgcolor="{ALTBG2}" align="center">-</td>
  15.             <td bgcolor="{ALTBG1}" align="center">-</td>
  16.             <td bgcolor="{ALTBG2}" align="center" class="smalltxt">$announcement[starttime]<br>
  17.               $announcement[message]</td>
  18.           </tr>
  19.                         <!--{/loop}-->   
  20.                   <!--{/if}-->
复制代码


查寻:

  1.           <tr class="header">
  2.             <td colspan="3" align="center">{lang subject}</td>
  3.             <td width="14%" align="center" nowrap>{lang author}</td>
  4.             <td width="6%" align="center" nowrap>{lang replies}</td>
  5.             <td width="6%" align="center" nowrap>{lang views}</td>
  6.             <td width="19%" align="center">{lang lastpost}</td>
  7.           </tr>
复制代码


在上面加入:

  1.     <!--{if !empty($announcement)}-->
  2.     <tr class="header">
  3.     <td colspan="7" background="{IMGDIR}/bg1.gif" align="center">{lang announcement}</td>
  4.     </tr>
  5.         <tr bgcolor="{ALTBG2}" align="center">
  6.         <td colspan="7" align="center">
  7.         <!--{if empty($announcements)}-->
  8.                 {lang index_noannouncement}
  9.         <!--{else}-->
  10.                 <marquee direction="left" scrollamount="3" onMouseOver="this.stop();" onMouseOut="this.start();">
  11.                 $announcements
  12.                 </marquee>
  13.         <!--{/if}-->
  14.         </td></tr>

  15.        <!--{/if}-->
复制代码


5。上传附件里的3个文件,分别为:admin/announcements.php和admin/tpl/announcements_main.php,admin/tpl/announcements_edit.php到相应的目录

6。到后台更新公告及缓存。

完成。祝好运。。


以上安装方法是根据Discuz 2.5SP1 Build 0401版本进行。
由于市面上较少更改后台公告管理的Hack加上时间关系无法整理帖子,所以我只提供直接的文件覆盖方法。


[ 本帖最后由 8度空间 于 2005-7-4 02:51 编辑 ]

本帖子中包含更多资源

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

x
tomsina 发表于 2005-7-2 05:09:36 | 显示全部楼层
沙发!!!

严重支持这个插件
回复

使用道具 举报

 楼主| 8度空间 发表于 2005-7-2 05:14:57 | 显示全部楼层
谢谢支持。。我也是看到有人求这个插件才开发的。。希望大家喜欢。。
回复

使用道具 举报

 楼主| 8度空间 发表于 2005-7-2 18:57:05 | 显示全部楼层
顶一顶。。。
回复

使用道具 举报

renothing 发表于 2005-7-2 19:29:25 | 显示全部楼层
嗯,不错,但是不建议使用,影响整体性能。
回复

使用道具 举报

 楼主| 8度空间 发表于 2005-7-2 19:38:51 | 显示全部楼层
使用cache,如果公告不是太多,影响应该不大。。
回复

使用道具 举报

FreeDZ 发表于 2005-7-2 19:58:58 | 显示全部楼层
看看再说./
回复

使用道具 举报

chuasd 发表于 2005-7-2 20:04:44 | 显示全部楼层
支持
看看再装
现在还用不太到!!
回复

使用道具 举报

FreeDZ 发表于 2005-7-2 20:07:45 | 显示全部楼层
http://dzbbs.net/viewthread.php? ... hlight=%B9%AB%B8%E6
楼主看看跟这个有什么分别.
这个好象修改更加精简...
也不用升级数据库.....
他们的分别在那里??偶看不明白.
回复

使用道具 举报

 楼主| 8度空间 发表于 2005-7-4 02:49:18 | 显示全部楼层
http://dzbbs.net/viewthread.php? ... hlight=%B9%AB%B8%E6
楼主看看跟这个有什么分别.
这个好象修改更加精简...
也不用升级数据库.....
他们的分别在那里??偶看不明白.


基本上是完全不同的东西,楼上的只算是美化论坛首页公告显示方式,把滚动的公告改成淡入淡出方式显示。

而我的这个hack则是根据论坛版面需要,发布个别的公告。
以往的discuz只能在后台设定数目把论坛公告显示在主题列表上,有了这个就可以根据需要,只把所选定的公告以滚动方式显示在主题列表。
上面附上有关后台界面演示。。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 01:53 , Processed in 0.028240 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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