公告模块其中内容直接复制到phpcms文件夹下

该文件夹下有三个文件夹(没有扩展名的皆为文件夹)
model    --announce_model.class.php
modules  --announce                --classes           --announce_tag.class.php
                                   --install           --languages              --zh-cn   --announce.lang.php
                                                       --templates
                                                       --announce.sql
                                                       --config.inc.php
                                                       --extention.inc.php
                                                       --index.html
                                                       --model.php
                                                       --module.sql
                                   --templates         --announce_add.tpl.php
                                                       --announce_edit.tpl.php
                                                       --announce_list.tpl.php
                                   --uninstall         --announce.sql
                                                       --extention.inc.php
                                                       --index.html
                                                       --model.php
                                   --admin_announce.php
                                   --index.php
templates--default                 --announce          --show.html
                                                       --show2.html
所有文件内容,按从上到下顺序
announce_model.class.php:
<?php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_sys_class('model', '', 0);
class announce_model extends model {
    
    public $table_name;
    public function __construct() {
        $this->db_config = pc_base::load_config('database');
        $this->db_setting = 'default';
        $this->table_name = 'announce';
        parent::__construct();
    }
}
?>


announce_tag.class.php:
<?php 
/**
 * 
 * 公告类
 *
 */

defined('IN_PHPCMS') or exit('No permission resources.');

class announce_tag {
    private $db;
    
    public function __construct() {
        $this->db = pc_base::load_model('announce_model');
    }
    
    /**
     * 公告列表方法
     * @param array $data 传递过来的参数
     * @param return array 数据库中取出的数据数组
     */
    public function lists($data) {
        $where = '1';
        $siteid = $data['siteid'] ? intval($data['siteid']) : get_siteid();
        if ($siteid) $where .= " AND `siteid`='".$siteid."'";
        $where .= ' AND `passed`=\'1\' AND (`endtime` >= \''.date('Y-m-d').'\' or `endtime`=\'0000-00-00\')';
        return $this->db->select($where, '*', $data['limit'], 'aid DESC');
    }
    
    public function count() {
        
    }
    
    /**
     * pc标签初始方法
     */
    public function pc_tag() {
        //获取站点
        $sites = pc_base::load_app_class('sites','admin');
        $sitelist = $sites->pc_tag_list();
        $result = getcache('special', 'commons');
        if(is_array($result)) {
            $specials = array(L('please_select', '', 'announce'));
            foreach($result as $r) {
                if($r['siteid']!=get_siteid()) continue;
                $specials[$r['id']] = $r['title'];
            }
        }
        return array(
            'action'=>array('lists'=>L('lists', '', 'announce')),
            'lists'=>array(
                'siteid'=>array('name'=>L('sitename', '', 'announce'),'htmltype'=>'input_select', 'defaultvalue'=>get_siteid(), 'data'=>$sitelist),
            ),
        );
    }
}
?>


announce.lang.php:
<?php

