admin 管理员组文章数量: 887031
2024年1月13日发(作者:机械语言属于什么语言)
PHPCMS二次开发教程
/try/201109/1187_
文件目录结构
根目录
| – api 接口文件目录
| – phpcms phpcms框架主目录
| – languages 框架语言包目录
| – libs 框架主类库、主函数库目录
| – model 框架数据库模型目录
| – modules 框架模块目录
| – templates 框架系统模板目录
| – caches 缓存文件目录
| – configs 系统配置文件目录
| – caches_* 系统缓存目录
| – phpsso_server phpsso主目录
| – statics 系统附件包
| – css 系统css包
| – images 系统图片包
| – js 系统js包
| – uploadfile 网站附件目录
| – 后台管理入口
| – 程序主入口
| – FLASH跨域传输文件
| – 搜索引擎蜘蛛限制配置文件
| – 系统icon图标
PHPCMS V9 核心文件说明
模块与控制器
模块:
phpcms v9框架中的模块,位于phpcms/modules目录中 每一个目录称之为一个模块。即url访问中的m。
访问content模块示例:/?m=content
控制器:
phpcms v9的控制器就是模块的类文件,位于phpcms/modules/模块/目录下面。类名成就是文件名+.php,例如一个名为abc的控制器,那么他的 命名为即可。控制器类默认继承系统的函数库,可以直接使用。控制器类的类名称与控制器文件名必须相同。如果您创建了一个在 test模块下,那么我们在浏览器里面输入URL:/?m=test&
c=abc
二次开发技巧
如果要对已存在的控制器进行二次开发,为了方便升级不建议直接对内核文件直接修改该,您可以通过“MY_*.php”的形式进行二次开发。
例如您要对改phpcms/mood/进行二次开发。您可以在与同级的目录下建立"MY_"
class MY_index extends index{
function __construct() {
parent::__construct();
}
„„your code
}
这样当您通过url访问index控制器的时候,系统会默认指向MY_
并且原文件的方法将被继承,可以直接使用。
系统配置文件
文件路径:根目录/caches/configs
数据库配置文件
系统配置文件
路由配置文件
调用方法
如调用系统配置中的web_path:
pc_base::load_config('system', web_path ');
CMS入口文件:
PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。
入口程序是在前期处理用户请求的引导程序。它是唯一一个可以被最终用户可以直接请求运行的。
文件路径:根目录/
define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);
include PHPCMS_PATH.'/phpcms/';
pc_base::creat_app();
?>
这段代码首先加载了 phpcms 框架的引导文件 ,然后它根据指定的配置文件建立了一个 Web 应用实例并运行。
PHPCMS框架入口文件:
文件路径:根目录/phpcms/ 代码片段如下:
define('IN_PHPCMS', true);
define('PC_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);
if(!defined('PHPCMS_PATH')) define('PHPCMS_PATH',
PC_PATH.'..'.DIRECTORY_SEPARATOR);
define('CACHE_PATH', PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR);
„„
?>
该文件为框架入口文件,包含实例化系统/模块类方法,调用系统/模块方法,系统常用常量等。如:
pc_base::load_model(‘*_model’) 加载数据库模型
pc_base::load_sys_class(‘classname’) 实例化系统类
pc_base::load_app_class(‘classname’,’admin’) 实例化模块类
pc_base::load_sys_func (‘funcfile’) 调用系统函数库
全局函数文件:
文件路径:根目录/phpcms/libs/functions/ 代码片段如下:
function new_addslashes($string){
if(!is_array($string)) return addslashes($string);
foreach($string as $key => $val) $string[$key] =
new_addslashes($val);
return $string;
}
„„
?>
该文件中的函数,为全系统基础函数,可以在系统中直接调用。
二次开发技巧:
如果需要增加自己的全局函数,可根据需要增加到/phpcms/libs/functions//中,不会影响升级
数据模型基类:
文件路径:根目录/phpcms/libs/classes/ 代码片段如下:
?>
pc_base::load_sys_class('db_factory', '', 0);
class model { //数据库配置
protected $db_config = ''; //数据库连接
protected $db = ''; //调用数据库的配置项
protected $db_setting = 'default'; //数据表名
protected $table_name = ''; //表前缀
public $db_tablepre = '';
„„
加载数据模型后,可以的数据库该类中方法进行数据库操作。
表单调用类:
文件路径:根目录/phpcms/libs/classes/。 代码片段如下:
class form {
//编辑器调用
public static function editor($textareaid = 'content', $toolbar
= 'basic', $module = '', $catid = '', $color = '', $allowupload = 0,
$allowbrowser = 1,$alowuploadexts = '',$height = 200,$disabled_page = 0)
{
}
//图片上传调用
public static function images($name, $id = '', $value = '',
$moudle='', $catid='', $size = 50, $class = '', $ext = '', $alowexts =
'',$thumb_setting = array(),$watermark_setting = 0 ) {
}
„„
?>
通过实例化该类可以,调用在程序中调用编辑器、表单上传、日期选择、栏目结构等表单。 实例化方法:pc_base::load_sys_class('form', '', 0);
模板解析缓存类:
文件路径:根目录/phpcms/libs/classes/template_ 。 代码片段如下:
final class template_cache {
public function template_compile($module, $template, $style =
‘default’) {
$tplfile = $_tpl =
PC_PATH.'templates'.DIRECTORY_SEPARATOR.$ORY_SEPARATOR.$ORY_SEPARATOR.$template.'.html';
„„
?>
该类作用为解析模板,解析模板及更新模板缓存
PHPCMS V9 二次开发
PHPCMS URL访问:
PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。
参数名称 描述 位置 备注
M 模型/模块名称 phpcms/modules中模块目录名称 必须
C 控制器名称 phpcms/modules/模块/*.php 文件名称 必须
A 事件名称 phpcms/modules/模块/*.php 中方法名称
模块访问方法[示例]:
二次开发命名规范
类文件需要以.为后缀(这里是指的phpcms的系统类库文件和模块中的类库文件,第三方引入的不做要求),例如。
函数文件需要以.为后缀(第三方引入的不做要求),例如。
类名和文件名一致,例如 phpcmsapp类的文件命名是。
数据模型需要以“数据表名称_”为形式,类名称与文件名必须相同。
二次开发开发流程
创建数据库模型类
数据库模型位于:phpcms/model/目录下。
数据模型文件的命名规则建议为数据表名称+'_'
如果在我们的创建的模块中我要使用一个数据库“test”,首先需要建立一个数据库模型文件,文件名称为'test_'
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_sys_class('model', '', 0);
class test_model extends model {
public function __construct() {
$this->db_config = pc_base::load_config('database');
$this->db_setting = ‘default';
$this->table_name = 'test';
parent::__construct();
}
}
?>
数据库模型类名称必须与文件名称相同;
$this->db_setting = 'default'为数据库配置文件中配置数据库链接池名称,默认为default,一般情况下不需要修改。
$this->table_name = ‘test’为数据表名称
创建模块
如果要创建一个模块,只要在 phpcms/modules 目录下创建文件夹并放入你的控制器类就可以了。
例如要开发一个叫做test的模块,那么首先在phpcms/modules 目录下创建文件夹,并将其命名为test。模块的标准结构通常是这样的。
如果您的模板有单独的前台模板,你需要在phpcms/templates/default下创建一个您的模块目录来放置前台模板,"default"为你的风格包名称,我们默认适用default
访问test模块示例:/?m=test
创建模块控制器类
为test模块增加一个名为myest的控制器 文件路径:根目录/phpcms/modules/test/。 代码片段如下:
defined('IN_PHPCMS') or exit('No permission resources.');
?>
}
class mytest {
function __construct() {
}
public function init() {
$var = 'hello world!';
echo $myvar;
}
public function mylist() {
$var = 'hello world!this is a example!';
echo $myvar;
}
常用操作列表(1)
1.调用数据库模型
$this->db = pc_base::load_model('test_model');
其中$this->db中所支持的方法请参照phpcms/libs/classes/中方法
2.加载系统类
$http = pc_base::load_sys_class('http'); //实例化http类
pc_base::load_sys_class('format', '', 0); //调用form类,不进行实例化操作3.加载系统函
3.加载系统函数库
pc_base::load_sys_func('mail'); //调用mail函数包
4. 加载模块类
$test = pc_base::load_sys_class(‘classname‘,’test’); //实例化test模块下 classname类
5.加载模块函数库
pc_base::load_sys_func(‘global‘,’test’); //调用test模块的global函数包
常用操作列表(2)
6.加载前台模板
include template('test', 'mytest', 'default');
7.加载后台模板
include $this->admin_tpl('mytest_admin_list');
8.权限控制
后台控制控制器需要加载admin模块下的admin类,并继承该类
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_app_class('admin','admin',0);
class mytest_admin extends admin {
//这个控制器需要登录后台才可以访问 }
?>
PHPCMS V9 模板与标签
PC标签
评论模块
会员模块
友情链接模块
投票模块
公告模块
专题模块
内容模块
工具箱
json工具箱
xml工具箱
get标签
碎片工具箱
v9 二次开发之构建模块全过程
第一:开发流程
为你的phpcms创建一个模块的一般开发流程是:
创建数据库和数据表;(没有数据库操作可略过)
创建模块目录
创建模块控制器类;
创建模块类与模块函数;(如果只是简单的模块可以不必创建)
创建模板文件;
运行和调试。
第二:创建模块
phpcms v9框架中的模块,位于phpcms/modules目录中 每一个目录称之为一个模块
如果要创建一个模块,只要在 phpcms/modules 目录下创建文件夹并放入你的控制器类就可以了。
例如我要开发一个叫做test的模块,那么首先在 phpcms/modules 目录下创建文件夹,并将其命名为test。
test模块的标准结构通常是这样的。
其中
classes为模块类库包
functions为模块函数库包
templates为模块模板包这里通常放置含有权限控制的控制器模板,也就是后台模板。
如果您的模板有单独的前台模板,你需要在phpcmstemplatesdefault下创建一个您的模块目录来放置前台模板,"default"为你的风格包名称,我们默认适用default
第三:创建模块控制器类
在创建模块中我们已经创建好了一个名为“test”的模块,接下来我们继续为这个模块添加两个控制器类。
phpcms v9的控制器就是模块的类文件,位于phpcms/modules/模块/目录下面。类名成就是文件名+.php,例如一个名为mytest的控制器,那么他的命名为即可。控制器类默认继承系统的函数库,可以直接使用。控制器类的类名称与控制器文件名必须相同。
控制器类文件包含两种形式:
控制器,前台浏览(不含权限控制)
defined('IN_PHPCMS')orexit('No permission resources.');
classmytest{
function__construct(){
}
publicfunctioninit(){
$var='hello world!';
echo $myvar;
}
publicfunctionmylist(){
$var='hello world!this is a example!';
echo $myvar;
}
}
?>
这个控制器的url访问方法前面已经介绍过了,
/?m=test&c=mytest
/?m=test&c=mytest&a=mylist
没有填写 “a” 的情况下,默认调用init方法
_ 控制器,后台管理(含权限控制)
后台控制控制器需要加载admin模块下的admin类,并继承该类。需要注意的是因为你添加的控制器类继承了其他的类,你要小心你控制器的方法名不要和该类中的方法名一样了,否则会造成影响,具体请查看admin类中有哪些方法。
defined('IN_PHPCMS')orexit('No permission resources.');
pc_base::load_app_class('admin','admin',0);
classmytest_adminextendsadmin{
publicfunction__construct(){
}
publicfunctioninit(){
$myvar='oh,i am phpcmser';
echo $myvar;
}
}
?>
在控制器中增加模板调用
phpcms 可以实现完全的模板与程序分离,所以在我们的控制器程序中要加载模板,才可以更友好的显示出来。
1.加载前台模板
前台模板文件在phpcmstemplatesdefault模块名称 目录中,本示例也就在phpcmstemplatesdefaulttest中
加载模板方法如下:
includetemplate('test','mytest','default');
其中test为模块名称mytest 为模板目录下模板名称,default为风格名称,默认不填为defalut
在上面例子中如果要给中init方法加载一个mytest的模板,如下
publicfunctioninit(){
$var='hello world!';
includetemplate('test','mytest','default');
}
这样我们通过url访问该方法的时候也就加载了对应的模板。
2.加载后台模板
后台模板文件在phpcmsmodules模块名称templates 目录中,本示例也就在phpcmsmodulestesttemplates 中
加载模板方法如下:
include $this->admin_tpl('mytest_admin_list');
其中mytest_admin_list为phpcmsmodulestesttemplates中mytest_admin_,注意:此处模板必须以. 作为后缀
在上面例子中如果要给mytest_中init方法加载一个mytest_admin_list的模板,如下
publicfunctioninit(){
$myvar='oh,i am phpcmser';
include $this->admin_tpl('mytest_admin_list');
}
第四:创建数据库模型类
数据库模型位于:phpcms/model/ 目录下。
数据模型文件的命名规则建议为数据表名称+'_'
如果在我们的创建的模块中我要使用一个数据库“test”,首先需要建立一个数据库模型文件,文件名称为'test_'
内容如下:
defined('IN_PHPCMS')orexit('No permission resources.');
pc_base::load_sys_class('model','',0);
classtest_modelextendsmodel{
publicfunction__construct(){
$this->db_config=pc_base::load_config('database');
$this->db_setting='default';
$this->table_name='test';
parent::__construct();
}
}
?>
注意:
1.数据库模型类名称必须与文件名称相同;
2.$this->db_setting = 'default'为数据库配置文件中配置数据库链接池名称,默认为default,一般情况下不需要修改。
3.$this->table_name = 'test'为数据表名称
这样我们就建立好了一个数据库模型类。
在模块的控制器中使用
$this->db=pc_base::load_model('test_model');
来加载。
具体如下
defined('IN_PHPCMS')orexit('No permission resources.');
classmytest{
private$db;
function__construct(){
$this->db=pc_base::load_model('test_model');
}
publicfunctioninit(){
$result=$this->db->select();
var_dump($result);
}
}
?>
其中$this->db中所支持的方法请参照phpcms/libs/classes/中方法
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标签。
action="list"
这个形式所代表的是参数。每一个PHPCMS V9模型都为其PC标签定义了调用的参数。其中有一些调用参数是系统保留的参数,其对所有的PC标签都是有效的。
参数必须使用
参数名="参数值"
的方式填写,多个参数之间使用空格分开(如下例),参数值可使用双引号来包括,无论是什么形式的引号都必须是成对出现的。
{pc:content 参数名="参数值" 参数名="参数值" 参数名="参数值"}
请查看PC标签保留参数相关章节,以了解具体保留参数及其用途。
PC标签分类:
PC标签包含两个类别,分别为:
1. 工具类
2. 模块类
工具类,大体上可以理解为PHPCMS V9所提供的一些工具箱。请查看PC标签工具箱相关章节,以了解更多关于工具类的PC标签的更多信息。
而模块类,是PHPCMS V9各个模型提供给大家调用模块数据的数据接口。查看具体模块的相关说明章节,以了解更多关于模块类的PC标签的更多信息。
如何显示PC标签中的数据:
默认情况下PC标签中的数据都是数组方式返回的,你都可以通过 $data 来获取到这个数组,如果你在PC标签中定义了return参数,返回的数组将使用return的值进行命令。
一般情况下你可以使用如下的方式来显示值:
{loop $data $key $val}
{/loop}
基中的$val[url]和$val[title]需要具体根据所使用的PC标签,返回的数据来判断。
PC标签保留参数
下表为PC标签保留参数表,几乎所有的PC标签都支持这些保留参数设置
变量名 默认值 说明
本参数的值表示为操作事件,模型action null 类PC标签必须使用包含本参数,以说明要进行的操作。
cache
num
page
urlrule
return
0
20
null
null
data
缓存存储时间(单位秒)
获取记录的条数,最后会被模板引擎处理成limit传送到处理函数中。
当前分页。一般填写为$_GET[page]
URL规则
返回数据变量名
下例中是一个完整的使用例子。
{pc:content action="lists" catid="25" num="20" page="$_GET[page]" return="data"}
- {$r[title]}
{loop $data $n $r}
{/loop}
{/pc}
get标签
GET标签源自于PHPCMS 2008版,其使用SQL语句直接获取数据的特性,成为大家制作模板的首选。
在V9中这样强大的工具也得到保留下来。
GET标签使用方式如下:
{pc:get sql="SELECT * FROM phpcms_member" cache="3600" page="$page"
dbsource="discuz" return="data"}
{loop $data $key $val}
{$val[username]}
{/loop}
{$pages}
{/pc}
从上面的代码里面可以看出GET标签所支持的参数。对照下面的列表了解每一个参数的用途:
默认值
null
0
0
必须
是
否
否
否
参数
sql
cache
page
说明
要执行的SQL语句
缓存时间,单位为秒
分页,通过变量把当前的分布传给PC标签进行处理
dbsource null
数据源,当你通过系统后台的数据源模块配置过数据源时,可把数据源名填写到这里,系统会去对应的数据本系统的数据请留空
return data
否
返回的数据的变量
内容模块
内容模块PC标签调用说明
模块名:content
模块提供的可用操作
操作名
lists
relation
hits
category
position
说明
内容数据列表
内容相关文章
内容数据点击排行榜
内容栏目列表
内容推荐位列表
position操作说明如下:
内容推荐位列表(position):
可用参数:
参数名
posid
catid
thumb
order
num
是否必须
是
否
否
否
是
默认值
null
null
0
null
null
说明
推荐位ID
调用栏目ID
是否仅必须缩略图
排序类型
数据调用数量
代码例子:
{pc:content action="position" posid="2" order="listorder DESC" num="4"}
- {$val['title']}
{loop $data $key $val}
{/loop}
{/pc}
返回参数如下表:
字段
title
url
类型
char(80)
char
空
否
否
否
是
是
默认
NULL
NULL
NULL
NULL
推荐位标题
推荐位链接地址
推荐位发布时间
推荐位缩略图
根据模型所设置的加入到推荐位中字段名称
注释
inputtime int(10)
thumb
其他
char
不定
内容列表(lists):
可用参数:
参数名
catid
where
thumb
order
num
moreinfo
是否必须
否
否
否
否
是
否
默认值
null
null
0
null
null
0
说明
调用栏目ID
sql语句的where部分
是否仅必须缩略图
排序类型
数据调用数量
是否调用副表数据
提醒:从PHPCMS V9 Beta 20101105版本开始支持moreinfo参数属性,本参数表示在返回数据的时候,会把副表中的数据也一起返回。一个内容模型分为2个表,一个主表一个副表,主表中一般是保存了标题、所属栏目等等短小的数据(方便用于索引),而副表则保存了大字段的数据,如内容等数据。在模型管理中新建字段的时候,是允许你选择存入到主表还是
副表的(我们推荐的是,把不重要的信息放到副表中)。想要在列表中调取副表的数据就需要在PC标签中使用moreinfo这个属性。
代码例子:
{pc:content action="lists" catid="2" order="id DESC" num="4"}
- {$val['title']}
{loop $data $key $val}
{/loop}
{/pc}
where用法:
{pc:content action="lists" catid="2" where="`thumb`!='' AND `status`=99" order="id DESC"
num="4"}
- {$val['title']}
{loop $data $key $val}
{/loop}
{/pc}
返回参数如下表:
字段 类型 空 默认 注释
title
url
char(80)
char
否
否
否
是
是
NULL
NULL
NULL
NULL
推荐位标题
推荐位链接地址
推荐位发布时间
推荐位缩略图
其他模型字段
inputtime int(10)
thumb
其他
char
不定
点击排行榜(hits):
可用参数:
参数名
catid
day
是否必须
否
否
默认值
null
0
null
null
说明
调用栏目ID
调用多少天内的排行
排序类型(本月排行- monthviews DESC 、本周排行 - weekviews DESC、今日排行 -
dayviews DESC)
数据调用数量
order
否
num
是
代码例子:
{pc:content action="hits" catid="2" order="weekviews DESC" num="10"}
- {$val['title']}
{loop $data $key $val}
{/loop}
{/pc}
返回参数如下表:
字段
title
url
类型
char(80)
char
空
否
否
否
是
是
默认
NULL
NULL
NULL
NULL
推荐位标题
推荐位链接地址
推荐位发布时间
推荐位缩略图
其他模型字段
注释
inputtime int(10)
thumb
其他
char
不定
相关文章(relation):
可用参数:
参数名
catid
relation
keywords
num
是否必须
否
否
否
是
默认值
null
$relation
null
null
说明
调用栏目ID
无需更改
内容页面取值:$rs[keywords]
数据调用数量
代码例子:
{pc:content action="relation" relation="$relation" catid="$catid" num="5"
keywords="$rs[keywords]"}
{loop $data $r}
target="_blank">{$r[title]}
({date('Y-m-d',$r[inputtime])}){/loop}
{/pc}
返回参数如下表:
字段
title
url
类型
char(80)
char
空
否
否
否
是
是
默认
NULL
NULL
NULL
NULL
推荐位标题
推荐位链接地址
推荐位发布时间
推荐位缩略图
其他模型字段
注释
inputtime int(10)
thumb
其他
char
不定
栏目列表(category):
可用参数:
参数名
catid
$siteid
order
是否必须
否
否
否
默认值
0
1
null
说明
调用该栏目下的所有栏目 ,默认0,调用一级栏目
默认调用系统站点
排序方式、一般按照listorder ASC排序,即栏目的添加顺序
代码例子:
{pc:content action="category" catid="0" num="25" siteid="$siteid" order="listorder ASC"}
{loop $data $r}
{/pc}
返回参数如下表:
字段
catid
siteid
module
type
modelid
parentid
arrparentid
child
arrchildid
catname
image
description
parentdir
catdir
url
smallint
tinyint(3)
varchar(15)
tinyint(1)
tinyint(5)
smallint(5)
varchar(255)
tinyint(1)
mediumtext
varchar(30)
varchar(100)
mediumtext
varchar(100)
varchar(30)
varchar(100)
类型
默认值 说明
栏目ID
站点ID
模块ID
栏目类型ID
模型ID
上级父栏目
所有父栏目
子栏目
所有子栏目
栏目名称
栏目图片
栏目描述
父栏目目录
栏目目录
栏目链接
无
0
无
1
5
5
无
0
无
无
无
无
无
无
无
字段
items
hits
setting
listorder
ismenu
sethtml
letter
类型
mediumint(8)
int(10)
mediumtext
smallint(5)
tinyint(1)
tinyint(1)
varchar(30)
0
0
无
0
0
0
无
默认值
栏目内容数
点击数
栏目设置
排序
是否显示
说明
是否生成到根目录
栏目拼音
PHPCMS v9.1.7整合discuz X2 的解决办法
最近有不少朋友提出PHPCMS v9.1.7(20110909) 与 discuz 新版 X2 整合过程中有问题。由于PHPCMS V9中默认整合的Ucenter 版本为1.5.1 (即适用于
Discuz X1.5 以下 Discuz 7.0 之上的版本),而最新的Discuz X2 中升级了Ucenter 版本至 Ucenter 1.6 ,由于接口文件的变动,所以会导致一些无法同行问题。
现给出如下解决方案:
第一步:确定你的PHPCMS及PHPSSO版本为最新版v9.1.7(20110909)。注:截至发此文章时间最新版为该版本。
第二步:使用新的uc_client文件,打开phpsso_serverapi 目录修改原uc_client目录名称为uc_client.1.5.1,然后将下面文件解压后覆盖到该目录下。
uc_ (41.12 KB)
第三步:使用下面文件覆盖phpsso_ 文件。注意:是phpsso_server中的,不是cms中的!
(7.75KB)
第四步:登录phpsso后台,系统设置 > uc设置 ,配置相应的整合信息,如下图。注意:在前缀前增加数据库名称,格式如:`bbs`.pre_uc_
第五步:登录Ucenter后台,添加应用,配置相应的信息,这里不详细说明,如图
第六步:更新缓存,包括phpsso缓存,ucenter缓存,discuz 缓存。
此时你会发现从CMS中登录退出,论坛可以同步登录退出,但是在论坛登录退出无法同步登录退出cms,由于discuz本身的一些问题,为了解决该问题,我们需要修改一下discuz的代码。
第七步:修改Discuz中文件
1、修改 第36行,删除
ajaxpost('loginform_$loginhash','returnmessage_$loginhash','returnmessage_$loginhash', 'onerror');return false;
2、修改 templatedefaultmemberlogin_ 第 2 行,删除
onsubmit="return lsSubmit()"
3、修改 /source/function/function_ 第 78 行,查找
$param['header'] = true;
替换为:
$param['header'] = false;
如果你是dzx1.5 则应该修改 /source/function/function_ 第
1458 行,查找
$param['header'] = true;
替换为:
$param['header'] = false;
以上便是PHPCMS v9.1.7(20110909)版本整合discuz X2 出现无法同行问题的解决方案,希望对大家有用!
版权声明:本文标题:phpcms开发手册教程 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1705134546h474145.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论