用户
 找回密码
 入住 CI 中国社区
搜索
查看: 24928|回复: 51
收起左侧

[程序 App] [CI2.0] 简单内容管理系统 - tinyCMS

    [复制链接]
发表于 2011-3-14 01:44:25 | 显示全部楼层 |阅读模式
本帖最后由 huboo82 于 2011-3-21 19:24 编辑

tinyCMS
基于页面的内容管理,每页面可包含一个或多个(仅显示最后提交页面内容)不同内容版本,就这功能。
tinyCMS 基于 Codeigniter 2.0 开发,使用 Sqlite v2 版数据库,使用了 Transdmin 后台主题,使用了 STBlog 上传代码,借鉴了 Typecho 的后台样式与交互方式,集成了CKEditor 3.5.2,集成了swfupload;数据库在 application/db/tinycms.sdb, 以下划线开头的数据库仅包含一条用户信息:admin/123456,另一个为测试时使用的数据库,用户登录信息相同。

关于 tinyCMS 所使用 CI 的一点改动:注释了 system/database/drivers/sqlite/sqlite_driver.php 行:502 并添加 行:503;
由于使用 swfupload 上传文件,CI 在检查 mime 类型时会出错,导致无法上传,修改 system/libraries/Upload.php 行:582
PHP复制代码
public function is_allowed_filetype($ignore_mime = FALSE)
复制代码

修改为
PHP复制代码
public function is_allowed_filetype($ignore_mime = TRUE)
复制代码


2011/3/16:CI 更新至 2.0.1,修改了一些错误,附件已更新。

免责声明:作者不对使用 tinyCMS 所造成的一切可能后果承担责任。
发布授权协议:GPLv3

manage_page & manage_content 注释
PHP复制代码
 
/**
 * create/edit page
 *
 * @access public
 * @param $page_id integer
 * @param $data array
 * @return integer
 */

public function manage_page($data, $page_id = NULL)
{
 /*
 组织数据
 $content_data:内容数据,数组中的 key 与数据表 tbl_content 中的字段一一对应
 $page_data:页面数据,数组中的 key 与数据表 tbl_page 中的字段一一对应
 */

 $content_data = array(
  'content' => $data['content'],
  'content_date' => time(),
  'content_status' => 'pages'
 );
 
 $page_data = array(
  'page_title' => $data['title'],
  'page_in_navigation' => $data['in_nav'],
  'page_shown' => $data['shown']
 );
 
 //如果 $data['content_id'] 不为真,则设置其值为 NULL
 $data['content_id'] = $data['content_id'] ? $data['content_id'] : NULL;
 //如果 $page_id 不为 NULL
 if( ! is_null($page_id))
 {
  //通过 manage_content 方法来处理内容数据
  $content_id = $this->manage_content($content_data, $data['content_id']);
 
  //如果 $data['content_id'] 不为 NULL
  if( ! is_null($data['content_id']))
  {
   //如果 附件数据 $data['attachment'] 为真,更新所有附件的 attach 值为 $data['content_id']
   if($data['attachment'])
   {
    foreach($data['attachment'] as $attachment)
    {
     $this->db->where('content_id', $attachment);
     $this->db->update('content', array('attach' => $data['content_id']));
    }
   }
  }
  //否则 $data['content_id'] 为 NULL
  else
  {
   //在页面与内容关系表中插入一条新的数据,指明新的内容与页面的关系
   $this->db->insert('relationship', array('page_id' => $page_id, 'content_id' => $content_id));
   
   //如果 附件数据 $data['attachment'] 为真,更新所有附件的 attach 值为 $content_id
   if($data['attachment'])
   {
    foreach($data['attachment'] as $attachment)
    {
     $this->db->where('content_id', $attachment);
     $this->db->update('content', array('attach' => $content_id));
    }
   }
  }
 
  //更新页面表
  $page_data['content_id'] = $content_id;
  $this->db->where('page_id', $page_id);
  $this->db->update('page', $page_data);
  $insert_id = $page_id;
 }
 //否则 $page_id 为 NULL
 else
 {
  //通过 manage_content 方法来处理内容数据
  $page_data['content_id'] = $this->manage_content($content_data);
 
  //如果 附件数据 $data['attachment'] 为真,更新所有附件的 attach 值为 $page_data['content_id']
  if($data['attachment'])
  {
   foreach($data['attachment'] as $attachment)
   {
    $this->db->where('content_id', $attachment);
    $this->db->update('content', array('attach' => $page_data['content_id']));
   }
  }
 
  //插入页面表
  $this->db->insert('page', $page_data);
  $insert_id = $this->db->insert_id();
 
  //插入页面与内容关系表
  $this->db->insert('relationship', array('page_id' => $insert_id, 'content_id' => $page_data['content_id']));
 }
 
 //返回页面 id
 return $insert_id;
}
/**
 * create/edit content
 *
 * @access public
 * @param $id integer
 * @param $data array
 * @return integer
 */

public function manage_content($data, $id = NULL)
{
 //如果 $id 不为 NULL,更新内容表,否则插入内容表,最后返回 $id
 if( ! is_null($id))
 {
  $this->db->where('content_id', $id);
  $this->db->update('content', $data);
 }
 else
 {
  $this->db->insert('content', $data);
  $id = $this->db->insert_id();
 }
 
 return $id;
}
 
复制代码


截图:

登录

登录



新页面

新页面



页面管理

页面管理



站点设置

站点设置



tinycms.tar.gz (1.6 MB, 下载次数: 1538)

评分

参与人数 2威望 +8 收起 理由
Hex + 5 我很赞同
jeongee + 3 我很赞同

查看全部评分

发表于 2011-3-14 09:33:11 | 显示全部楼层
友情支持~~~
发表于 2011-3-14 13:44:32 | 显示全部楼层
不错的哦
发表于 2011-3-14 15:28:43 | 显示全部楼层
打给个数据库的sql吗,sqlite2我打不开
发表于 2011-3-14 15:39:52 | 显示全部楼层
真的不错啊
 楼主| 发表于 2011-3-14 16:35:57 | 显示全部楼层
回复 4# jaclon

   http://www.xdowns.com/soft/38/110/2008/Soft_43030.html
发表于 2011-3-14 17:43:31 | 显示全部楼层
:)先玩玩看,谢过楼主
发表于 2011-3-15 08:37:07 | 显示全部楼层
不错啊!!!
发表于 2011-3-16 13:41:51 | 显示全部楼层
顶 ,多谢分享
发表于 2011-3-16 15:38:35 | 显示全部楼层
本帖最后由 joecfan 于 2011-3-16 15:43 编辑

我今天接触php第二天,php的语法都不怎么会,把你的代码下下来,运行了下,page.php出错了,找了半天,真有半天时间,NND,发现page.php ,else  标记符前面少了php,还有把config.php的$config['rewrite_short_tags'] = TRUE;,把false  改成true ,现在都没问题了。LZ做的东西真不错。

本版积分规则