/*Language Format:
Add a new file(.lang.php) with your module name at /phpcms/languages/
translation save at the array:$LANG
*/
$LANG['announce']                        =    '公告';
$LANG['announce_manage']                =    '公告管理';
$LANG['announce_list']                    =    '公告列表';
$LANG['announce_add']                    =    '添加公告';
$LANG['announce_title']                    =    '公告标题:';
$LANG['title_cannot_empty']                =    '公告标题不能为空';
$LANG['announcements_cannot_be_empty']    =    '公告内容不能为空';
$LANG['announcement_successful_added']    =    '公告添加成功';
$LANG['announced_a']                    =    '公告修改成功';
$LANG['announce_passed']                =    '公告批量通过完成!';
$LANG['announce_deleted']                =    '公告批量删除完成!';
$LANG['startdate']                        =    '起始日期';
$LANG['enddate']                        =    '截止日期';
$LANG['announce_content']                =    '公告内容:';
$LANG['announce_status']                =    '公告状态:';
$LANG['edit_announce']                    =    '编辑公告';
$LANG['inputer']                        =    '录入者';
$LANG['check_annonuce']                    =    '审核公告';
$LANG['preview']                        =    '前台预览';
$LANG['index']                            =    '前台';
$LANG['cancel_all_selected']            =    '取消批准选定的公告';
$LANG['pass_all_selected']                =    '通过选定的公告';
$LANG['remove_all_selected']            =    '删除选定的公告';
$LANG['overdue_announce']                =    '过期公告';
$LANG['no_pass_announce']                =    '未审核公告';
$LANG['no_exists']                        =    '此公告不存在或已删除!';
$LANG['affirm_delete']                    =    '您确定要删除吗?';
$LANG['input_announce_title']            =    '请输入公告标题!';
$LANG['title_min_3_chars']                =    '公告标题至少3个汉字以上';
$LANG['right']                            =    '输入正确!';
$LANG['server_no_data']                    =    '服务器没有返回数据,可能服务器忙,请重试';
$LANG['announce_exist']                    =    '该公告已存在';
$LANG['checking']                        =    '正进行合法性校验...';
$LANG['select_stardate']                =    '请选择开始时间!';
$LANG['right_all']                        =    '正确!';
$LANG['select_downdate']                =    '请选择下线时间!';
$LANG['select_style']                    =    '请选择风格!';
$LANG['available_style']                =    '可用风格';
$LANG['lists']                            =    '列表';
$LANG['sitename']                        =    '站点';
?>


announce.sql:
DROP TABLE IF EXISTS `phpcms_announce`;
CREATE TABLE IF NOT EXISTS `phpcms_announce` (
  `aid` smallint(4) unsigned NOT NULL AUTO_INCREMENT,
  `siteid` smallint(5) unsigned NOT NULL DEFAULT '0',
  `title` char(80) NOT NULL,
  `content` text NOT NULL,
  `starttime` date NOT NULL DEFAULT '0000-00-00',
  `endtime` date NOT NULL DEFAULT '0000-00-00',
  `username` varchar(40) NOT NULL,
  `addtime` int(10) unsigned NOT NULL DEFAULT '0',
  `hits` smallint(5) unsigned NOT NULL DEFAULT '0',
  `passed` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `style` char(15) NOT NULL ,
  `show_template` char(30) NOT NULL,
  PRIMARY KEY (`aid`),
  KEY `siteid` (`siteid`,`passed`,`endtime`)
) TYPE=MyISAM ;


config.inc.php:
<?php 
defined('IN_PHPCMS') or exit('Access Denied');
defined('INSTALL') or exit('Access Denied');

$module = 'announce';
$modulename = '公告';
$introduce = '独立模块';
$author = 'phpcms Team';
$authorsite = 'http://www.phpcms.cn';
$authoremail = '';
?>


extention.inc.php:
<?php
defined('IN_PHPCMS') or exit('Access Denied');
defined('INSTALL') or exit('Access Denied');

$parentid = $menu_db->insert(array('name'=>'announce', 'parentid'=>29, 'm'=>'announce', 'c'=>'admin_announce', 'a'=>'init', 'data'=>'s=1', 'listorder'=>0, 'display'=>'1'), true);
$menu_db->insert(array('name'=>'announce_add', 'parentid'=>$parentid, 'm'=>'announce', 'c'=>'admin_announce', 'a'=>'add', 'data'=>'', 'listorder'=>0, 'display'=>'0'));
$menu_db->insert(array('name'=>'edit_announce', 'parentid'=>$parentid, 'm'=>'announce', 'c'=>'admin_announce', 'a'=>'edit', 'data'=>'s=1', 'listorder'=>0, 'display'=>'0'));
$menu_db->insert(array('name'=>'check_announce', 'parentid'=>$parentid, 'm'=>'announce', 'c'=>'admin_announce', 'a'=>'init', 'data'=>'s=2', 'listorder'=>0, 'display'=>'1'));
$menu_db->insert(array('name'=>'overdue', 'parentid'=>$parentid, 'm'=>'announce', 'c'=>'admin_announce', 'a'=>'init', 'data'=>'s=3', 'listorder'=>0, 'display'=>'1'));
$menu_db->insert(array('name'=>'del_announce', 'parentid'=>$parentid, 'm'=>'announce', 'c'=>'admin_announce', 'a'=>'delete', 'data'=>'', 'listorder'=>0, 'display'=>'0'));

