phpcms v9 代码分析(三)

合集下载

PHPCMS V9二次开发之首页、频道、列表等调用浏览量和评论

PHPCMS V9二次开发之首页、频道、列表等调用浏览量和评论

PHPCMS V9二次开发之首页、频道、列表等调用浏览量和评论。

Phpcms V9 内容页加上此代码可统计到点击量今日:<spanid="todaydowns"></span>,本周:<span id="weekdowns"></span>,本月:<span id="monthdowns"></span>内容页统计代码:<script language="JavaScript"src="{APP_PATH}api.php?op=count&id={$id}&modelid={$modelid}"></script >其它:一、首页获取数据方法{pc:content action=”lists” catid=”$r[catid]” num=”5″ order=”id DESC” return=”info”}{php $categorys =getcache(‘category_content_’.$siteid,’commons’);}<ul>{loop $info $v}{php $category = $categorys[$v[catid]];}{php $modelid = $category['modelid'];}{php $db = pc_base::load_model(‘hits_model’); $_r =$db->get_one(array(‘hitsid’=>’c-’.$modelid.’-’.$v[id])); $views = $_r[views]; }{php $comment_tag = pc_base::load_app_class(“comment_tag”, “comment”); $comment_total =$comment_tag->count(array(‘commentid’=>’content_’.$v[catid].’-’.$v[id].’-’.$modelid));}<li>·<a href=”{$v['url']}” target=”_blank”title=”{$v['title']}”{title_style($v[style])}>{str_cut($v['title'], 40)}</a> 点击:{$views} 评论:{if$comment_total}{$comment_total}{else}0{/if}</li>{/loop}</ul>{/pc}二、频道页获取数据方法{pc:content action=”lists” catid=”$v[catid]” num=”5″ order=”id DESC”}{loop $data $v}{php $db = pc_base::load_model(‘hits_model’); $_r =$db->get_one(array(‘hitsid’=>’c-’.$modelid.’-’.$v[id])); $views = $_r[views]; }{php $comment_tag = pc_base::load_app_class(“comment_tag”, “comment”); $comment_total =$comment_tag->count(array(‘commentid’=>’content_’.$v[catid].’-’.$v[id].’-’.$modelid));}<li><a href=”{$v[url]}”target=”_blank”{title_style($v[style])}>{$v[title]}</a>点击: {$views}评论数:{if $comment_total}{$comment_total}{else}0{/if}</li>{/loop}{/pc}三、列表取得数据方法{pc:content action=”lists” catid=”$catid” num=”25″ order=”id DESC” page=”$page” moreinfo=”1″}{loop $data $r}{php $db = pc_base::load_model(‘hits_model’); $_r =$db->get_one(array(‘hitsid’=>’c-’.$modelid.’-’.$r[id])); $views = $_r[views]; }{php $comment_tag = pc_base::load_app_class(“comment_tag”, “comment”); $comment_total =$comment_tag->count(array(‘commentid’=>’content_’.$catid.’-’.$r [id].’-’.$modelid));}<li><span class=”rt”>{date(‘Y-m-dH:i:s’,$r[inputtime])}</span>·<a href=”{$r[url]}”target=”_blank”{title_style($r[style])}>{$r[title]}</a> 点击:{$views} 评论数:{if$comment_total}{$comment_total}{else}0{/if}</li>{/loop}{$pages}{/pc}四、推荐位获取数据方法{pc:content action=”position” posid=”2″ order=”listorder DESC” num=”4″}{php $categorys =getcache(‘category_content_’.$siteid,’commons’);}{loop $data $r}{php $category = $categorys[$r[catid]];}{php $modelid = $category['modelid'];}{php $db = pc_base::load_model(‘hits_model’); $_r =$db->get_one(array(‘hitsid’=>’c-’.$modelid.’-’.$r[id])); $views = $_r[views]; }{php $comment_tag = pc_base::load_app_cla ss(“comment_tag”, “comment”); $comment_total =$comment_tag->count(array(‘commentid’=>’content_’.$r[catid].’-’.$r[id].’-’.$modelid));}<h4><a href=”{$r[url]}”title=”{$r[title]}”>{str_cut($r[title],36,”)}</a> 点击:{$views} 评论:{if $comment_total}{$comment_total}{else}0{/if}</h4><p>{if $n==1}<img src=”{thumb($r[thumb],90,60)}” width=”90″ height=”60″/>{/if}{str_cut($r[description],112)}</p><div><hr /></div>{/loop}{/pc}本文由 收集整理。

phpcms 源码解析

