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 是一款基于 PHP 的内容管理系统(CMS),它提供了一套完整的网站建设解决方案。
phpcms 源码解析就是对这个 CMS 的源代码进行深入的探讨和研究。
二、phpcms 的架构phpcms 的架构可以分为前台和后台两部分。
前台是用户访问网站的界面,后台则是管理员进行网站管理的界面。
1. 前台架构前台架构主要由以下几个模块组成:•模板引擎:phpcms 使用了自己开发的模板引擎,用于将页面模板和数据进行结合,生成最终的网页。
•核心类库:包括数据库操作类、缓存类、文件操作类等,提供了一系列常用的功能和方法。
•控制器:负责接收用户请求,调用相应的模型和视图,最终生成页面返回给用户。
•模型:与数据库进行交互,负责查询、插入、更新等操作。
•视图:根据模板引擎生成的数据,渲染成最终的页面展示给用户。
2. 后台架构后台架构主要由以下几个模块组成:•后台模板:后台界面的模板,包括菜单、页面布局等。
•后台控制器:负责接收管理员的请求,调用相应的模型和视图,最终生成页面返回给管理员。
•后台模型:与数据库进行交互,负责查询、插入、更新等操作。
•后台视图:根据后台模板和数据生成最终的页面展示给管理员。
三、phpcms 的核心功能phpcms 提供了丰富的功能,包括但不限于以下几个方面:1. 内容管理phpcms 提供了内容管理功能,管理员可以通过后台界面进行文章、图片、视频等的管理和发布。
同时,phpcms 也提供了权限管理功能,可以对不同用户进行不同的权限设置。
2. 模板管理phpcms 的模板管理功能非常强大,管理员可以通过后台界面进行模板的选择和编辑。
phpcms 的模板引擎支持模板继承、模板标签等高级功能,使得网站的页面展示更加灵活和美观。
3. 插件扩展phpcms 提供了插件扩展功能,管理员可以通过后台界面安装、卸载和管理插件。
插件可以为网站增加各种功能和特性,如留言板、友情链接等。
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)
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调用方法
标题限制:{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是一款流行的CMS(Content Management System)系统,它为用户提供了一个可定制、易于使用的平台,用于创建和管理网站的内容。
在本文中,我们将一步一步地回答有关PHPcmsv9的问题,并提供一些例子来说明其工作原理和功能。
一、什么是PHPcmsv9?PHPcmsv9是基于PHP开发的一款开源CMS系统。
它采用了模块化和面向对象的设计思想,具有高度灵活性和可扩展性。
PHPcmsv9提供了丰富的功能,包括内容管理、用户管理、模板管理、插件扩展等,使用户能够轻松创建和管理网站内容。
二、安装PHPcmsv9安装PHPcmsv9非常简单。
首先,下载最新版本的PHPcmsv9并解压缩到您的WEB服务器上的目录。
接下来,创建一个MySQL数据库并导入安装包中的SQL文件。
然后,根据提示,填写数据库配置信息和管理员账户信息。
最后,通过浏览器访问您的网站,即可进入安装向导并完成安装过程。
三、创建内容模型在PHPcmsv9中,内容模型是网站内容的组织方式。
您可以创建不同的内容模型来适应不同的业务需求。
比如,您可以创建一个"新闻"内容模型,其中包含标题、摘要、作者、发布时间等字段。
创建内容模型非常简单,只需在后台管理界面中点击"内容模型"菜单,然后点击"添加模型"按钮,并填写相应的信息即可。
四、发布内容在PHPcmsv9中,发布内容非常方便。
首先,在后台管理界面中点击"内容管理"菜单,然后选择要发布内容的模型。
接下来,点击"添加内容"按钮,并填写相应的字段值。
您可以通过富文本编辑器编辑内容,并上传图片、附件等。
最后,点击"保存"按钮即可将内容发布到网站上。
五、管理用户PHPcmsv9提供了强大的用户管理功能。
您可以在后台管理界面中创建、编辑和删除用户账户。
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代码分析(三)这篇讲讲模型。
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 = ''; //表前缀 //数据表名该类还定义了通用的数据库操作函数。
PHPCMS代码详细讲解
PHPCMS 整站代码分析讲解(一)首先我对PHPCMS 的头程序文件开始讲解: include/common.inc.php 这个文件是程序启动的核心文件.[Copy to clipboard][ - ] CODE:<?php/**代码讲解分析:逆雪寒. 2007 - 12 - 20*/$mtime = explode(' ', microtime());$phpcms_starttime = $mtime[1] + $mtime[0];/**计算脚本开始运行的时间。
很常见的写法。
最后结算还在程序运行的终点位置。
讲到了在给各位说。
*/unset($LANG, $_REQUEST, $HTTP_ENV_VARS, $HTTP_POST_VARS, $HTTP_GET_VARS,$HTTP_POST_FILES, $HTTP_COOKIE_VARS);/**把 $HTTP_ENV_VARS $HTTP_POST_VARS 全局变量设置为NULL 因为php4.1.0以上默认以$_POST 来替代。
unset后防止程序运行在低版本会出现安全等问题。
比如变量注入*/set_magic_quotes_runtime(0);//地球人都知道。
关了字符窜入库自动转意比如 my name is on'x 转成 my name is on \'x 为了最大的程序性能所以我们关掉吧~哈哈define('IN_PHPCMS', TRUE);/**程序入口标记。
为什么需要这个东西呢。
就好比你进一个小区,保安大哥哥肯定要你签字或是挂个鸟牌证明你是从正门进来的。
防止你翻墙进入去偷东西搞破坏。
这个入口标记也有这个功能。
在这里定义了一个常量IN_PHPCMS 为TRUE ,然后我在其他程序文件里面检查这个标记。
如果不存在或不为真,那么就基本可以肯定你这个家伙是个小偷来的。
phpcms v9常用实用代码集合
phpcms v9常用实用代码集合(解决常见问题)1.去掉标题限制后出现的省略号,str_cut($r*title+,36,”)-2.格式化时间格式化时间2011-05-06 11:22:33,date(‘Y-m-d H:i:s’,$r*inputtime+)-格式化时间2011年05月06日{date(‘Y年m月d日’,$r[inputtime])}3.多栏目调用&多推荐位调用调用需求:文章范围为59 60 61三个栏目,并且推送到了27 和28两个推荐位;从第三条开始,连续调用7篇文章。
{pc:get sql=”SELECT * FROM v9_news WHERE id IN (SELECT id FROM v9_position_data WHERE posid in(27,28) and catid in(59,60,61)) order by listorder DESC”cache=”3600″start=”3″num=”7″return=”data”} {loop $data $n $r}<li>·<a target=”_blank” href=’,$r*url+-’ title=”,$r*title+-”style=”color:Black;”>,str_cut($r*title+,22,”)-</a></li>{/loop}{/pc}4.显示栏目名称(只是名称,不带链接){$catname}显示栏目名称和链接(可以点击)<ahref=”,$CATEGORYS*$r*catid++*url+-”>,$CATEGORYS*$r*'catid'++*'catname'+-</A>5.获取父栏目id/获取父栏目名称{$CATEGORY[$catid][parentid]}父栏目名称:{$CATEGORYS[$CAT[parentid]][catname]}6.外部数据源调用dedecmsdb 在后台数据源处添加{pc:get sql=”SELECT * FROM cq_member where mtype=’企业’”cache=”3600″dbsource=”dedecmsdb”num=”7″return=”data”}{loop $data $r}<a href=”/member/index.php?uid=,$r*userid+-” title=”,$r*uname+-”1target=”_blank”>,str_cut($r*uname+,28,”)-</a>{/loop}{/pc}7.调用子栏目(在栏目首页模板需要用到){pc:content action=”category”catid=”$catid”num=”25″siteid=”$siteid”order=”listorder ASC”}{loop $data $r}<a href=”,$r*url+-”>,$r*catname+-</a> |{/loop}{/pc}8.显示指定id的栏目名称(例子这里catid=22){$CATEGORYS[22]['catname']}9.在文章面前显示文章类别{pc:content action=”lists”catid=”79″order=”listorder DESC”num=”14″}<?php $TYPE = getcache(‘type_content’,'commons’);?>{loop $data $n $r}<li>{if $TYPE[$r[typeid]][name]}<span style=”color:#CC6600″>[ {$TYPE[$r[typeid]][name]}] </span>{/if}<a href=”{$r['url']}”{title_style($r[style])}title=”{$r['title']}”target=”_blank”>{str_cut($r[title],33,”)}</a></li>{/loop}{/pc}10.指定变量循环增长(幻灯片经常用到){pc:content action=”lists”catid=”66″order=”listorder DESC”thumb=”1″num=”5″}{php $num = 0}{loop $data $r}linkarr*,$num-+ = “,$r*url+-”;picarr*,$num-+ = “,$r*thumb+-”;textarr*,$num-+ = “,str_cut($r*title+,36,”)-”;{php $num++}{/loop}{/pc}11.文章调用使用limit{pc:content action=”position”posid=”36″num=”1″order=”listorder DESC limit 1,1–”}其他都是跟以前一样使用{pc:content action=”position”posid=”31″order=”listorder DESC”limit=’1,8–’}{loop $data $r}<li><a href=”,$r*url+-” title=”,$r*title+-”target=_blank>,str_cut($r*title+,36,”)-</a></li>2{/loop}{/pc}12.文章从指定位置开始调用起始位置为5,调用3条。
phpcms标签大全V9
phpcms标签大全V9{template "content","header"}调用根目录下phpcms\template\content\header文件{CHARSET}字符集(gbk或者utf-8){if isset($SEO['title']) && !empty($SEO['title'])}{$SEO['title']}{/if}{$SEO['site_title']}{$SEO['keyword']}{$SEO['description']}标题和标题seo优化{CSS_PATH}地址替换为根目录下\statics\css{JS_PATH}地址替换为根目录下\statics\js{pc:content action="position" posid="9" order="id" num="10" cache="3600"}首页链接<a href="siteurl($siteid)} /" >{if isset($SEO['title'])&& !empty($SEO['title'])}{$SEO['title']}{/if}{$SEO['site_title']}</a>pc标签{pc:content 参数名="参数值"参数名="参数值"参数名="参数值"}{loop $data $k $v}<li><a href="{$v[url]}">{$v[title]}</a></li>{/loop}pc标签值action="position"--------------对话框的类型=“内容推荐位列表”posid="9"----------------------推荐位ID="9"order="id"---------------------排序类型="id"num="10" ----------------------数据调用数量="10"cache="3600"-------------------缓存="3600"毫秒{get_siteid()}{IMG_PATH}action="hits" 排行,热点等action="lists" 主要用于列表等。
phpcms v9模型分析
Phpcms v9模型分析
首先谈到模型,离不开字段的分析
来到module/content/field/目录下面
我们先以图片字段image来说
Config.inc.php
field_add_form.inc.php - 添加:相关的相关参数(除默认参数外附加的)
表单显示的效果为:
这里的配置项保存在配置数组当中,而不是保存在数据库当中
field_edit_form.inc.php - 修改:相关的相关参数(除默认参数外附加的)这里主要是添加模型字段是需要的文件
按新闻栏目来说,
新闻栏目采用的模型是文章模型
在新闻栏目添加内容的时候会把该有的字段给集成进来
在module/content/add里面
这里主要查看缓存文件下面的content.form.class.php的get方法
先看构造方法
这里将该模型的缓存文件全部取出来
如果是formtype为image
至于这个content.form.class.php是怎么生成的这个是更新缓存的时候生成的来到admin/cache_all_init下面
找到class/cache_api/sitemodel
所以现在知道了这几个文件的作用了
Form是生成表单的时候会用到
Input是加入内容的时候会用到
Output是输出内容的时候会用到
Update... 更新的时候会用到
大概就是如此... 了解了这些对于添加某某字段就有用多了。
phpcms v9会员功能和会员投稿模块分析
phpcms v9会员功能撰稿:konami 网址:1.注册先判断是否传值有dosubmit,如果有则处理表单提交过来的数据,如果没有直接include模板(1)Unset 可以同时删除多个(2)设置cookie(3)发送邮件2.登录(1)基础验证(2)验证各类用户3.会员首页index.php?m=member&c=index&a=init (1)获取会员信息(2)会员列表左侧(3)在线投稿功能index.php?m=member&c=content&a=publish$id = $this->content_db->add_content($info);(4)已发布稿件index.php?m=member&c=content&a=published会员投稿1.首先判断会员是否有投稿或者栏目有投稿的权限、一天能够投稿几次2.其次投稿成功后,如果管理员要审核,会在workflow这里面设置了工作流,相当与分几次审核判断,最后有一个审核表content_check 这里面记录了所有审核的记录,在向前台取数据的时候会查找这张表里面已经审核后的记录。
Status = 99,1(一级审核,未通过)2 (二级审核)3(三级审核)4(四级审核),根据workflow里面的workflowid判断是否需要审核,如果需要审核,将content_check里面的status字段置为1,代表进入一级审核,然后进入后台可以查看到一级审核里面有该偏文章Ps:后台将”国内”栏目工作流置为”二级审核“前台发布一篇测试文章:在content-check里面查找该条记录在后台会通过两次审查在文章模型v9_news里面依然能够看到这条记录依然‘status’的状态为1这个时候可以猜想会去找栏目id为6的,查找字段setting查看他的审核等级先然为2 ,其实这里都可以猜想这里为3 后台栏目上会写上一审二审三审如果status为2那么就在二审里面出现,且未审核在会员投稿中,只要未审核,都可以编辑,然后编辑后又会将状态重新置为一审。
phpcms v9学习文档
Phpcms v9学习手册1、添加全局变量我用了SKIN_JS、SKIN_CSS、SKIN_IMG来定义模板的三个文件夹,如果你不喜欢,修改文件中涉及的这三个变量名可自行修改。
第一步:打开phpcms\modules\admin\templates\setting.tpl.php搜索:$("#img_path").formValidator({onshow:"<?php echo L('setting_input').L('setting_img_path')?>",onfocus:"<?php echo L('setting_img_path').L('setting_end_with_x')?>"}).inputValidator({onerror:"<?php echo L('setting_img_path').L('setting_input_error')?>"}).regexValidator({regexp:"(.+)\/$",oner ror:"<?php echo L('setting_img_path').L('setting_end_with_x')?>"});复制代码在其后加入:$("#skin_js").formValidator({onshow:"<?php echo L('setting_input').L('setting_skin_js')?>",onfocus:"<?php echo L('setting_skin_js').L('setting_end_with_x')?>"}).inputValidator({onerror:"<?php echo L('setting_skin_js').L('setting_input_error')?>"}).regexValidator({regexp:"(.+)\/$",onerror :"<?php echo L('setting_skin_js').L('setting_end_with_x')?>"});$("#skin_css").formValidator({onshow:"<?php echo L('setting_input').L('setting_skin_css')?>",onfocus:"<?php echo L('setting_skin_css').L('setting_end_with_x')?>"}).inputValidator({onerror:"<?php echo L('setting_skin_css').L('setting_input_error')?>"}).regexValidator({regexp:"(.+)\/$",onerr or:"<?php echo L('setting_skin_css').L('setting_end_with_x')?>"});$("#skin_img").formValidator({onshow:"<?php echo L('setting_input').L('setting_skin_img')?>",onfocus:"<?php echo L('setting_skin_img').L('setting_end_with_x')?>"}).inputValidator({onerror:"<?php echoL('setting_skin_img').L('setting_input_error')?>"}).regexValidator({regexp:"(.+)\/$",onerr or:"<?php echo L('setting_skin_img').L('setting_end_with_x')?>"});复制代码搜索:<tr><th width="120"><?php echo L('setting_upload_url')?></th><td class="y-bg"><input type="text" class="input-text" name="setconfig[upload_url]" id="upload_url" size="50" value="<?php echo $upload_url?>" /></td></tr>复制代码在其后加入:<tr><th width="120"><?php echo L('setting_skin_js')?></th><td class="y-bg"><input type="text" class="input-text" name="setconfig[skin_js]" id="skin_js" size="50" value="<?php echo $skin_js?>" /></td></tr><tr><th width="120"><?php echo L('setting_skin_css')?></th><td class="y-bg"><input type="text" class="input-text" name="setconfig[skin_css]" id="skin_css" size="50" value="<?php echo $skin_css?>" /></td></tr><tr><th width="120"><?php echo L('setting_skin_img')?></th><td class="y-bg"><input type="text" class="input-text" name="setconfig[skin_img]" id="skin_img" size="50" value="<?php echo $skin_img?>" /></td></tr>复制代码第二步:打开phpcms\modules\admin\functions\global.func.php搜索:if(in_array($k,array('js_path','css_path','img_path','attachment_stat','admin_log','gzip','err orlog','phpsso','phpsso_appid','phpsso_api_url','phpsso_auth_key','phpsso_version','conne ct_enable', 'upload_url','sina_akey', 'sina_skey', 'snda_enable', 'snda_status', 'snda_akey', 'snda_skey', 'qq_akey', 'qq_skey'))) {复制代码改为(也就是添加了'skin_js','skin_css','skin_img',):if(in_array($k,array('js_path','css_path','img_path','skin_js','skin_css','skin_img','attachme nt_stat','admin_log','gzip','errorlog','phpsso','phpsso_appid','phpsso_api_url','phpsso_auth _key','phpsso_version','connect_enable', 'upload_url','sina_akey', 'sina_skey', 'snda_enable', 'snda_status', 'snda_akey', 'snda_skey', 'qq_akey', 'qq_skey'))) {复制代码第三步:打开phpcms\languages\zh-cn\ng.php搜索:$LANG['setting_upload_url'] = '附件URL访问路径';复制代码在其后加入:$LANG['setting_skin_img'] = '模板图片路径';$LANG['setting_skin_js'] = '模板JS路径';$LANG['setting_skin_css'] = '模板CSS路径';复制代码第四步:打开phpcms\base.php搜索:define('APP_PATH',pc_base::load_config('system','app_path'));复制代码在其后加入://模板js、css、img路径define('SKIN_JS',pc_base::load_config('system','skin_js'));define('SKIN_CSS',pc_base::load_config('system','skin_css'));define('SKIN_IMG',pc_base::load_config('system','skin_img'));2、分类信息列表页怎样实现各个栏目的各自的内容function structure_filters_sql($modelid,$cityid='',$catid) { //这里加上$catid $sql = $fieldname = $min = $max = '';$fieldvalue = array();$modelid = intval($modelid);$model = getcache('model','commons');$fields = getcache('model_field_'.$modelid,'model');$fields_key = array_keys($fields);//TODO$sql = "`status` = 99 AND `catid`='$catid'"; //这里也加上,单引变双引你有木有看见,99的反斜杠也不见if(intval($cityid)!=0) $sql .= ' AND `city`=\''.$cityid.'\'';foreach ($_GET as $k=>$r) {if(in_array($k,$fields_key) && intval($r)!=0 && ($fields[$k]['filtertype'] || $fields[$k]['rangetype'])) {if($fields[$k]['formtype'] == 'linkage') {$datas = getcache($fields[$k]['linkageid'],'linkage');$infos = $datas['data'];if($infos[$r]['arrchildid']) {$sql .= ' AND `'.$k.'` in('.$infos[$r]['arrchildid'].')';}} elseif($fields[$k]['rangetype']) {if(is_numeric($r)) {$sql .=" AND `$k` = '$r'";} else {$fieldvalue = explode('_',$r);$min = intval($fieldvalue[0]);$max = $fieldvalue[1] ? intval($fieldvalue[1]) : 999999;$sql .=" AND `$k` >= '$min' AND `$k` < '$max'";}} elseif($fields[$k]['boxtype']=='checkbox' || $fields[$k]['boxtype']=='multiple'){ //这里也改啦$sql .= " AND `$k` LIKE '%,$r,%'"; //为的是复选或多选的筛选} else {$sql .=" AND `$k` = '$r'";}}}return $sql;}复制代码前台调用就要改写了,如下:{php $sql = structure_filters_sql($modelid,$cityid,$catid)}还有,你不要手欠,把pc标签里catid="$catid"去掉,会出事的吆3、修复站群模式下子站点【栏目页】【内容页】采用动态页面时候url 由于APP_PATH 问题导致的内容页url 域名错误指向主站问题问题由来:原小波方案无效,请大家测试/forum.php?mod=viewthread&tid= 270400&highlight=%D5%BE%C8%BA我的修复如下:一、首先修复站群模式下子站点【栏目页】采用动态页面时候url 由于APP_PATH 问题导致的内容页url 域名错误指向主站问题(1.)打开phpcms\modules\admin\category.php找到函数repair436 行注释掉://$url = $this->update_url($catid);//$url = APP_PATH.$url;再下面添加代码://txb 修复站群模式下【栏目页】动态页面时候url 由于APP_PATH 问题导致的内容页url 域名错误问题本帖隐藏的内容$url = $this->update_url($catid);//cat 数组在前面foreach 处定义$txbsiteid=$cat['siteid'];$this->sitedb = pc_base::load_model('site_model');$siteinfo=$this->sitedb->get_one(array('siteid'=>$txbsiteid));$url = $siteinfo['domain'].$url;二、首先修复站群模式下子站点【内容页】采用动态页面时候url 由于APP_PATH 问题导致的内容页url 域名错误指向主站问题(1)、首先打开phpcms\modules\content\classes\url.class.php找到函数show()在91行左右注释掉原代码://txb 此处为原来代码,注释掉换成新修改的!// $url_arr[0] = $url_arr[1] = APP_PATH.$urls;在其下添加//txb 修复站群模式下【内容页】动态页面时候url 由于APP_PATH 问题导致的内容页url 域名错误问题本帖隐藏的内容//txb $category 数组入口处定义,已经获得某栏目siteid$txbsiteid=$category['siteid'];$this->sitedb = pc_base::load_model('site_model');$siteinfo=$this->sitedb->get_one(array('siteid'=>$txbsiteid));$url_arr[0] = $url_arr[1] = $siteinfo['domain'].$urls;最后在绑定的二级域名的根目录下加上index.php文件其内容是:(绑定的二级域名的目录在网站的根目录下)<?phpinclude '../index.php';?>或者是:(绑定的二级域名的目录在网站的默认html文件夹下的文件夹下)<?phpinclude '../../index.php';?>西部数码服务器学习链接:/faq/list.asp?unid=514。
【IT专家】phpcms v9常用实用代码集合
本文由我司收集整编,推荐下载,如有疑问,请与我司联系phpcms&nbsp;v9常用实用代码集合2013/10/08 0 原文地址:作者:与飞共享心跳1.去掉标题限制后出现的省略号{str_cut($r[title],36,’’)}2.格式化时间格式化时间2011-05-0611:22:33 {date(‘Y-m-d H:i:s’,$r[inputtime])} 格式化时间2011年05月06日{date(‘Y年m月d 日’,$r[inputtime])}3.多栏目调用多推荐位调用调用需求:文章范围为59 60 61三个栏目,并且推送到了27和28两个推荐位;从第三条开始,连续调用7篇文章。
{pc:get sql=“SELECT * FROM v9_news WHERE id IN (SELECT id FROMv9_position_data WHERE posid in(27,28) and catid in(59,60,61))order by listorder DESC” cache=“3600” start=“3” num=“7”return=“data” }{loop $data $n $r} li · atarget=“_blank” href=‘{$r[url]}’ title=“{$r[title]}” {str_cut($r[title],22,’’)} /a /li {/loop}{/pc}4.显示栏目名称(只是名称,不带链接){$catname} 显示栏目名称和链接(可以点击)ahref=“{$CATEGORYS[$r[catid]][url]}” {$CATEGORYS[$r[‘catid’]][‘catname’]} /A 5.获取父栏目id/获取父栏目名称{$CATEGORY[$catid][parentid]}父栏目名称:{$CATEGORYS[$CAT[parentid]][catname]}6.外部数据源调用dedecmsdb 在后台数据源处添加{pc:get sql=“SELECT * FROM cq_member where mtype=‘企业’ “cache=“3600” dbsource=“dedecmsdb” num=“7”return=“data”}{loop $data $r} ahref=“/member/index.php?uid={$r[userid]}” title=“{$r[uname]}”target=“_blank” {str_cut($r[uname],28,’’)} /a {/loop}{/pc}7.调用子栏目(在栏目首页模板需要用到){pc:content action=“category” catid=“$catid” num=“25”siteid=“$siteid” order=“listorder ASC”}{loop $data $r} ahref=“{$r[url]}” {$r[catname]} /a | {/loop}{/pc}8.显示指定id的栏目名称(例子这里catid=22){$CATEGORYS[22][‘catname’]}9.在文章面前显示文章类别{pc:content action=“lists” catid=“79” order=“listorder DESC”num=“14” } ?php $TYPE =getcache(‘type_content’,’commons’);? {loop $data $n $r} li {if$TYPE[$r[typeid]][name]} span [ {$TYPE[$r[typeid]][name]}] /span {/if} ahref=“{$r[‘url’]}”{title_style($r[style])}title=“{$r[‘title’]}”target=“_blank”。
最详尽的PHP整站代码解析
用到这两个变量多。所以干脆定义为常量。方便使用。再多说一个技巧: 定
$CONFIG[rootpath] 但是最好不要这样。为什么呢。因为PHP引擎会先判断 rootpath 是不是常量。如果不是才会认 $CONFIG[rootpath] 是数组。 这样性能上就差了一点点了。 再多说一个技巧: 为什么程序多数都用 引号呢而不用 "" 双引号呢。因为这样效率好, "" 双引号。 php 引擎还会先检查里面是否有变量,如果有就解释。而 '' 单引号不会做这一步的检查。而直接就当成字符窜了。所以效 率上也会有一点点影响哦。 */ $CONFIG['enablephplog'] ? set_error_handler('phpcms_error') : error_reporting(E_ERROR | E_WARNING | E_PARSE); /** $CONFIG['enablephplog'] 是否开启错误日志设置。这个设置在全局配置文件里面.config.inc.php 。 这里使用了 算符 偶最喜欢用了。一些简短的逻辑判断。可以使用 ?: ; 来实现比较简洁 三目运
PHPCMS 整站代码分析讲解(一)
首先我对 PHPCMS 的 头程序文件开始讲解 : include/common.inc.php
这个文件是程序启动的核心文件. [Copy to clip<?php /** 代码讲解分析: 逆雪寒. 2007 - 12 - 20 */ $mtime = explode(' ', microtime()); $phpcms_starttime = $mtime[1] + $mtime[0]; /** 计算脚本开始运行的时间。很常见的写法。最后结算还在程序运行的终点位置。讲到了在给各位说。 */ unset($LANG, $_REQUEST, $HTTP_ENV_VARS, $HTTP_POST_VARS, $HTTP_GET_VARS, $HTTP_POST_FILES, $HTTP_COOKIE_VARS); /** 把 $HTTP_ENV_VARS $HTTP_POST_VARS 全局变量设置为 NULL 因为 php4.1.0 以上默认以 $_POST 来替代。unset 后 防止程序运行在低版本会出现安全等问题。比如变量注入 */ set_magic_quotes_runtime(0); //地球人都知道。关了字符窜入库自动转意 比如 my name is on'x 们关掉吧~哈哈 define('IN_PHPCMS', TRUE); /** 程序入口标记。为什么需要这个东西呢。就好比你进一个小区,保安大哥哥肯定要你签字或是挂个鸟牌证明你是从正门进来 的。防止你翻墙进入去偷东西搞破坏。这个入口标记也有这个功能。 在这里定义了一个常量 IN_PHPCMS 为 TRUE ,然 后我在其他程序文件里面检查这个标记。如果不存在或不为真, 那么就基本可以肯定你这个家伙是个小偷来的。 人可能翻墙进入。但程序怎么翻墙呢。只要在 php.ini 文件里面激活 allow_url_fopen 选项,include() 就可以包含 URL 地址了。你想下如果你有个 放密码的 PHP 文件。如果给人家 include 了 以后。你怕不怕。 */ define('PHPCMS_ROOT', str_replace("\\", '/', substr(dirname(__FILE__), 0, -8))); /** 为了程序产品的跨平台。自动获取程序的安装目录路径 ,定义为 PHPCMS_ROOT 常量。方便以后程序使用。建议大家都这 样做哦 */ require PHPCMS_ROOT.'/include/global.func.php'; /** 包含 全局函数 global.func.php 文件。里面放了些程序全局都有需要用的函数.大家看到了吧。 常量 PHPCMS_ROOT 已 经发挥作用。 这样程序给人家发布到了 二级目录下。也不需要人家手动改整站根目录路径了。 自己好好理解下。。。。。 */ $search_arr = array("/ union /i","/ select /i","/ update /i","/ outfile /i","/ or /i"); 1 转成 my name is on \'x 为了最大的程序性能所以我
phpcms v9的用户手册
《深入理解PHPCMS V9的用户手册》一、引言在当今信息爆炸的时代,全球信息湾建设已经成为每个企业和个人必不可少的一项工作。
而对于大部分非专业程序员来说,一个好用且功能强大的内容管理系统(CMS)至关重要。
PHPCMS V9作为一款知名的开源CMS系统,其用户手册更是成为了每一个使用者和开发者的必备工具。
本文将深入探讨PHPCMS V9用户手册,带您了解其功能、使用和优势。
二、PHPCMS V9用户手册的基本介绍1. PHPCMS V9是一款什么样的CMS?在介绍用户手册之前,我们首先要了解PHPCMS V9是一款什么样的CMS。
PHPCMS V9是一款完全开源的内容管理系统,具有优秀的模块化、多语言支持、强大的扩展性等特点,适用于各类全球信息湾建设。
2. 用户手册的作用和意义用户手册是PHPCMS V9的必备工具之一,它提供了全面的使用指南和技术支持,帮助用户更好地了解和使用PHPCMS V9。
用户手册不仅提供了基本的功能介绍,还详细说明了各项功能的操作方法和注意事项,对于新手来说,用户手册更是一个不可或缺的学习资料。
三、深度解析PHPCMS V9用户手册1. 用户手册的内容和结构用户手册中包含了丰富的内容,涵盖了PHPCMS V9的各个方面,如安装指南、使用教程、常见问题解答等。
而其结构清晰,内容丰富,非常适合用户快速查阅和学习。
2. 使用技巧和注意事项用户手册中不仅提供了基本的使用教程,还深入介绍了一些使用技巧和注意事项。
这些内容对于用户更深入地了解和熟练掌握PHPCMS V9至关重要。
3. 个性化定制和扩展功能PHPCMS V9用户手册还详细介绍了个性化定制和扩展功能的方法和技巧,帮助用户根据自己的需求对CMS进行定制和扩展,满足不同全球信息湾的需求。
四、总结和展望通过本文的详细介绍,相信您对PHPCMS V9用户手册已经有了更深入的了解。
用户手册作为使用者和开发者的得力助手,能帮助您更好地了解和使用PHPCMS V9,提高全球信息湾建设的效率和质量。
phpcms v9模板代码解析-首页
phpcms v9模板解析
首先来到content模块下面的header.html
1.首页顶部推荐位
对于content下面的position
参数名是否必须默认值说明
posid 是null 推荐位ID
catid 否null 调用栏目ID
thumb 否0 是否仅必须缩略图
order 否null 排序类型
num 是null 数据调用数量
相关查询
Posid 后台-内容-推荐位管理
Catid 后台-内容-栏目管理
2.在分类下面进行查询
这里是取缓存文件里面的东西,具体这个怎么生成的缓存,和专题,研究中?
3.下面是首页导航的代码
对于category
参数名是否必须默认值说明
catid 否0 调用该栏目下的所有栏目,默认0,调用一级栏目$siteid 否 1 默认调用系统站点
order 否null 排序方式、一般按照listorder ASC排序,即栏目的添加顺序如果要使用下级标签,使用get标签调用数据库调出
4.首页左侧头条推荐推荐信息
对应源代码
这个解释和position 一样这里就不多说了
5.首页焦点图推荐
6.下面看到争议这一块
首先找到他的标签
7.首页图片新闻推荐
8.首页顶级栏目循环
这里的代码为
这里的含义是显示一条图文浏览的,显示5条依次下来的信息其中subcat为系统主函数下面的
这里面主要是找缓存文件,其实后台更新栏目后也随即更新了缓存文件9.公告
10.订阅
11.专题页面
这里的elite为是否为推荐
12热点、评论、关注
13.调查问卷,这是后台调用的js文件
14.友情链接。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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自动创建的表,保存每一条自建模型额外的数据信息。
建议将不那么经常被查询的字段,比如内容(大文本)字段保存在这个表里。