$language = array('announce'=>'公告', 'announce_add'=>'添加公告', 'edit_announce'=>'编辑公告', 'check_announce'=>'审核公告', 'overdue'=>'过期公告', 'del_announce'=>'删除公告');
?>


index.html:



model.php:
<?php 
defined('IN_PHPCMS') or exit('Access Denied');
defined('INSTALL') or exit('Access Denied');

return array('announce');
?>



module.sql:
INSERT INTO `phpcms_module` (`module`, `name`, `url`, `iscore`, `version`, `description`, `setting`, `listorder`, `disabled`, `installdate`, `updatedate`) VALUES ('announce', '公告', 'announce/', 0, '1.0', '公告', '', 0, 0, '2010-9-05', '2010-9-05');


announce_add.tpl.php:
<?php 
defined('IN_ADMIN') or exit('No permission resources.');
include $this->admin_tpl('header', 'admin');
?>
<div class="pad-10">
<form method="post" action="?m=announce&c=admin_announce&a=add" name="myform" id="myform">
<table class="table_form" width="100%" cellspacing="0">
<tbody>
    <tr>
        <th width="80"><strong><?php echo L('announce_title')?></strong></th>
        <td><input name="announce[title]" id="title" class="input-text" type="text" size="50" ></td>
    </tr>
    <tr>
        <th><strong><?php echo L('startdate')?>:</strong></th>
        <td><?php echo form::date('announce[starttime]', date('Y-m-d H:i:s'), 1)?></td>
    </tr>
    <tr>
        <th><strong><?php echo L('enddate')?>:</strong></th>
        <td><?php echo form::date('announce[endtime]', $an_info['endtime'], 1);?></td>
    </tr>
    <tr>
        <th><strong><?php echo L('announce_content')?></strong></th>
        <td><textarea name="announce[content]" id="content"></textarea><?php echo form::editor('content');?></td>
    </tr>
    <tr>
          <th><strong><?php echo L('available_style')?>:</strong></th>
        <td>
        <?php echo form::select($template_list, $info['default_style'], 'name="announce[style]" id="style" onchange="load_file_list(this.value)"', L('please_select'))?> 
        </td>
    </tr>
    <tr>
        <th><strong><?php echo L('template_select')?>:</strong></th>
        <td id="show_template"><script type="text/javascript">$.getJSON('?m=admin&c=category&a=public_tpl_file_list&style=<?php echo $info['default_style']?>&module=announce&templates=show&name=announce&pc_hash='+pc_hash, function(data){$('#show_template').html(data.show_template);});</script></td>
    </tr>
    <tr>
        <th><strong><?php echo L('announce_status')?></strong></th>
        <td><input name="announce[passed]" type="radio" value="1" checked>&nbsp;<?php echo L('pass')?>&nbsp;&nbsp;<input name="announce[passed]" type="radio" value="0">&nbsp;<?php echo L('unpass')?></td>
    </tr>
    </tbody>
</table>
<input type="submit" name="dosubmit" id="dosubmit" value=" <?php echo L('ok')?> " class="dialog">&nbsp;<input type="reset" class="dialog" value=" <?php echo L('clear')?> ">
</form>
</div>
</body>
</html>
<script type="text/javascript">
function load_file_list(id) {
    if (id=='') return false;
    $.getJSON('?m=admin&c=category&a=public_tpl_file_list&style='+id+'&module=announce&templates=show&name=announce&pc_hash='+pc_hash, function(data){$('#show_template').html(data.show_template);});
}