phpcms 源码解析

phpcms 源码解析一、什么是 phpcms?phpcms 是一款基于 PHP 的内容管理系统(CMS),它提供了一套完整的网站建设解决方案。

phpcms 源码解析就是对这个 CMS 的源代码进行深入的探讨和研究。

二、phpcms 的架构phpcms 的架构可以分为前台和后台两部分。

前台是用户访问网站的界面,后台则是管理员进行网站管理的界面。

1. 前台架构前台架构主要由以下几个模块组成:•模板引擎:phpcms 使用了自己开发的模板引擎,用于将页面模板和数据进行结合,生成最终的网页。

•核心类库:包括数据库操作类、缓存类、文件操作类等,提供了一系列常用的功能和方法。

•控制器:负责接收用户请求,调用相应的模型和视图,最终生成页面返回给用户。

•模型:与数据库进行交互,负责查询、插入、更新等操作。

•视图:根据模板引擎生成的数据,渲染成最终的页面展示给用户。

2. 后台架构后台架构主要由以下几个模块组成:•后台模板:后台界面的模板,包括菜单、页面布局等。

•后台控制器:负责接收管理员的请求,调用相应的模型和视图,最终生成页面返回给管理员。

•后台模型:与数据库进行交互,负责查询、插入、更新等操作。

•后台视图:根据后台模板和数据生成最终的页面展示给管理员。

三、phpcms 的核心功能phpcms 提供了丰富的功能,包括但不限于以下几个方面:1. 内容管理phpcms 提供了内容管理功能,管理员可以通过后台界面进行文章、图片、视频等的管理和发布。

同时,phpcms 也提供了权限管理功能,可以对不同用户进行不同的权限设置。

2. 模板管理phpcms 的模板管理功能非常强大,管理员可以通过后台界面进行模板的选择和编辑。

phpcms 的模板引擎支持模板继承、模板标签等高级功能,使得网站的页面展示更加灵活和美观。

3. 插件扩展phpcms 提供了插件扩展功能,管理员可以通过后台界面安装、卸载和管理插件。

插件可以为网站增加各种功能和特性,如留言板、友情链接等。

phpcms v9 代码分析(一)

phpcms v9 代码分析(一)

1. 程序入口文件 /index.php1 2define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR); include PHPCMS_PATH.'/phpcms/base.php'; pc_base::creat_app();3只有 3 行代码,定义 PHPCMS_PATH 常量,后面的一些文件查找依赖此变量,一般该变量就是项目根路 径。

接着引入项目下/phpcms/base.php 文件, pc_base 是 base.php 里定义的类, 调用类方法 create_app。

管理后台的入口文件是/admin.php,就一行代码1header('location:index.php?m=admin');可见, 一样是使用 index.php 作入口, 只是多传入一个参数 m=admin, 代表要进入的 module 是 admin。

2. phpcms 框架入口文件 /phpcms/base.php• •定义了 phpcms 框架使用的各种常量,比如静态 css,javascript 文件路径等等 加载系统公用函数库,加载路径是/phpcms/libs/functions/global.func.php, /phpcms/libs/functions/extention.func.php。

•定义类 php_base,此类定义了各种加载函数,用于加载数据模型,系统函数,插件类库等等。

其中的 creat_app 函数在程序入口文件中被调用。

1 2 3public static function creat_app() { return self::load_sys_class('application'); }此函数加载/phpcms/libs/classes/application.class.php 文件,创建 application 对象。

PHPCMS V9数据字典(新3)

PHPCMS V9数据字典(新3)

