|
本帖最后由 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)
|
评分
-
查看全部评分
|