$(document).ready(function(){
    $.formValidator.initConfig({formid:"myform",autotip:true,onerror:function(msg,obj){window.top.art.dialog({content:msg,lock:true,'220',height:'70'}, function(){this.close();$(obj).focus();})}});
    $('#title').formValidator({onshow:"<?php echo L('input_announce_title')?>",onfocus:"<?php echo L('title_min_3_chars')?>",oncorrect:"<?php echo L('right')?>"}).inputValidator({min:1,onerror:"<?php echo L('title_cannot_empty')?>"}).ajaxValidator({type:"get",url:"",data:"m=announce&c=admin_announce&a=public_check_title",datatype:"html",cached:false,async:'true',success : function(data) {
        if( data == "1" )
        {
            return true;
        }
        else
        {
            return false;
        }
    },
    error: function(){alert("<?php echo L('server_no_data')?>");},
    onerror : "<?php echo L('announce_exist')?>",
    onwait : "<?php echo L('checking')?>"
    });
    $('#starttime').formValidator({onshow:"<?php echo L('select_stardate')?>",onfocus:"<?php echo L('select_stardate')?>",oncorrect:"<?php echo L('right_all')?>"});
    $('#endtime').formValidator({onshow:"<?php echo L('select_downdate')?>",onfocus:"<?php echo L('select_downdate')?>",oncorrect:"<?php echo L('right_all')?>"});
    $("#content").formValidator({autotip:true,onshow:"",onfocus:"<?php echo L('announcements_cannot_be_empty')?>"}).functionValidator({
        fun:function(val,elem){
        //获取编辑器中的内容
        var oEditor = CKEDITOR.instances.content;
        var data = oEditor.getData();
        if(data==''){
            return "<?php echo L('announcements_cannot_be_empty')?>"
        } else {
            return true;
        }
    }
    });
    $('#style').formValidator({onshow:"<?php echo L('select_style')?>",onfocus:"<?php echo L('select_style')?>",oncorrect:"<?php echo L('right_all')?>"}).inputValidator({min:1,onerror:"<?php echo L('select_style')?>"});
});
</script>


announce_edit.tpl.php:
<?php 
defined('IN_ADMIN') or exit('No permission resources.');
include $this->admin_tpl('header', 'admin');
?>
<div class="pad-10">
<form method="post" action="?m=announce&c=admin_announce&a=edit&aid=<?php echo $_GET['aid']?>" name="myform" id="myform">
<table class="table_form" width="100%">
<tbody>
    <tr>
        <th width="80"><?php echo L('announce_title')?></th>
        <td><input name="announce[title]" id="title" value="<?php echo htmlspecialchars($an_info['title'])?>" class="input-text" type="text" size="50" ></td>
    </tr>
    <tr>
        <th><?php echo L('startdate')?>:</th>
        <td><?php echo form::date('announce[starttime]', $an_info['starttime'], 1)?></td>
    </tr>
    <tr>
        <th><?php echo L('enddate')?>:</th>
        <td><?php $an_info['endtime'] = $an_info['endtime']=='0000-00-00' ? '' : $an_info['endtime']; echo form::date('announce[endtime]', $an_info['endtime'], 1);?></td>
    </tr>
    <tr>
        <th><?php echo L('announce_content')?></th>
        <td >
        <textarea name="announce[content]" id="content"><?php echo $an_info['content']?></textarea>
        <?php echo form::editor('content','basic');?>
        </td>
    </tr>
    <tr>
          <th><strong><?php echo L('available_style')?>:</strong></th>
        <td><?php echo form::select($template_list, $an_info['style'], 'name="announce[style]" id="style" onchange="load_file_list(this.value)"', L('please_select'))?></td>
    </tr>
    <tr>
        <th><?php echo L('template_select')?>:</th>
        <td  id="show_template"><?php if ($an_info['style']) echo '<script type="text/javascript">$.getJSON(\'?m=admin&c=category&a=public_tpl_file_list&style='.$an_info['style'].'&id='.$an_info['show_template'].'&module=announce&templates=show&name=announce&pc_hash=\'+pc_hash, function(data){$(\'#show_template\').html(data.show_template);});</script>'?></td>
    </tr>
    <tr>
        <th><?php echo L('announce_status')?></th>
        <td><input name="announce[passed]" type="radio" value="1" <?php if($an_info['passed']==1) {?>checked<?php }?>></input>&nbsp;<?php echo L('pass')?>&nbsp;&nbsp;<input name="announce[passed]" type="radio" value="0" <?php if($an_info['passed']==0) {?>checked<?php }?>>&nbsp;<?php echo L('unpass')?></td>
    </tr>
    </tbody>