NO
样式
char(30) ate
NO
模板
键名 PRIMARY siteid siteid siteid
类型 PRIMARY INDEX INDEX INDEX
字段 aid siteid passed endtime
表 6: v9_attachment 附件表 I D 1 2 3 4 5 6 7 8 aid module catid filename filepath filesize fileext isimage int(10) unsigned char(15) smallint(5) unsigned char(50) char(200) int(10) unsigned char(10) tinyint(1) unsigned PK NO NO NO NO NO NO NO 0 0 0 附件 ID 模块名称 栏目 ID 附件名称 附件路径 附件大小 附件扩展名 是否为图片 1 为图片 是否为缩略 9 isthumb tinyint(1) unsigned NO 0 图 1 为缩 略图 1 downloads 0 1 userid 1 1 uploadtime 2 1 uploadip 3 1 status 4 tinyint(1) NO 0 附件使用状 态 char(15) NO 上传 ip int(10) unsigned NO 0 上传时间 mediumint(8) unsigned NO 0 userid mediumint(8) unsigned NO 0 下载 ID 字段 类型 Null 默认 注释
键名 PRIMARY PRIMARY
类型 PRIMARY PRIMARY
字段 filename path
表 13: v9_category 栏目表 I D 1 2 3 4 5 6 7 catid siteid module type modelid parentid arrparentid smallint(5) unsigned smallint(5) unsigned varchar(15) tinyint(1) unsigned tinyint(5) unsigned smallint(5) unsigned varchar(255) PK NO NO NO NO NO NO 0 0 0 0 栏目 id 站点 id 所属模块 类别 模型 id 父 id 所有父 id 是否存在子 8 child tinyint(1) unsigned NO 0 栏目, 存 1, 在 所有子栏目 9 1 catname 0 1 style 1 1 image 2 1 description 3 1 parentdir 4 1 catdir varchar(30) NO 目录 varchar(100) NO 父目录 mediumtext NO 描述 varchar(100) NO 图片 varchar(5) NO 风格 varchar(30) NO arrchildid mediumtext NO id 栏目名称 字段 类型 Null 默认 注释

PHPCMS_V9调用方法

PHPCMS_V9调用方法

标题限制:{str_cut($r[title],36)} {$r[title]}简介限制:{str_cut($r[description],112)}链接:{$r[url]} OR {$r[url]}缩略图片:{thumb($r[thumb],90,60)}日期:{date('Y-m-d',$r[inputtime])}标题{$title}内容{$content}日期{$inputtime}来源{$copyfrom}{IMG_PA TH}图片路径{JS_PA TH}JS路径{CSS_PATH}CSS路径{siteurl($siteid)}网站域名一级栏目{pc:content action="category" catid="0" num="25" siteid="$siteid" order="listorder ASC"}<li><a href="{siteurl($siteid)}">首页</a></li>{loop $data $r}<li><a href="{$r[url]}">{$r[catname]}</a></li>{/loop}{/pc}{推荐位调用方法}{pc:content action="position" posid="2" order="listorder DESC" num="4"}{loop $data $r}<h4 class="blue"><a href="{$r[url]}" title="{$r[title]}">{str_cut($r[title],36)}</a></h4><p>{if $n==1}<img src="{thumb($r[thumb],90,60)}" width="90" height="60"/>{/if}{str_cut($r[description],112)}</p><div class="bk20 hr"><hr /></div>{/loop}{/pc}去掉程序里的省略号phpcms\libs\functions\global.func.php文件里某栏目最新文章:{pc:content action="lists" catid="6,14,15,16" num="10" order="id DESC" return="info"}<ul>{loop $info $v}<li><a href="{$v['url']}">{str_cut($v['title'],40)}</a></li>{/loop}</ul>{/pc}在首页调用全站栏目最新,最热门点击,最多回复的文章{pc:get sql="select * from v9_news where status=99 order by id desc" num="10"}{loop $data $r}<a href="{$r[url]}" title="{$r[title]}" target="_blank">{$r[title]}</a>{/loop}{/pc}thumb="1" 判断缩略图调用有图片的文章{pc:content action="lists" catid="6,14,15,16" num="10" thumb="1" order="id DESC"return="info"}{loop $data $r}<img src="{thumb($r[thumb],90,60)}" width="90" height="60"/>{/loop}{/pc}列表页调用{pc:content action="lists" catid="$catid" num="25" order="id DESC" page="$page"} <ul class="list lh24 f14">{loop $data $r}<li><span class="rt">{date('Y-m-d H:i:s',$r[inputtime])}</span>·<a href="{$r[url]}" target="_blank"{title_style($r[style])}>{$r[title]}</a></li>{if $n%5==0}<li class="bk20 hr"></li>{/if}{/loop}</ul><div id="pages" class="text-c">{$pages}</div>{/pc}网站首页{siteurl($siteid)}当前位置{catpos($catid)}上级栏目:{$CATEGORYS[$CATEGORYS[$catid]['parentid']]['catname']}栏目名和链接[<a href="{$CATEGORYS[$r[catid]][url]}">{$CATEGORYS[$r[catid]][catname]}</a>]JS关闭窗口或JS关闭页面的几种代码第一种:JS定时自动关闭窗口<script language="javascript"><!--function closewin(){self.opener=null;self.close();}function clock(){i=i-1document.title="本窗口将在"+i+"秒后自动关闭!";if(i>0)setTimeout("clock();",1000);else closewin();}var i=10clock();//--></script>第二种:点击链接没有提示的JS关闭窗口<a href="javascript:self.close()" >关闭窗口</a>第三种:窗口没有提示自动关闭的js代码<script language=javascript><!--this.window.opener = null;window.close();//--></script>js另存为、打印、属性、加入收藏、关闭等代码收藏js打开代码<input name=Button onClick=document.all.WebBrowser.ExecWB(1,1) type=button value=打开> <OBJECTclassid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WebBrowserwidth=0></OBJECT>可能提示“权限不足”js另存为代码<input name=Button onClick=document.all.WebBrowser.ExecWB(4,1) type=button value=另存为><OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0id=WebBrowserwidth=0></OBJECT>可能提示“权限不足”js属性代码<input name=Button onClick=document.all.WebBrowser.ExecWB(10,1) type=button value=属性><OBJECTclassid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WebBrowser width=0></OBJECT>可能提示“权限不足”js打印代码<input name=Button onClick=document.all.WebBrowser.ExecWB(6,1) type=button value=打印><OBJECTclassid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WebBrowser width=0></OBJECT>可能提示“权限不足”或<a href="javascript:window.print();">打印</a>js页面设置代码<input name=Button onClick=document.all.WebBrowser.ExecWB(8,1) type=button value=页面设置><OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0id=WebBrowserwidth=0></OBJECT>可能提示“权限不足”js刷新代码<input type=button value=刷新name=refresh onclick="window.location.reload()">js导入收藏代码<input type="button" name="Button" value="导入收藏夹"onClick=window.external.ImportExportFavorites(true,);>js导出收藏代码<input type="button" name="Button3" value="导出收藏夹"onClick=window.external.ImportExportFavorites(false,);>js加入收藏代码<INPUT name=Button2 onclick="window.external.AddFavorite(location.href, document.title)"type=button value=加入收藏夹>js整理收藏夹代码<INPUT name=Submit2 onclick="window.external.ShowBrowserUI(OrganizeFavorites, null)"type=button value=整理收藏夹>js查看原文件代码<INPUT name=Button onclick=window.location = "view-source:" + window.location.href type=buttonvalue=查看源文件>js语言设置代码<INPUT name=Button onclick="window.external.ShowBrowserUI(LanguageDialog, null)" type=buttonvalue=语言设置>js前进代码<INPUT name=Submit onclick=history.go(1) type=submit value=前进>js后退代码<INPUT name=Submit2 onclick=history.go(-1) type=submit value=后退>js关闭代码<INPUT name=Submit2 onclick="window.close()" type=submit value="关闭"> 注:上面代码中onclick的值即为命令代码,可以同样使用在链接中,如:<a href="javascript:window.close()">关闭</a>。

