`

自己动手写CMS

阅读更多
<?php
/*
 * 简易的CMS插件,可供借鉴或者扩展
 * 
 * ---- 流程:
 *   定义内容;
 *   分类与组织内容
 * 	 存储内容
 *   操作控制内容
 * 
 * 定义内容:
 * 	 制定目标;
 * 	 确定需要的内容类型
 *   目标用户定位
 *   确定目标用户需要何种技术
 * 
 * 分类与组织内容:
 *   按内容所属的逻辑层级关系来划分
 *   按内容的种类来划分,比如video/text/audio等等
 * 
 * 存储内容:
 *   关系数据库
 *   XML
 *   文本文件
 * 
 * 操作控制内容:
 *   对操作进行颗粒度分离
 *   提供足够的元数据信息
 *   内容的描述
 *   外部展示(web/xml/html),以及定义UI
 */


require_once 'db.php';


abstract class SimpleCMS {}

class SimpleCMS_Model_ContentType {
	
	/**
	 * @var FirePhpHelper
	 */
	protected $_firePhpHelper = null;
	
	/**
	 * @var CoreDb
	 */
	protected $_dbo = NULL;
	
	protected $_tableName = 'content_types';
	protected $_primaryKey = 'ctype_id';
	
	protected $_nameField = 'ctype_name';
	protected $_descriptionField = 'ctype_description';
	protected $_createdField = 'created_at';
	protected $_updatedField = 'updated_at';
	
	/**
	 * 构造函数
	 */
	function __construct(){
		$this->_firePhpHelper = FirePhpHelper::getInstance();
	}
	
	/**
	 * 查找内容类型列表
	 * 
	 * @var mixed $cond
	 * @var int|array $limit
	 * @var string $fields
	 * 
	 * @return array
	 */
	function getAll($cond=null,$limit=null,$fields='*'){}	
	
	/**
	 * 更新内容类型记录,参数中必须带着主键字段
	 * 
	 * @var array $row
	 * 
	 * @return boolean
	 */
	function update(array $row){	
		if (isset($row[$this->_primaryKey])){
			$row[$this->_updatedField] = CURRENT_TIMESTAMP;
			$sql = CoreDbSqlHelper::getUpdateSQL($this->_dbo,$row,$this->_primaryKey,$this->_tableName);		
			return $this->_dbo->execute($sql,$row,true);
		}
		return false ;
	}
	
	/**
	 * 添加一个内容类型,返回插入的主键值
	 * 
	 * @var string $name 类型名
	 * @var string $description 描述
	 * @var array $extra 额外字段属性
	 * 
	 * @return int
	 * @throws SqlQueryException
	 */
	function add($name,$description,array $extra=null){
		$row = array(
			$this->_nameField => $name ,
			$this->_descriptionField => $description ,
			$this->_createdField => CURRENT_TIMESTAMP ,
		);
		if ($extra){
			$row = array_merge($row,$extra);
		}
		$sql = CoreDbSqlHelper::getInsertSQL($row,$this->_tableName);
		if ($this->_dbo->execute($sql,$row,true))
			return $this->_dbo->lastInsertId();
		return false;
	}
	
	/**
	 * 类型主键是否存在
	 * 	 
	 * @var string $primaryKey
	 * @return boolean
	 */
	function existsByPrimaryKey($primaryKey){
		return $this->_dbo->getDbUtils()->findCount(
			$this->_tableName,array($this->_primaryKey=>(int) $primaryKey),$this->_primaryKey);
	}
	
	/**
	 * 类型名称是否存在
	 * 
	 * @var string $name
	 * @return boolean
	 */
	function existsByName($name){
		return $this->_dbo->getDbUtils()->findCount(
			$this->_tableName,array($this->_nameField=>$name),$this->_primaryKey);
	}
}

 

未完,待续...

1
3
分享到:
评论
1 楼 vb2005xu 2011-04-27  
smarty 插件使用例子: 截取HTML <%{$records[i].content|strip_tags|stripslashes|truncate:240}%>

相关推荐

    CMS内容管理系统(OOP)

    4. **模板设计模式**:CMS通常会支持用户自定义页面布局和样式,OOP的模板设计模式可以很好地支持这一点,通过定义模板类,用户可以创建自己的模板,改变网站外观。 5. **数据库操作**:OOP的ORM(Object-...

    CMS识别(web指纹识别)扫描器开发.pdf

    在学习CMS识别技术的过程中,最佳的方式是通过动手实践来加深理解。可以通过在线实验的方式,模拟实际的网站扫描过程,体验如何收集web指纹、进行指纹分析,以及编写相应的扫描脚本。 最后,CMS识别技术属于网络...

    cms.zip_cms ssm教程_ssm cms_ssm开发的cms

    【标题】"cms.zip_cms ssm教程_ssm cms_...通过这个教程,你可以全面掌握SSM框架,并能实际动手构建一个功能完备的CMS系统。在学习过程中,除了理论知识,更重要的是动手实践,通过编写代码和解决实际问题来提升技能。

    CMS内容管理系统 java源码

    CMS内容管理系统是用于在线创建...综上所述,这个"CMS内容管理系统 java源码"项目是学习和实践CMS开发的宝贵资源,通过深入研究源码,开发者可以提升自己的Java技术和Web开发能力,同时为构建高效的企业门户奠定基础。

    ASP网站CMS程序源码——Zimplit CMS管理系统实例开发.rar

    ASP网站内容管理系统(CMS)是用于构建和管理网站的强大工具,...在解压并研究提供的文件【CMS程序]Zimplit CMS管理系统 v3.0_zimplitcms】时,你可以逐步探索这些功能并动手实践,进一步理解ASP CMS的工作原理和应用。

    CMS0705_01

    通过CMS0705_01这个项目,初学者可以实际动手操作,体验从零开始搭建CMS的过程,加深对上述知识点的理解。同时,实践是最好的老师,通过解决实际问题,学习者可以积累宝贵的开发经验,为日后的职业发展奠定坚实基础...

    分享springMVC+Mybaits+EasyUI做的一个CMS系统

    【SpringMVC+Mybatis+EasyUI CMS系统详解】 SpringMVC、Mybatis和EasyUI是Web开发中常用的三大技术栈,它们各自扮演着重要的...对于初学者来说,这是一个绝佳的学习实践平台,能够提升对Web开发的整体认知和动手能力。

    craft-diywidget:Craft CMS的“自己动手”小部件

    Craft CMS的“自己动手”小部件 为控制面板创建自己的仪表板小部件的超级简单方法。 安装 插件商店中提供“自己动手”窗口小部件。 您还可以使用以下命令从命令行手动安装插件。 &gt; composer require carlcs/craft-...

    苹果CMS采集影视一键创建分类绑定分类目录文件解放双手.zip

    亚盟源码 简介: 苹果cms程序是一套采用...如果新手刚刚开始接触苹果cms,视频分类绑定自己动手会非常麻烦 如果选择创建分类进行采集,嫌手工添加及捆绑分类麻烦,可以下载文件这个文件,全自动解放放手 ymw98

    大学生毕业设计项目实训 CMS内容管理系统(C# ASP.net 源代码).zip

    “项目实训”强调了实际操作和动手能力的培养;“c#”和“asp.net”是微软开发的两种核心技术,C#是一种面向对象的编程语言,而ASP.NET则是一个用于构建Web应用的框架。 1. **C# ASP.NET MVC**:MVC(Model-View-...

    PHP实例开发源码-Koobi CMS.zip

    这个压缩包包含了一个完整的Koobi CMS系统的源代码,供开发者学习、研究或作为项目基础来开发自己的网站。通过分析和理解这个源码,我们可以深入探讨PHP在Web开发中的应用以及CMS系统的基本架构。 首先,Koobi CMS...

    基于PHP的齐博整站cms文章系统课程培训模板.zip

    通过这个基于PHP的齐博整站CMS文章系统课程培训,你将不仅学会如何使用CMS搭建网站,还能深入理解PHP开发,提升自己的Web开发技能。记得实践是检验真理的唯一标准,多动手操作,理论结合实际,才能真正掌握这些知识...

    Packt.Publishing.PHP.5.CMS.Framework.Development.Jun.2008-1847193579.pdf

    书中可能介绍了几种常见的架构模式,比如MVC(模型-视图-控制器),并指导读者如何将这些模式应用于自己的项目中。 - **性能优化**:数据库查询优化、缓存机制等技术对于提升CMS的响应速度至关重要。书中可能提供了...

    《CMS与模板制作》2015级教学大纲1

    《CMS与模板制作》是一门实践性和理论性并重的课程,旨在提升学生的动手能力和创新思维,为他们未来在Web开发领域的深入学习打下坚实基础。 1.4 教学目标 - 理解CMS的工作原理和架构,熟悉主流CMS平台如WordPress、...

    aspnet简单cms源码

    【aspnet简单cms源码】是一款专为初学者设计的精美网页模板,它采用ASP.NET技术构建,结合了CSS和Div布局,使得网页设计既美观又具有良好的结构化...通过实际动手操作和修改源码,你将更深入地体验到Web开发的魅力。

    腾讯QQ图片新闻系统源代码(科讯CMS专用)

    有能力自己集成的可以自己动手,能够集成在科讯CMS系统的图片详情页面。这 会便你的网站更加专业和大气。好处就不多说了。  测试方法,在本目录下可以直接运行index.htm来看效果,但在全屏状态下,需要使用网络 ...

    wordpress CMS主题

    在网上找个wordpress的中文cms模板很难,于是就自己动手编写一个一套模板,主题名称为:ErrorGo-Green,版本为bata版,本人在IE8,Firefox,谷歌浏览上上测试正常。 使用须知: 1)首页的幻灯片式图片变换:图片及...

    基于ASP的单文件CMS学习参考.zip

    2. **动手实践**:通过编写简单的ASP页面,熟悉如何生成动态内容。 3. **数据库操作**:学习使用ADO进行数据库操作,掌握SQL基本语法。 4. **CMS框架**:研究现有的ASP CMS系统,如dotNetNuke,了解其架构和设计思路...

    基于PHP的齐博整站cms文章系统v7课程培训模板源码.zip

    齐博整站CMS文章系统是一款基于PHP开发的内容管理系统,专为构建文章类网站设计。它提供了丰富的功能,便于用户管理网站内容,实现高效的文章...记住,实践是检验真理的唯一标准,动手操作和修改源码是最好的学习方式。

    易优cms模板E006789响应式文具用品益智玩具网站模板.zip

    “益智玩具”部分则会突出各种开发智力、提高动手能力的玩具,如拼图、积木、科学实验套件等。这部分的设计可能更加注重互动性和教育价值的展示,例如通过动画、视频或用户评价来增强产品的吸引力。 此外,该模板...

Global site tag (gtag.js) - Google Analytics