</table>
<input type="submit" name="dosubmit" id="dosubmit" value=" <?php echo L('ok')?> " class="dialog">&nbsp;<input type="reset" class="dialog" value=" <?php echo L('clear')?> ">
</form>
</div>
</body>
</html>
<script type="text/javascript">
function load_file_list(id) {
    $.getJSON('?m=admin&c=category&a=public_tpl_file_list&style='+id+'&module=announce&templates=show&name=announce&pc_hash='+pc_hash, function(data){$('#show_template').html(data.show_template);});
}

$(document).ready(function(){
    $.formValidator.initConfig({formid:"myform",autotip:true,onerror:function(msg,obj){window.top.art.dialog({content:msg,lock:true,'220',height:'70'}, function(){this.close();$(obj).focus();})}});
    $('#title').formValidator({onshow:"<?php echo L('input_announce_title')?>",onfocus:"<?php echo L('title_min_3_chars')?>",oncorrect:"<?php echo L('right')?>"}).inputValidator({min:1,onerror:"<?php echo L('title_cannot_empty')?>"}).ajaxValidator({type:"get",url:"",data:"m=announce&c=admin_announce&a=public_check_title&aid=<?php echo $_GET['aid']?>",datatype:"html",cached:false,async:'true',success : function(data) {
        if( data == "1" )
        {
            return true;
        }
        else
        {
            return false;
        }
    },
    error: function(){alert("<?php echo L('server_no_data')?>");},
    onerror : "<?php echo L('announce_exist')?>",
    onwait : "<?php echo L('checking')?>"
    }).defaultPassed();
    $('#starttime').formValidator({onshow:"<?php echo L('select_stardate')?>",onfocus:"<?php echo L('select_stardate')?>",oncorrect:"<?php echo L('right_all')?>"}).defaultPassed();
    $('#endtime').formValidator({onshow:"<?php echo L('select_downdate')?>",onfocus:"<?php echo L('select_downdate')?>",oncorrect:"<?php echo L('right_all')?>"}).defaultPassed();
    $("#content").formValidator({autotip:true,onshow:"",onfocus:"<?php echo L('announcements_cannot_be_empty')?>"}).functionValidator({
        fun:function(val,elem){
        //获取编辑器中的内容
        var oEditor = CKEDITOR.instances.content;
        var data = oEditor.getData();
        if(data==''){
            return "<?php echo L('announcements_cannot_be_empty')?>"
        } else {
            return true;
        }
    }
    }).defaultPassed();
    $('#style').formValidator({onshow:"<?php echo L('select_style')?>",onfocus:"<?php echo L('select_style')?>",oncorrect:"<?php echo L('right_all')?>"}).inputValidator({min:1,onerror:"<?php echo L('select_style')?>"}).defaultPassed();
});
</script>


announce_list.tpl.php:
<?php 
defined('IN_ADMIN') or exit('No permission resources.');
include $this->admin_tpl('header', 'admin');
?>
<div class="pad-lr-10">
<form name="myform" action="?m=announce&c=admin_announce&a=listorder" method="post">
<div class="table-list">
    <table width="100%" cellspacing="0">
        <thead>
            <tr>
            <th width="35" align="center"><input type="checkbox" value="" id="check_box" onclick="selectall('aid[]');"></th>
            <th align="center"><?php echo L('title')?></th>
            <th width="68" align="center"><?php echo L('startdate')?></th>
            <th width='68' align="center"><?php echo L('enddate')?></th>
            <th width='68' align="center"><?php echo L('inputer')?></th>
            <th width="50" align="center"><?php echo L('hits')?></th>
            <th width="120" align="center"><?php echo L('inputtime')?></th>
            <th width="69" align="center"><?php echo L('operations_manage')?></th>
            </tr>
        </thead>
    <tbody>
 <?php 