phpcmsv9 例子

phpcmsv9 例子

phpcmsv9 例子PHPcmsv9是一款流行的CMS(Content Management System)系统,它为用户提供了一个可定制、易于使用的平台,用于创建和管理网站的内容。

在本文中,我们将一步一步地回答有关PHPcmsv9的问题,并提供一些例子来说明其工作原理和功能。

一、什么是PHPcmsv9?PHPcmsv9是基于PHP开发的一款开源CMS系统。

它采用了模块化和面向对象的设计思想,具有高度灵活性和可扩展性。

PHPcmsv9提供了丰富的功能,包括内容管理、用户管理、模板管理、插件扩展等,使用户能够轻松创建和管理网站内容。

二、安装PHPcmsv9安装PHPcmsv9非常简单。

首先,下载最新版本的PHPcmsv9并解压缩到您的WEB服务器上的目录。

接下来,创建一个MySQL数据库并导入安装包中的SQL文件。

然后,根据提示,填写数据库配置信息和管理员账户信息。

最后,通过浏览器访问您的网站,即可进入安装向导并完成安装过程。

三、创建内容模型在PHPcmsv9中,内容模型是网站内容的组织方式。

您可以创建不同的内容模型来适应不同的业务需求。

比如,您可以创建一个"新闻"内容模型,其中包含标题、摘要、作者、发布时间等字段。

创建内容模型非常简单,只需在后台管理界面中点击"内容模型"菜单,然后点击"添加模型"按钮,并填写相应的信息即可。

四、发布内容在PHPcmsv9中,发布内容非常方便。

首先,在后台管理界面中点击"内容管理"菜单,然后选择要发布内容的模型。

接下来,点击"添加内容"按钮,并填写相应的字段值。

您可以通过富文本编辑器编辑内容,并上传图片、附件等。

最后,点击"保存"按钮即可将内容发布到网站上。

五、管理用户PHPcmsv9提供了强大的用户管理功能。

