PHPCMS二次开发_问答模块数据库设计
PHP实战开发教程PHPCMS二次开发PHPSSO
管理PHPSSO中的用户账户信息
应用管理
管理已接入到PHPSSO中的各个应用。包括添加,删 除,设置通讯方式等。
积分兑换
管理已接入到PHPSSO中的各个应用之间的积分兑换 规则。
管理员管理
设置PHPSSO系统的管理员账号。 PHPSSO中的管理员账号分为两种类型: 超级管理员:允许使用PHPSSO中的所有管理功能; 普通管理员:允许管理会员,应用,通信及积分。
系统设置
包括对会员注册时的限制信息,以及与UCENTER PHPCMS2019 SP3的通讯配置。
更新缓存
用于更新当前已接入到PHPSSO中的应用缓存信息
Thank yo 感谢聆听
PHP实战开发教程PHPCMS二次开发PHPSSO
PHPSSO的优势——方便用户
用户使用应用系统时,能够一次登录,多次使用。用 户不再需要每次输入用户名称和用户密码,也不需要 牢记多套用户名称和用户密码。单点登录平台能够改 善用户使用应用系统的体验。
PHPSSO的优势——方便管理
系统管理员只需要维护一套统一的用户账号,斱便、 简单。相比之下,系统管理员以前需要管理很多套的 用户账号。每一个应用系统就有一套用户账号,不仅 给管理上带来不便,而且,也容易出现管理漏洞。
PHPSSO的优势——简化开发
在开发新的应用系统时,可以直接使用已经开发完成 的SSO系统完成用户认证服务,简化开发流程。单点 登录系统通过统一的认证平台实现单点登录。因此, 新的系统就无需额外开发一套独立的用户认证程序了 。
PHPSSO的优势——跨平台整合
我们可以通过PHPSSO的设置功能完成站点与Ucenter 等其他平台的用户信息整合工作,无需制作额外的接 口程序。
PHPCMS开发实例PHPCMS二次开发模板-精品文档
{pc:json url=“test_url" cache="86400"} {loop $data $key $val} <a href="{$val[url]}">{$val['title']}</a> {/loop} {/pc}
PC标签——XML工具箱
{pc:xml}……{/pc}
参数 url cache return 默认值 null 0 data 说明 要读取的JSON数据来源 缓存时间,对读取的数据进行数据缓存,单位为秒。不设 置该值表示不需要进行缓存 返回数组名。默认值为data
PC标签——评论模块
PC标签——投票模块
PC标签——公告模块
PC标签——专题模块
PC标签——会员模块
PC标签——友情链接模块
PC标签——工具箱
PC标签——JSON工具箱
{pc:json}……{/pc}
参数 url cache return 默认值 null 0 data 说明 要读取的JSON数据来源 缓存时间,对读取的数据进行数据缓存,单位为秒。不设 置该值表示不需要进行缓存 返回数组名。默认值为data
dbsource null return data
{pc:get sql="SELECT * FROM pre_forum_thread" cache="3600" page="$page" dbsource="discuz" return="data"} <ul> {loop $data $key $val} <li><A href="">{$val[subject]}</A></li> {/loop} </ul> {if $pages}<div class=page>{$pages}</div>{/if} {/pc}
CMS之数据库设计
CMS之数据库设计在建立一个CMS(内容管理系统)时,数据库设计是一个非常重要的步骤。
数据库设计需要考虑如何有效地存储和管理各种内容,以便实现系统的高性能和可扩展性。
以下是一个关于CMS数据库设计的详细讨论。
首先,我们需要确定CMS系统中的几个主要实体,例如用户,文章,页面,评论等。
每个实体都应该有一个唯一的标识,如用户ID,文章ID 等。
对于用户实体,可以存储用户的基本信息,如用户名,密码,电子邮件等。
此外,还可以存储用户的角色和权限信息,以实现不同用户角色的访问控制。
除了这些核心实体外,还可以根据实际需求添加其他实体,如图片,文件等。
这些实体可以使用外键关联到其他实体,以实现相关内容的管理。
接下来,我们需要考虑如何设计数据库表之间的关系。
关系可以通过主键和外键来建立。
每个表应该有一个主键字段,以唯一标识每条记录。
对于一对一关系,可以将一个表的主键作为另一个表的外键。
对于一对多关系,可以在多的一方的表中添加一个外键字段,以关联到另一个表的主键字段。
对于多对多关系,可以使用中间表来建立两个表之间的关系。
为了提高查询性能,可以对一些常用的查询进行优化。
例如,可以为用户表中的用户名字段创建索引,以便快速查询用户信息。
此外,还可以使用分页查询来提高查询性能,以避免一次性加载大量数据。
数据库设计还需要考虑数据的一致性和完整性。
可以使用约束来限制数据的取值范围,例如,可以设置用户名字段的唯一约束,以确保每个用户名都是唯一的。
此外,还可以使用触发器来实现复杂的业务逻辑,例如,当插入一条评论时,可以自动更新文章的评论数。
最后,数据库设计还需要定期进行维护和优化。
例如,可以定期清理无效数据,优化查询语句,并监控数据库性能。
此外,还可以定期备份数据库,以防止数据丢失。
综上所述,CMS数据库设计是一个复杂且关键的任务。
通过合理设计和优化,可以实现高性能和可扩展的CMS系统。
数据库设计应该考虑实体之间的关系,查询性能,数据一致性和完整性等方面。
PHPCMS开发实例_PHPCMS二次开发_目录与入口程序
PHPCMS
model
lib language cache caches_* configs api
目录结构——api
接口文件目录
目录结构——cache
配置&缓存文件目录
configs:系统配置文件目录 caches_*:系统缓存目录
目录结构——phpcms
phpcms主目录
language:语言包存储目录 lib :底层框架存储目录 model:数据表对象定义存储目录 modules:功能模块存储目录 templates:模板文件存储目录
北风网PHPCMS二次开发
剖析PHPCMS
目录与入口程序
讲师:胖龙(北风网版权所有)
favicon.ico
robots.txt
crossdomain.xm l index.php
ห้องสมุดไป่ตู้PHPCMS V9 的目录结构
admin.php uploadfile js statics images css phpsso_server templates Phpcms modules
欢迎访问我们的官方网站
目录结构——phpsso_server
phpsso主目录
目录结构——statics
phpcms主目录
css:系统样式定义文件存储目录
images:系统图片存储目录 js:系统JS包存储目录
目录结构——uploadfile
网站上传文件存储目录
目录结构——根目录文件
admin.php:管理平台入口程序 index.php:系统入口程序 crossdomain.xml:FLASH跨域传输配置文件 robots.txt:搜索引擎蜘蛛限制配置文件 favicon.ico:系统图标
cms二次开发概念
CMS二次开发是指在现有的CMS软件上进行定制修改和功能扩展,以达到满足特定需求的目的。
一般来说,CMS二次开发不会改变原有系统的内核,而是通过修改和增加功能模块来实现个性化需求。
以phpcms为例,phpcms是国内领先的网站内容管理系统,同时也是一个开源的PHP开发框架。
它采用模块化开发,支持多种分类方式,使用它可方便实现个性化网站的设计、开发与维护。
它支持众多的程序组合,可轻松实现网站平台迁移,并可广泛满足各种规模的网站需求,可靠性高,是一款具备文章、下载、图片、分类信息、影视、商城、采集、财务等众多功能的强大、易用、可扩展的优秀网站管理软件。
Phpcms由内容模型、会员、问吧、专题、财务、订单、广告、邮件订阅、短消息、自定义表单、全站搜索等20多个功能模块组成,内置新闻、图片、下载、信息、产品5大内容模型。
Phpcms 采用模块化开发,支持自定义内容模型和会员模型,并且可以自定义字段。
这为二次开发提供了很大便利。
进行CMS二次开发时,可以根据实际需求选择相应的开发方式和技能进行开发。
如果只是修改模板,需要了解CMS的标签语法和相关技术的基础知识;如果涉及到程序开发等问题,那么还需要深入了解CMS的文件结构、文件作用,并且对PHP面向对象有一定层次的了解。
PHPCMS V9模型二次开发[高级]_2
PHPCMS v9模型二次开发[高级]概述:PHPCMS v9模型二次开发主要分为底层模型开发,即代码级的模型开发;其次,是可视化的模型开发,即通过登录系统后台添加模型。
第一种模型开发对技术要求很高,但是,能实现很多PHPCMS v9没有实现或者不能实现的功能。
第二种模型开发完全隐藏了技术的实现,操作简单,使用方便,在没有特殊功能的时候,这个是首先。
我们今天先讲第二种,可视化的模型开发。
假如,现在我们有一个产品展示功能。
要显示的信息如下:*)产品名称*)产品价格*)出厂时间*)规格参数*)配件列表*)产品图片然后,PHPCMS v9提供的文章模型、图片模型、下载模型根本不能满足我们的这个需求。
此时,我们就会涉及到添加模型的操作。
1、登录系统后台,进入导航“内容”----》"管理模型"然后,在页面的右边找到“添加模型”,点击进入添加模型:模型名称必须填写,当我们在添加栏目的时候就可以选择以这个名称命名的模型了。
模型表键名也必须填写,这个将会在数据库里面有二张表对应,假设此时的表前缀是:v9_则对应的两张表名为:v9_products、v9_products_data2、点击确定创建好自定义的“产品模型”之后,点击“字段管理”点击“字段管理”之后,在弹出的页面里面进行字段的禁用、删除、添加等操作。
比如:添加产品名称、产品价格、产品规格、出厂时间等字段。
删除:阅读收费、允许评论、分页方式、相关文章等字段。
禁用:关键词、推荐位等字段。
删除字段与禁用字段都很方便快捷,现在来谈谈添加字段。
在点击“字段管理”进入页面后,左上角会有一个“添加字段”的功能。
点击“添加字段”进入页面。
如图:我们以添加一个是否显示产品的功能字段,那么在字段类型那里可以选择“选项”;由于,我们会经常使用这个字段进行查询,所以,我们在“作为主表字段”设置为是;字段名设置为isshows,这个地方的字段名对应表中的v9_products表中的字段,添加字段完成之后,可以在这个表中看得出来。
二次开发-2
自增
YES No No No No No No
说明
自增的留言信息ID 分类ID 用户名 留言类型(留言、回复) 留言/回复内容 留言/回复时间 站点ID
•
你还可以根据自己的需求,再增加一些比如QQ,email, 什么的,你可以继续增加
PHPCMS 二次开发全新课程 小波主讲
•
数据库表的设计
根据上面的字段,类型,长度,我们就可以做出.SQL语句来了
GBK 版本的,就更改下 CHARSET 就可以了
CHARSET=gbk;
新建一个 guestbook.txt 文件复制上面的内容,然后,另存为 guestbook.sql
PHPCMS 二次开发全新课程 小波主讲
•
• • • •
模块功能的实现 二
需求也分析了,主要数据表也建设了,接下来,我们需要建设文件与文件夹 进入wwwroot \phpcms\modules 进入站点根目录下 phpcms 框架目录下的 modules 模块目录下 新建文件夹 guestbook 进入后台,模块管理,我们可以看到,有个无法安装,名字为空,且模块目录为 guestbook 的模块
PHPCMS 二次开发全新课程
教员:小波 论坛账号:0793jay
PHPCMS 二次开发全新课程 小波主讲
• 什么 是 模块,什么是插件 • 如何安装模块 • 如何设计模块 • 模块功能的实现 • 模块需要界面的方法与使用
PHPCMS 二次开发全新课程 小波主讲
什么是模块?什么是插件?
无法安装,是因为缺失安装文件及一些安装必要的配置文件。下一篇,我们详细讲解每个文件。 此方法是适合 开发者, 自己使用的,一般就不需要安装及卸载程序了,直接就操作数据库了,但先,我们因为需要讲的详细,就把每个步骤都讲解 清楚,介绍清楚。这样,你开发的功能,也能给其他的用户共享使用了
phpcms二次开发
phpcms v9二次开发及使用中各类问题结集合解决方案安装使用1、栏目所属模型的修改、合并、删除?修改栏目所属模型前,先清空该栏目的内容。
合并?呵呵,自己动手批量转移内容不就得了,注意:必须是相同模型的栏目才可以转移。
删除:后台-内容管理-栏目管理,重新统计栏目数据更新栏目缓存 2、后台登陆不上,提示用户名不能为空试试清除cache文件夹下的error_log.php 3、首页登录直接跳到会员中心,改成其它在根目录下找到如下位置phpcms\modules\member\index.php,修改569行代码为1. $forward = isset($_POST['forward']) && !empty($_POST['forward']) ? urldecode($_POST['forwa rd']) : 'index.php';4、后台锁屏模版样式phpcms\modules\admin\templates\index.tpl.php 36行左右 5、整合Ucenter 6、网站域名迁移7、首页登录框的实现8、更换了网站地址,会员无法登陆换地址,需要修改 caches\configs\system.php 文件 \phpsso_server\caches\configs\system.php 文件也要改 9、数据库用户名和密码修改,数据库连接文件在哪里 \caches\configs\database.php 10、不想开户缩略图功能不要选择自动截取第一张做为缩略图就行了.在模型字段,缩略图中设置 11、发布了栏目,首页的导航栏不显示12、火车头采集时,加入[page]分页符时,不分页问题火车头一般都有接口,所有参数都要在接口上指定才行。
比如你在后台内容编辑器中设置了默认为手动分页。
那么,并不意味着火车头在发布时,也会帮你手动分页的。
phpcms v9 仿站与二次开发收藏集
phpcms v9问题博客分类:php内容管理系统phpcms 登录总是提示“验证码输入错误”,分明没有输错的解决修改"/caches/configs/system.php"当中session_storage => 'mysql'为session_storage => 'files'并且流量器中的域名要和system.php中的一致此模块未安装或者已被禁用原因模块 > 模块管理 > 模块管理 >中对应的模块没有安装解决在module表中添加相关记录前台页面报:栏目不存在解决扩展 > 扩展 > 更新全站缓存 >添加module在module,menu表中也要添加修改后台左侧导航phpcms\modules\admin\templates\left.tpl.phpphpcms\modules\admin\class\admin.class.php admin_menuphpcms\modules\admin\templates\index.tpl.php位置:扩展 > 扩展 > 菜单管理 >说明:一、本功能用于后台各功能菜单的设置操作。
二、为系统分配权限调用,所有系统用到的功能方法,都需要添加到菜单管理里。
一、添加菜单添加菜单分为全新添加和在已有菜单处添加子菜单。
二种方法仅在上级菜单默认值处有异,其它相同。
全新添加:添加功能菜单时,首先选择上级菜单目录。
填写中英文对应菜单名称,所在模块名,及对应文件和处理方法名。
如有参数,请于下填写参数信息。
如下图所示如选择显示菜单,则在导航处显示,反之不显。
以上图为例,选择不显示,图示如下二、菜单管理菜单管理仅涉及编辑,修改、排序等操作在此不再详述。
∙∙大小: 10.1 KB∙∙大小: 14.8 KB∙∙大小: 5.9 KB∙∙大小: 1.6 KBphpcms v9模板制作教程(四)发布时间:2012-05-20 20:12:38 来源:天行子点击:12phpcms v9模板制作教程(四)在学下节课之前我先讲些学前需要知道的知识1、养成书写规范的DIV标签搜索引擎优化(seo)中,对代码的优化也是一个很关键的步骤。
phpcmsv9二次开发手册
PHPCMS V9 二次开发文档文件目录结构根目录| - api接口文件目录| - caches缓存文件目录| -configs系统配置文件目录| - caches_*系统缓存目录| - phpcms phpcms 框架主目录| - languages 框架语言包目录| - libs 框架主类库、主函数库目录| - model 框架数据库模型目录| - modules 框架模块目录| - templates 框架系统模板目录| - phpsso_server phpsso 主目录| - statics 系统附件包| -css系统css包| - images 系统图片包| - js 系统js 包| - uploadfile 网站附件目录| - admin.php 后台管理入口| - index.php 程序主入口| - crossdomain.xml FLASH 跨域传输文件| - robots.txt 搜索引擎蜘蛛限制配置文件| - favicon.ico 系统icon 图标PC标签使用说明在PHPCMS V9中我们正式开始需要PC标签做为数据的获取的方式。
PC标签是以下面的方式进行声明{pc:content action="lists" cache="3600" num ="20" page="$page"}{/pc}PC标签必须以{pc}开头,并以{/pc}结尾的代码片段。
当然不以{/pc}结尾并不会引起程序致命性的错误,导致程序无法继续运行。
以下为两种已知可能会出现的问题:1.当网页中出现两个PC标签时,可能会使得没有闭合的PC标签之后的PC标签数据和其混乱。
2.在后台可视化编辑时,可能出现网页结构错乱的问题。
PC标签分析:PC标签中{pc:}冒号之后跟随的为模块名。
如上面的例子中调用的是内容模型的PC标签。
actio n="list"这个形式所代表的是参数。
用PHP实现在线问答社区系统的构建与优化
用PHP实现在线问答社区系统的构建与优化在当今互联网时代,问答社区系统已经成为人们获取信息、分享知识、交流经验的重要平台。
为了满足用户需求,构建一个高效稳定的在线问答社区系统至关重要。
本文将介绍如何利用PHP语言来构建和优化在线问答社区系统,以提升用户体验和系统性能。
1. 构建问答社区系统1.1 确定需求和功能在构建问答社区系统之前,首先需要明确系统的需求和功能。
用户应该能够注册账号、发布问题、回答问题、点赞、评论等。
管理员应该具有管理用户、管理内容、审核问题等权限。
确定清晰的需求和功能列表是系统设计的基础。
1.2 数据库设计数据库设计是问答社区系统的核心之一。
需要设计用户表、问题表、回答表、评论表等,保证数据结构合理规范。
使用MySQL等数据库管理系统,建立索引、外键等约束,提高数据查询效率。
1.3 界面设计界面设计直接影响用户体验。
应该设计简洁清晰的界面,包括首页展示、问题详情页、个人中心等页面。
采用HTML、CSS、JavaScript 等前端技术,实现响应式布局和友好交互效果。
1.4 后端开发利用PHP语言结合框架(如Laravel、CodeIgniter)进行后端开发。
实现用户注册登录、问题发布回答、权限管理等功能。
采用MVC 架构,提高代码复用性和可维护性。
1.5 安全性考虑安全性是在线问答社区系统不可忽视的重要因素。
应该对用户输入进行过滤和验证,防止SQL注入、XSS攻击等安全漏洞。
使用HTTPS 协议传输数据,保护用户隐私信息。
2. 优化问答社区系统2.1 性能优化性能优化是提升系统响应速度和稳定性的关键。
可以通过缓存技术(如Redis)、数据库索引优化、代码优化等手段来提高系统性能。
合理使用CDN加速静态资源加载,减轻服务器压力。
2.2 用户体验优化用户体验是评判一个问答社区系统好坏的重要标准。
应该注重页面加载速度、交互流畅性和信息展示清晰度。
设计友好的操作界面,提供搜索功能和推荐算法,增强用户粘性。
PHPCMS V9会员注册与二次开发
[PHPCMS V9二次开发]自定义字段模型-文本组∙浏览: 365∙更新: 2012-03-08 11:44举报作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
PHPCMS V9,我们在做作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
PHPCMS V9,我们在做类似于酒店房型等类型的时候,需要用到文本组字段模型,但PHPCMS并未提供该模型。
如下图所示效果:展示效果如下:步骤/方法1.打开phpcms\modules\content\fields目录,复制文件夹downfiles,并改名为textgroups。
2.打开phpcms\modules\content\fields\fields.inc.php文件,增加字段类型:'textgroups'=>'多文件上传',3.打开phpcms\modules\content\fields\textgroups目录(第一步复制的文件夹),修改以下文件:4.form.inc.phpfunction textgroups($field, $value, $fieldinfo) {extract(string2array($fieldinfo['setting']));$list_str = '';if($value) {$value = string2array(html_entity_decode($value,ENT_QUOTES));if(is_array($value)) {foreach($value as $_k=>$_v) {$list_str .= "<div id='textsgroups{$_k}'> <input type='text'name='{$field}_fx[]' value='{$_v[fx]}' style='width:100px;'class='input-text'> <input type='text' name='{$field}_fj[]'value='{$_v[fj]}' style='width:100px;' class='input-text'><input type='text' name='{$field}_cx[]' value='{$_v[cx]}'style='width:100px;' class='input-text'> <input type='text'name='{$field}_kd[]' value='{$_v[kd]}' style='width:100px;'class='input-text'> <input type='text' name='{$field}_vip[]'value='{$_v[vip]}' style='width:100px;' class='input-text'> <a href=\"javascript:remove_div('textsgroups{$_k}')\">".L('remove_ out')."</a></div>";}}}$string ='<script type=text/javascript>function add_textsfile(returnid) {var ids = parseInt(Math.random() * 10000);var str = "<li id=\'textsgroups"+ids+"\'> <input type=\'text\' name=\'"+returnid+"_fx[]\' value=\'\' style=\'width:100px;\'class=\'input-text\'> <input type=\'text\'name=\'"+returnid+"_fj[]\' value=\'\' style=\'width:100px;\'class=\'input-text\'> <input type=\'text\'name=\'"+returnid+"_cx[]\' value=\'\' style=\'width:100px;\'class=\'input-text\'> <input type=\'text\'name=\'"+returnid+"_kd[]\' value=\'\' style=\'width:100px;\' class=\'input-text\'> <input type=\'text\'name=\'"+returnid+"_vip[]\' value=\'\' style=\'width:100px;\' class=\'input-text\'> <ahref=\"javascript:remove_div(\'textsgroups"+ids+"\')\">Remove</a> </li>";$(\'#\'+returnid).append(str);}</script>';$string .= '<input name="info['.$field.']" type="hidden"value="1"><fieldset class="blue pad-10"><legend>'.L('mm_fxlist').'</legend><div id="tt"><input type="text" value="'.L('mm_fx').'" readonlystyle="width:100px;border:0;" class="input-text"><input type="text" value="'.L('mm_fj').'" readonlystyle="width:100px;border:0;" class="input-text"><input type="text" value="'.L('mm_cx').'" readonlystyle="width:100px;border:0;" class="input-text"><input type="text" value="'.L('mm_kd').'" readonlystyle="width:100px;border:0;" class="input-text"><input type="text" value="'.L('mm_lyj').'" readonlystyle="width:100px;border:0;" class="input-text"></div>';$string .= $list_str;$string .= '<ul id="'.$field.'" class="picList"></ul></fieldset><div class="bk10"></div>';$string .= $str."<input type=\"button\" class=\"button\"value=\"".L('mm_addfx')."\"onclick=\"add_textsfile('{$field}')\">";return $string;}5.修改input.inc.phpfunction textgroups($field, $value) {$hotel = $_POST[$field.'_fx'];$hotel_fj = $_POST[$field.'_fj'];$hotel_cx = $_POST[$field.'_cx'];$hotel_kd = $_POST[$field.'_kd'];$hotel_vip = $_POST[$field.'_vip'];$array = $temp = array();if(!empty($hotel)) {foreach($hotel as $key=>$hote) {$temp['fx'] = $hote;$temp['fj'] = $hotel_fj[$key];$temp['cx'] = $hotel_cx[$key];$temp['kd'] = $hotel_kd[$key];$temp['vip'] = $hotel_vip[$key];$array[$key] = $temp;}}$array = array2string($array);return $array;}6.修改的output.inc.phpfunction textgroups($field, $value) {return string2array($value);}7.更新后台缓存。
phpcmsv9二次开发模板制作常用代码
phpcmsv9二次开发模板制作常用代码phpcms v9二次开发模板制作常用代码001:调用最新文章,带所在版块{pc:get sql="SELECT a.title, a.catid, b.catid, b.catname, a.url as turl ,b.url as curl,a.id FROM `v9_news` a, `v9_category` b WHERE a.catid =b.catid ORDER BY `a`.`id` DESC "num="15" cache="300"}{loop $data $r}<h6><font class="cate"><a href="{$r[curl]}">[{$r[catname]}]</a></font><aclass="gray" href="{$r[turl]}" title="{$r[title]}"> {str_cut($r['title'],26)}</a></h6>{/loop}{/pc}====<font class="cate"><a href="{$r[curl]}">[{$r[catname]}]</a></font>所在版块的调用1.截取调用标题长度{str_cut($v[title],36,'')}{str_cut($v['title'],34)} 超出用 ... 代替{str_cut($v['title'],34, '')}超出用代替{str_cut($v['title'],34,'')}超出不用任何字符代替2.格式化时间调用格式化时间 2011-05-06 11:22:33{date('Y-m-d H:i:s',$r[inputtime])}<span class="rt">{date('m-d',$v['inputtime'])}</span>3.多栏目调用&多推荐位调用调用需求:文章范围为59 60 61三个栏目,并且推送到了27 和28两个推荐位;从第三条开始,连续调用7篇文章。
PHPCMS数据库设计
PHPCMS数据模型详解----bane12@ 1.管理员phpcms_admin2.管理员权根phpcms_admin_role3.管理员权限phpcms_admin_role_priv4.广告phpcms_ads10flashurl varchar(100)NO|flash地址11wmode varchar(20)NO|是否透明12text text NO|文本内容13code text NO|代码内容14fromdate int(10)unsigned NO MUL0|广告开始日期15todate int(10)unsigned NO0|广告结束日期16username char(20)NO MUL|客户帐号17addtime int(10)unsigned NO0|添加日期18views int(10)unsigned NO0|浏览次数19clicks mediumint(8)unsigned NO0|点击次数20passed tinyint(1)unsigned NO0|是否通过21status tinyint(1)unsigned NO1|广告状态5.广告位phpcms_ads_place6.广告统计phpcms_ads_stat7.公告phpcms_announce8.地区phpcms_area9.问吧问题phpcms_ask12anonymity tinyint(1)unsigned NO0|匿名13hits mediumint(8)unsigned NO0|点击数14ischeck tinyint(1)unsigned NO0|是否已经检查过期15searchid mediumint(8)unsigned NO0|全站搜索ID10.问吧角色phpcms_ask_actor11.问吧积分phpcms_ask_credit12.问吧回复phpcms_ask_posts12username char(20)NO|用户名13solvetime int(10)unsigned NO0|解决时间14votecount smallint(5)unsigned NO0|投票数13.问吧投票统计phpcms_ask_vote14.附件phpcms_attachment15.作者phpcms_author4gender tinyint(1)unsigned NO0|性别5birthday date NO0000-00-00|生日6email varchar(40)NO|Email7qq varchar(15)NO|QQ8msn varchar(40)NO|MSN9homepage varchar(100)NO|主页10telephone varchar(20)NO|电话11address varchar(100)NO|地址12postcode varchar(6)NO|邮编13photo varchar(100)NO|照片14introduce mediumtext NO|介绍15updatetime int(10)unsigned NO0|更新时间16listorder tinyint(3)unsigned NO0|排序17elite tinyint(1)unsigned NO0|推荐18disabled tinyint(1)unsigned NO0|是否禁用16.碎片phpcms_block17.下载模型phpcms_c_down9stars varchar(20)NO★★★☆☆|评分等级10filesize varchar(20)NO未知|文件大小11downurl varchar(255)NO|12downurls text NO|下载列表13groupids_view tinyint(1)unsigned NO0|下载权限14readpoint smallint(5)unsigned NO0|阅读所需点数18.信息模型phpcms_c_info19.文章模型phpcms_c_news20.图片模型phpcms_c_picture21.产品模型phpcms_c_product22.缓存统计phpcms_cache_count23.栏目phpcms_category19setting mediumtext NO|设置20listorder smallint(5)unsigned NO0|排序21ismenu tinyint(1)unsigned NO1|在导航显示24.评论phpcms_comment25.内容模型phpcms_content19islink tinyint(1)unsigned NO0|外部链接20prefix char(20)NO|26.内容模型统计phpcms_content_count27.内容模型推荐位phpcms_content_position28.内容模型TAG phpcms_content_tag29.来源phpcms_copyfrom30.数据源phpcms_datasource5dbpw varchar(50)NO|数据库密码6dbname varchar(20)NO|数据库名称7dbcharset varchar(10)NO|数据库字符集8tablename varchar(30)NO|表名9fields varchar(255)NO|字段名称10status tinyint(1)unsigned NO0|状态31.顶一下phpcms_digg32.顶一下记录phpcms_digg_log33.编辑器数据恢复保存phpcms_editor_data34.错误报告phpcms_error_report35.表单向导phpcms_formguide36.表单向导字段phpcms_formguide_fields15issystem tinyint(1)unsigned NO0|是否必填16isbackground tinyint(1)unsigned NO0|是否在后台列表显示17isunique tinyint(1)unsigned NO0|是否唯一18issearch tinyint(1)unsigned NO0|是否19isselect tinyint(1)unsigned NO0|20islist tinyint(1)unsigned NO0|21isshow tinyint(1)unsigned NO0|22listorder mediumint(8)unsigned NO0|23disabled tinyint(1)unsigned NO1|37.友情链接phpcms_guestbook38.浏览次数统计phpcms_hits39.IP禁止phpcms_ipbanned40.关联链接phpcms_keylink41.关键字phpcms_keyword42.友情链接phpcms_link43.操作日志phpcms_log44.邮件订阅phpcms_mail45.邮件地址phpcms_mail_email46.邮件类型phpcms_mail_email_type47.会员phpcms_member48.会员缓存phpcms_member_cache49.会员详细信息phpcms_member_detail4msn varchar(20)NO|MSN 5telephone varchar(20)NO|电话6address varchar(100)NO|地址7qq varchar(15)NO|QQ 8birthday datetime NO|生日9postcode varchar(15)NO|邮编10mobile varchar(15)NO|手机50.会员组phpcms_member_group51.扩展会员组phpcms_member_group_extend52.会员权限phpcms_member_group_priv53.会员基本信息phpcms_member_info54.菜单phpcms_menu15userid mediumint(8)unsigned NO MUL0|用户ID 16keyid char(30)NO MUL|Keyid55.短消息phpcms_message56.模型phpcms_model57.模型字段phpcms_model_field58.模块phpcms_module7author varchar(50)NO|作者8site varchar(100)NO|版权网站地址9email varchar(50)NO|Email10description mediumtext NO|描述11license mediumtext NO|授权说明12faq mediumtext NO|帮助13tagtypes mediumtext NO|标签类型14setting mediumtext NO|模块配置15listorder tinyint(3)unsigned NO0|排序16disabled tinyint(1)unsigned NO0|是否禁用17publishdate date NO0000-00-00|发布时间18installdate date NO0000-00-00|安装时间19updatedate date NO0000-00-00|更新时间59.心情指数phpcms_mood60.心情指数统计phpcms_mood_data2contentid mediumint(8)unsigned NO MUL0|内容id3total mediumint(8)unsigned NO0|投票总数4n1smallint(5)unsigned NO0|投票总数1 5n2smallint(5)unsigned NO0|投票总数2 6n3smallint(5)unsigned NO0|投票总数3 7n4smallint(5)unsigned NO0|投票总数4 8n5smallint(5)unsigned NO0|投票总数5 9n6smallint(5)unsigned NO0|投票总数6 10n7smallint(5)unsigned NO0|投票总数7 11n8smallint(5)unsigned NO0|投票总数8 12n9smallint(5)unsigned NO0|投票总数9 13n10smallint(5)unsigned NO0|投票总数10 14n11smallint(5)unsigned NO0|投票总数11 15n12smallint(5)unsigned NO0|投票总数12 16n13smallint(5)unsigned NO0|投票总数13 17n14smallint(5)unsigned NO0|投票总数14 18n15smallint(5)unsigned NO0|投票总数15 19updatetime int(10)unsigned NO0|61.订单记录phpcms_order18userid mediumint(8)unsigned NO MUL0|用户ID19username char(20)NO|用户名20ip char(15)NO|IP21time int(10)unsigned NO0|下单时间22date date NO0000-00-00|下单日期23status tinyint(1)unsigned NO MUL0|订单状态62.配送地址phpcms_order_deliver63.订单状态phpcms_order_log64.支付卡phpcms_pay_card6inputerid mediumint(8)unsigned NO0|生成点卡用户ID7inputer char(20)NO|生成点卡用户名8mtime datetime NO0000-00-0000:00:00|生成时间9regtime datetime YES0000-00-0000:00:00|使用时间10endtime int(10)unsigned NO0|11regip char(15)NO0.0.0.0|生成点卡地址12point smallint(5)unsigned NO0|点数13amount smallint(5)unsigned NO0|金钱14status tinyint(3)unsigned NO0|使用状态65.交易记录phpcms_pay_exchange66.支付类型phpcms_pay_payment11author varchar(100)NO|作者12website varchar(100)NO|网址13version varchar(20)NO|版本号67.点卡类型phpcms_pay_pointcard_type68.财务统计phpcms_pay_stat69.汇款记录phpcms_pay_user_account70.推荐位phpcms_position71.工作流方案phpcms_process72.工作流ID状态phpcms_process_status73.角色phpcms_role74.全站搜索phpcms_search75.全站搜索类型phpcms_search_type76.Session phpcms_session77.个人空间phpcms_space78.个人空间接口phpcms_space_api79.专题phpcms_special2typeid smallint(5)unsigned NO MUL0|类型ID 3title varchar(80)NO|专题标题4style varchar(5)NO|样式5thumb varchar(100)NO|缩略图6banner varchar(100)NO|横幅图片7filename varchar(50)NO|专题英文名8description mediumtext NO|描述9url varchar(100)NO|链接地址10template varchar(30)NO|当前模板11userid mediumint(8)unsigned NO0|用户ID 12username varchar(20)NO|用户名13createtime int(10)unsigned NO0|生成时间14listorder smallint(5)unsigned NO0|排序15elite tinyint(1)unsigned NO0|推荐16disabled tinyint(1)unsigned NO0|是否禁用80.专题文章phpcms_special_content81.稿件状态phpcms_status82.操作限制phpcms_times83.分类phpcms_type3name char(30)NO|名称4style char(5)NO|样式5typedir char(20)NO|分类目录6description char(255)NO|描述7thumb char(100)NO|分类图片8url char(100)NO|链接地址9template char(50)NO|模板10listorder smallint(5)unsigned NO0|排序84.URL规则phpcms_urlrule85.投票数据phpcms_vote_data86.投票选项phpcms_vote_option87.投票主题phpcms_vote_subject2subject char(255)NO|主题3ismultiple tinyint(1)unsigned NO0|是否多选选择4ischeckbox tinyint(1)unsigned NO0|是否多选5credit smallint(5)unsigned NO0|积分6addtime int(10)unsigned NO0|添加时间7fromdate date NO MUL0000-00-00|开始时间8todate date NO MUL0000-00-00|结束时间9interval tinyint(3)unsigned NO0|投票时间间隔10enabled tinyint(1)unsigned NO MUL1|是否启用11template char(20)NO|当前模板12parentid mediumint(8)unsigned NO0|父ID13description text NO|描述14userinfo char(255)NO|用户资料15listorder smallint(5)unsigned NO0|排序16enablecheckcode tinyint(1)unsigned NO0|验证码开启?17allowguest tinyint(1)unsigned NO1|允许游客投票18groupidsvote char(100)NO|允许参与投票的会员组19groupidsview char(100)NO|允许查看结果的会员组20maxval tinyint(2)unsigned NO0|最大值21minval tinyint(1)unsigned NO1|最小值22userid mediumint(8)unsigned NO0|用户ID23allowview tinyint(1)unsigned NO1|允许查看24optionnumber tinyint(3)unsigned NO0|选项数25votenumber mediumint(8)unsigned NO0|投票数88.投票用户选项phpcms_vote_useroption89.审核方案phpcms_workflow。
PHPCMS V9 二次开发教程
PHPCMS V9二次开发教程官方版文件目录结构根目录| – api 接口文件目录| – caches 缓存文件目录| – configs 系统配置文件目录| – caches_* 系统缓存目录| – phpcms phpcms框架主目录| – languages 框架语言包目录| – libs 框架主类库、主函数库目录| – model 框架数据库模型目录| – modules 框架模块目录| – templates 框架系统模板目录| – phpsso_server phpsso主目录| – statics 系统附件包| – css 系统css包| – images 系统图片包| – js 系统js包| – uploadfile 网站附件目录| – admin.php 后台管理入口| – index.php 程序主入口| – crossdomain.xml FLASH跨域传输文件| – robots.txt 搜索引擎蜘蛛限制配置文件| – favicon.ico 系统icon图标PHPCMS V9 核心文件说明模块与控制器模块:phpcms v9框架中的模块,位于phpcms/modules目录中每一个目录称之为一个模块。
即url访问中的m。
访问content模块示例:/index.php?m=content控制器:phpcms v9的控制器就是模块的类文件,位于phpcms/modules/模块/目录下面。
类名成就是文件名+.php,例如一个名为abc的控制器,那么他的命名为abc.php即可。
控制器类默认继承系统的函数库,可以直接使用。
控制器类的类名称与控制器文件名必须相同。
如果您创建了一个abc.php在 test模块下,那么我们在浏览器里面输入URL:/index.php?m=test& c=abc二次开发技巧如果要对已存在的控制器进行二次开发,为了方便升级不建议直接对内核文件直接修改该,您可以通过“MY_*.php”的形式进行二次开发。
PHPCMS二次开发教程——模块设计(实例附数据库设计)
PHPCMS二次开发流程(实例)如下图是官方文档给出的phpcms二次开发的流程:本文以创建一个答题模块为实例,进行逐一讲解。
创建数据库和数据表:本模块是在phpcms v9框架上开发的,但不使用phpcms数据库,例如这里我新建一个数据库,名为:yixin,所有表默认前缀yx_。
新建表:yx_user表yx_user栏目名称字段名类型可否为空说明用户编号userid int N 主键、AI 用户名username varchar(20) N用户密码password varchar(32) N用户昵称nickname varchar(20) Ndatetime N注册时间regtime注册ip regip varchar(15) N上次登录时间lasttime datetime N 默认为:0000-00-0000:00:00上次登录ip lastip varchar(15) N 默认:0 登录次数loginnum smallint N 默认:1 用户邮箱email varchar(32) N用户组类型groupid tinyint N用户状态status tinyint N 默认:1 用户答对题数rightnum smallint N 默认:0 用户真实姓名realname varchar(50) Y 默认:0CREATE TABLE`yx_user`(`userid`INT(11)NOT NULL AUTO_INCREMENT,`username`VARCHAR(20)NOT NULL,`password`VARCHAR(32)NOT NULL,`nickname`VARCHAR(20)NOT NULL,`regtime`DATETIME NOT NULL,`regip`VARCHAR(15)NOT NULL,`lasttime`DATETIME NOT NULL DEFAULT'0000-00-00 00:00:00',`lastip`VARCHAR(15)NOT NULL DEFAULT'0',`loginnum`SMALLINT(6)NOT NULL DEFAULT'1',`email`VARCHAR(32)NOT NULL,`groupid`TINYINT(4)NOT NULL,`status`TINYINT(4)NOT NULL DEFAULT'1',`realname`VARCHAR(50)NOT NULL DEFAULT'0',`rightnum`SMALLINT(6)NOT NULL DEFAULT'0',PRIMARY KEY(`userid`))ENGINE=MYISAM;新建表:yx_question表yx_question栏目名称字段名类型可否为空说明题目编号questionid int N 主键、AI题目内容content mediumtext N题集setid int N 默认为:0正确选项answer0 varchar(50) N错误选项1 answer1 varchar(50) N错误选项2 answer2 varchar(50) N错误选项3 answer3 varchar(50) N答案说明description varchar(50) Y 默认:0添加日期addtime datetime N出题人userid int N与yx_user表的userid关联审核人adminid int N 默认为:0,与yx_admin表的adminid关联审核时间verifytime datetime N题目状态status tinyint N 默认为:0CREATE TABLE`yx_question`(`questionid`INT(11)NOT NULL AUTO_INCREMENT,`content`MEDIUMTEXT NOT NULL,`setid`INT(11)NOT NULL DEFAULT'0',`answer`VARCHAR(50)NOT NULL,`answer1`VARCHAR(50)NOT NULL,`answer2`VARCHAR(50)NOT NULL,`answer3`VARCHAR(50)NOT NULL,`description`VARCHAR(50)NOT NULL DEFAULT'0',`addtime`DATETIME NOT NULL,`userid`INT(11)NOT NULL,`adminid`INT(11)NOT NULL DEFAULT'0',`verifytime`DATETIME NOT NULL DEFAULT'0000-00-00 00:00:00',`status`TINYINT(4)NOT NULL DEFAULT'0',PRIMARY KEY(`questionid`))ENGINE=MYISAM新建表:yx_question_set表yx_question_set栏目名称字段名类型可否为空说明题集编号setid int N 主键、AI 题集名称setname varchar(50) N题集描述description text N题集状态enabled tinyint(1) N 0:不可用;1:可用题集题数questionnum smallint N 默认:0CREATE TABLE`yx_question_set`(`setid`INT(11)NOT NULL AUTO_INCREMENT,`setname`VARCHAR(50)NOT NULL,`description`TEXT NOT NULL,`enabled`TINYINT(1)NOT NULL DEFAULT'0',`questionnum`SMALLINT(6)NOT NULL DEFAULT'0',PRIMARY KEY(`setid`))ENGINE=MYISAM新建表:yx_user_select_set表yx_user_select_set栏目名称字段名类型可否为空说明编号id int N 主键、AI 用户编号userid int N题集编号setid int NCREATE TABLE`yx_user_select_set`(`id`INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `userid`INT NOT NULL,`setid`INT NOT NULL)ENGINE=MYISAM;新建表:yx_user_answer_record表yx_user_answer_record栏目名称字段名类型可否为空说明记录编号id int N 主键、AI问题编号questionid int N 与yx_question表的questionid关联答题结果check tinyint N 0:错误;1:正确答题人userid int N 与yx_user表的userid关联答题时间answertime datetime NCREATE TABLE`yx_user_answer_record`(`id`INT NOT NULL AUTO_INCREMENT PRIMARY KEY,`questionid`INT NOT NULL,`check`TINYINT NOT NULL,`userid`INT NOT NULL,`answertime`DATETIME NOT NULL)ENGINE=MYISAM;新建表:yx_admin表yx_admin栏目名称字段名类型可否为空说明管理员编号adminid int N 主键、AI管理员名adminname varchar(20) N管理员密码password varchar(32) N管理员类型roleid smallint N 默认:0上次登录时间lasttime datetime N 默认:0000-00-0000:00:00 上次登录ip lastip varchar(15) N 默认:0管理员邮箱email varchar(40) N 默认:0管理员真实姓名realname varchar(50) NCREATE TABLE`yx_admin`(`adminid`INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `adminname`VARCHAR(20)NOT NULL,`password`VARCHAR(32)NOT NULL,`roleid`SMALLINT NOT NULL DEFAULT'0',`lasttime`DATETIME NOT NULL DEFAULT'0000-00-00',`lastip`VARCHAR(15)NOT NULL DEFAULT'0',`email`VARCHAR(40)NOT NULL DEFAULT'0',`realname`VARCHAR(50)NOT NULL)ENGINE=MYISAM;新建表:yx_admin_role表yx_admin_role栏目名称字段名类型可否为空说明类型编号roleid smallint N 主键、AI 类型名称rolename varchar(50) N类型描述description text N类型状态enabled tinyint(1) N 0:不可用;1:可用CREATE TABLE`yx_admin_role`(`roleid`INT NOT NULL AUTO_INCREMENT PRIMARY KEY,`rolename`VARCHAR(50)NOT NULL,`description`TEXT NOT NULL,`enabled`TINYINT(1)NOT NULL)ENGINE=MYISAM;创建模块目录:PHPCMS v9框架中的模块,位于phpcms/modules目录中每一个目录称之为一个模块,如果要创建一个模块,只要在phpcms/modules 目录下创建文件夹并放入你的控制器类就可以了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
问答系统数据表——v9_question
用于存储问题的基本信息
v9_question
id:编号 title:标题 content:内容 uid:发布人 addtime:发布时间 credit:悬赏积分
typeid:分类
answernum:答案数量 bestid:最佳答号
credit:积分
问答系统数据表——v9_qalog
用于存储问答系统的日志
v9_qalog
id:编号 qid:涉及问题编号
aid:涉及答案编号
uid:用户编号 credit:积分变更
type:操作类型1:提问,2:回答,3:修改问题,4:最佳答案,5: 删除
addtime:创建时间 desc:说明
问答系统数据表
v9_question • 问题记录表 v9_answer • 答案记录表 v9_qacredit • 用户积分记录表 v9_qalog • 问答系统日志记录表 v9_qatype • 问题分类记录表
问答系统数据表——v9_qatype
用于存储问题分类设置 v9_qatype id:编号
北风网PHPCMS二次开发
在线问答系统
数据库设计
讲师:胖龙(北风网版权所有)
数据库设计的重要性
数据库是整个软件应用的根基,是软件设计的起点, 它起着决定性的质变作用,因此我们必须对数据库设 计高度重视起来,培养设计良好数据库的习惯,是一 个优秀的软件设计人员所必须具备的基本素质条件。 一个不良的数据库设计,必然会造成很多问题,轻则 增减字段,重则系统无法运行。
欢迎访问我们的官方网站
问答系统数据表——v9_answer
用于存储答案的基本信息
v9_question
id:编号 qid:问题编号
content:答案内容
uid:发布人 addquestion:追加提问 addtime:发布时间
isbest:是否为最佳答案
问答系统数据表——v9_qacredit
用于存储用户参与答题模块获取的积分