if(is_array($data)){
    foreach($data as $announce){
?>   
    <tr>
    <td align="center">
    <input type="checkbox" name="aid[]" value="<?php echo $announce['aid']?>">
    </td>
    <td><?php echo $announce['title']?></td>
    <td align="center"><?php echo $announce['starttime']?></td>
    <td align="center"><?php echo $announce['endtime']?></td>
    <td align="center"><?php echo $announce['username']?></td>
    <td align="center"><?php echo $announce['hits']?></td>
    <td align="center"><?php echo date('Y-m-d H:i:s', $announce['addtime'])?></td>
    <td align="center">
    <?php if ($_GET['s']==1) {?><a href="?m=announce&c=index&a=show&aid=<?php echo $announce['aid']?>" title="<?php echo L('preview')?>"  target="_blank"><?php }?><?php echo L('index')?><?php if ($_GET['s']==1) {?></a><?php }?> | 
    <a href="javascript:edit('<?php echo $announce['aid']?>', '<?php echo safe_replace($announce['title'])?>');void(0);"><?php echo L('edit')?></a>
    </td>
    </tr>
<?php 
    }
}
?>
</tbody>
    </table>
  
    <div class="btn"><label for="check_box"><?php echo L('selected_all')?>/<?php echo L('cancel')?></label>
        <?php if($_GET['s']==1) {?><input name='submit' type='submit' class="button" value='<?php echo L('cancel_all_selected')?>' onClick="document.myform.action='?m=announce&c=admin_announce&a=public_approval&passed=0'"><?php } elseif($_GET['s']==2) {?><input name='submit' type='submit' class="button" value='<?php echo L('pass_all_selected')?>' onClick="document.myform.action='?m=announce&c=admin_announce&a=public_approval&passed=1'"><?php }?>&nbsp;&nbsp;
        <input name="submit" type="submit" class="button" value="<?php echo L('remove_all_selected')?>" onClick="document.myform.action='?m=announce&c=admin_announce&a=delete';return confirm('<?php echo L('affirm_delete')?>')">&nbsp;&nbsp;</div>  </div>
 <div id="pages"><?php echo $this->db->pages;?></div>
</form>
</div>
</body>
</html>
<script type="text/javascript">
function edit(id, title) {
    window.top.art.dialog({id:'edit'}).close();
    window.top.art.dialog({title:'<?php echo L('edit_announce')?>--'+title, id:'edit', iframe:'?m=announce&c=admin_announce&a=edit&aid='+id ,'700px',height:'500px'}, function(){var d = window.top.art.dialog({id:'edit'}).data.iframe;
    var form = d.document.getElementById('dosubmit');form.click();return false;}, function(){window.top.art.dialog({id:'edit'}).close()});
}
</script>


announce.sql:
DROP TABLE IF EXISTS `phpcms_announce`;


extention.inc.php:
 <?php 
defined('IN_PHPCMS') or exit('Access Denied');
defined('UNINSTALL') or exit('Access Denied');
 ?>


index.html:



model.php:
<?php 
defined('IN_PHPCMS') or exit('Access Denied');
defined('UNINSTALL') or exit('Access Denied');

return array('announce');
?>


admin_announce.php:
<?php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_app_class('admin','admin',0);

class admin_announce extends admin {

    private $db; public $username;
    public function __construct() {
        parent::__construct();
        //if (!module_exists(ROUTE_M)) showmessage(L('module_not_exists'));
        $this->username = param::get_cookie('admin_username');
        $this->db = pc_base::load_model('announce_model');
    }
    