您可以在后台管理界面中创建、编辑和删除用户账户。

phpcms 源码解析

phpcms 源码解析

phpcms 源码解析Phpcms是一个流行的内容管理系统,在网站开发领域中使用广泛。

它是一个基于PHP开发的系统,可以快速构建功能强大的网站。

本文将探讨Phpcms的源代码解析。

一、什么是PhpcmsPhpcms是一个使用PHP编写的开源内容管理系统,它提供了一个易于使用的、体积小巧的框架。

Phpcms支持多语言、多种数据库、内容自定义、页面自定义等多种功能,能够轻松创建和管理网站以及博客。

二、Phpcms的结构Phpcms的结构简洁明了,它包含一个核心框架和一系列可插拔的模块。

所有的模块都可以通过插件方式集成到Phpcms框架中,从而使Phpcms系统更加灵活,用于实现各种需求。

Phpcms的核心部分有以下几个文件:1、index.php:Phpcms的入口文件,定义各个常量和全局变量,并调用程序执行。

2、admin.php:用于管理后台入口程序,用于后台的登录验证和后台常规管理。

3、phpcms\base.php:初始化 Phpcms系统的参数。

4、phpcms\licensed.php:Phpcms的授权文件。

Phpcms的核心框架文件在文件系统上按照模块形式存放。

Phpcms 的模块包括:模板解析模块、模板模块、模型模块和数据库模块。

每个模块都需要遵循Phpcms的开发要求,实现一些必须的接口文档。

三、Phpcms的模块1、模板解析模块:Phpcms的核心模块之一。

这个模块主要负责从模板文件生成目标文件,一般而言,目标文件是生成的HTML文件。

2、模板模块:负责管理模板,包括添加、修改、删除、查看模板等功能。

3、模型模块:负责管理模型,包括添加、修改、删除、查看模型等功能。

Phpcms模型模块提供了模型模板的模型驱动,并且支持修改模型的template_file、data_table。

4、数据库模块:Phpcms采用的是Sqlite,封装了一个phpcms\data\db_sqlite.php,用于操作数据库。

phpcmsv9代码分析(三)

phpcmsv9代码分析(三)

phpcmsv9代码分析(三)这篇讲讲模型。

1. phpcms/libs/classes/model.class.php这是所有模型类的父类,其他模型类继承它,设置表名,表前缀。

1 2 3 4 5 6 7 8pc_base::load_sys_class('db_factory', '', 0); class model { protected $db_config = ''; //数据库配置 protected $db = ''; //数据库连接 //调用数据库的配置protected $db_setting = 'default';项9 protected $table_name = ''; 1 0 public 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 { $this->db_setting = 'default'; } $this->table_name = $this->db_config[$this->db_setting]['tablepre'].$this>table_nam e; $this->db_tablepre = $this->db_config[$this->db_setting]['tablepre']; $this->db = db_factory::get_instance($this->db_config)->get_database($this->db_setting); } ............ } public function __construct() { if (!isset($this->db_config[$this->db_setting])) $db_tablepre = ''; //表前缀 //数据表名该类还定义了通用的数据库操作函数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

这篇讲讲模型。

1.phpcms/libs/classes/model.class.php
这是所有模型类的父类,其他模型类继承它,设置表名,表前缀。

该类还定义了通用的数据库操作函数。

查询、插入、分页查询、删除等等。

2.phpcms/model/xxx_model.class.php
所有和数据库表对应的模型都在此目录下,比如敏感词过滤模型。

具体的模型类一般就一个构造函数,只有少数会添加几个额外的函数。

目前,phpcms有接近110张表,不过有很多用不上,应该把重点放在
phpcms/libs/classes/model.class.php上面,看看那些数据库操作函数是如何实现的。

3.自定义模型:phpcms/model/content_model.class.php
并不是所有数据库表都对应一个模型,自建模型的情况要复杂些。

当我们自建一个简历模型,设定表名为resume,选择好模板文件,定义每个字段之后,有4张表来保存这些信息。

1.v9_model:保存自建模型的基本信息,比如模板文件名称、表名等。

2.v9_model_field:保存自建模型每个字段的信息,比如类型(文本,联动菜单)等等。

3.v9_resume:phpcms自动创建的表,保存每一条自建模型基本数据,一般是那些经常查询的字段都建在这个表里。

4.v9_resume_data:phpcms自动创建的表,保存每一条自建模型额外的数据信息。

建议将不那么经常被查询的字段,比如内容(大文本)字段保存在这个表里。

相关文档
最新文档