    public function init() {
        //公告列表
        $sql = '';
        $_GET['status'] = $_GET['status'] ? intval($_GET['status']) : 1;
        $sql = '`siteid`=\''.$this->get_siteid().'\'';
        switch($_GET['s']) {
            case '1': $sql .= ' AND `passed`=\'1\' AND (`endtime` >= \''.date('Y-m-d').'\' or `endtime`=\'0000-00-00\')'; break;
            case '2': $sql .= ' AND `passed`=\'0\''; break;
            case '3': $sql .= ' AND `passed`=\'1\' AND `endtime`!=\'0000-00-00\' AND `endtime` <\''.date('Y-m-d').'\' '; break;
        }
        $page = max(intval($_GET['page']), 1);
        $data = $this->db->listinfo($sql, '`aid` DESC', $page);
        $big_menu = array('javascript:window.top.art.dialog({id:\'add\',iframe:\'?m=announce&c=admin_announce&a=add\', title:\''.L('announce_add').'\', \'700\', height:\'500\', lock:true}, function(){var d = window.top.art.dialog({id:\'add\'}).data.iframe;var form = d.document.getElementById(\'dosubmit\');form.click();return false;}, function(){window.top.art.dialog({id:\'add\'}).close()});void(0);', L('announce_add'));
        include $this->admin_tpl('announce_list');
    }
    
    /**
     * 添加公告
     */
    public function add() {
        if(isset($_POST['dosubmit'])) {
            $_POST['announce'] = $this->check($_POST['announce']);
            if($this->db->insert($_POST['announce'])) showmessage(L('announcement_successful_added'), HTTP_REFERER, '', 'add');
        } else {
            //获取站点模板信息
            pc_base::load_app_func('global', 'admin');
            $siteid = $this->get_siteid();
            $template_list = template_list($siteid, 0);
            $site = pc_base::load_app_class('sites','admin');
            $info = $site->get_by_id($siteid);
            foreach ($template_list as $k=>$v) {
                $template_list[$v['dirname']] = $v['name'] ? $v['name'] : $v['dirname'];
                unset($template_list[$k]);
            }
            $show_header = $show_validator = $show_scroll = 1;
            pc_base::load_sys_class('form', '', 0);
            include $this->admin_tpl('announce_add');
        }
    }
    
    /**
     * 修改公告
     */
    public function edit() {
        $_GET['aid'] = intval($_GET['aid']);
        if(!$_GET['aid']) showmessage(L('illegal_operation'));
        if(isset($_POST['dosubmit'])) {
            $_POST['announce'] = $this->check($_POST['announce'], 'edit');
            if($this->db->update($_POST['announce'], array('aid' => $_GET['aid']))) showmessage(L('announced_a'), HTTP_REFERER, '', 'edit');
        } else {
            $where = array('aid' => $_GET['aid']);
            $an_info = $this->db->get_one($where);
            pc_base::load_sys_class('form', '', 0);
            //获取站点模板信息
            pc_base::load_app_func('global', 'admin');
            $template_list = template_list($this->siteid, 0);
            foreach ($template_list as $k=>$v) {
                $template_list[$v['dirname']] = $v['name'] ? $v['name'] : $v['dirname'];
                unset($template_list[$k]);
            }
            $show_header = $show_validator = $show_scroll = 1;
            include $this->admin_tpl('announce_edit');
        }
    }
    
    /**
     * ajax检测公告标题是否重复
     */
    public function public_check_title() {
        if (!$_GET['title']) exit(0);
        if (CHARSET=='gbk') {
            $_GET['title'] = iconv('UTF-8', 'GBK', $_GET['title']);
        }
        $title = $_GET['title'];
        if ($_GET['aid']) {
            $r = $this->db->get_one(array('aid' => $_GET['aid']));
            if ($r['title'] == $title) {
                exit('1');
            }
        } 
        $r = $this->db->get_one(array('siteid' => $this->get_siteid(), 'title' => $title), 'aid');
        if($r['aid']) {
            exit('0');
        } else {
            exit('1');
        }
    }
    
    /**
     * 批量修改公告状态 使其成为审核、未审核状态
     */
    public function public_approval($aid = 0) {
        if((!isset($_POST['aid']) || empty($_POST['aid'])) && !$aid) {
            showmessage(L('illegal_operation'));
        } else {
            if(is_array($_POST['aid']) && !$aid) {
                array_map(array($this, 'public_approval'), $_POST['aid']);
                showmessage(L('announce_passed'), HTTP_REFERER);
            } elseif($aid) {
                $aid = intval($aid);
                $this->db->update(array('passed' => $_GET['passed']), array('aid' => $aid));
                return true;
            }
        }
    }
    
    /**
     * 批量删除公告
     */
    public function delete($aid = 0) {
        if((!isset($_POST['aid']) || empty($_POST['aid'])) && !$aid) {
            showmessage(L('illegal_operation'));
        } else {
            if(is_array($_POST['aid']) && !$aid) {
                array_map(array($this, 'delete'), $_POST['aid']);
                showmessage(L('announce_deleted'), HTTP_REFERER);
            } elseif($aid) {
                $aid = intval($aid);
                $this->db->delete(array('aid' => $aid));
            }
        }
    }
    
    /**
     * 验证表单数据
     * @param          array         $data 表单数组数据
     * @param          string         $a 当表单为添加数据时,自动补上缺失的数据。
     * @return         array         验证后的数据
     */
    private function check($data = array(), $a = 'add') {
        if($data['title']=='') showmessage(L('title_cannot_empty'));
        if($data['content']=='') showmessage(L('announcements_cannot_be_empty'));
        $r = $this->db->get_one(array('title' => $data['title']));
        if (strtotime($data['endtime'])<strtotime($data['starttime'])) {
            $data['endtime'] = '';
        }
        if ($a=='add') {
            if (is_array($r) && !empty($r)) {
                showmessage(L('announce_exist'), HTTP_REFERER);
            }
            $data['siteid'] = $this->get_siteid();
            $data['addtime'] = SYS_TIME;
            $data['username'] = $this->username;
            if ($data['starttime'] == '') $announce['starttime'] = date('Y-m-d');
        } else {
            if ($r['aid'] && ($r['aid']!=$_GET['aid'])) {
                showmessage(L('announce_exist'), HTTP_REFERER);
            }
        }
        return $data;
    }
}
?>


index.php:
<?php 
defined('IN_PHPCMS') or exit('No permission resources.');
class index {
    function __construct() {
        $this->db = pc_base::load_model('announce_model');
    }
    
    public function init() {
        
    }
    
    /**
     * 展示公告
     */
    public function show() {
        if(!isset($_GET['aid'])) {
            showmessage(L('illegal_operation'));
        }
        $_GET['aid'] = intval($_GET['aid']);
        $where = '';
        $where .= "`aid`='".$_GET['aid']."'";
        $where .= " AND `passed`='1' AND (`endtime` >= '".date('Y-m-d')."' or `endtime`='0000-00-00')";
        $r = $this->db->get_one($where);
        if($r['aid']) {
            $this->db->update(array('hits'=>'+=1'), array('aid'=>$r['aid']));
            $template = $r['show_template'] ? $r['show_template'] : 'show';
            extract($r);
            $SEO = seo(get_siteid(), '', $title);
            include template('announce', $template, $r['style']);
        } else {
            showmessage(L('no_exists'));    
        }
    }
}
?>


show.html:
{template 'content', 'header'}
<!--main-->
<div class="main">
    <div class="col-left">
        <div class="crumbs"><a href="">首页</a><span> > </span><a href="">公告</a></div>
        <div id="Article">
            <h1>{$title}<br />
<span></span></h1>
            <div class="content">
              {$content}
            </div>
      </div>
  </div>
    <div class="col-auto">
        <div class="box pd_b0">
        {pc:comment action="bang" cache="3600"}
            <ul class="itemli">
            {loop $data $r}
                <li><a href="{$r[url]}" target="_blank">{str_cut($r[title], 26)}</a></li>
            {/loop}
            </ul>
        {/pc}
        </div>
    </div>
</div>
{template 'content', 'footer'}


show2.html:代码和show.html同
原文地址:https://www.cnblogs.com/dreamhome/p/2742627.html