phpcms_v9二次开发手册

发布时间:

PHPCMS二次开发教程

文件目录结构
根目录
|api接口文件目录|caches缓存文件目录
|configs系统配置文件目录|caches_*系统缓存目录|phpcmsphpcms框架主目录|languages框架语言包目录|libs框架主类库、主函数库目录|model框架数据库模型目录|modules框架模块目录|templates框架系统模板目录|phpsso_serverphpsso主目录|statics系统附件包|css系统css|images系统图片包|js系统js|uploadfile网站附件目录|admin.php后台管理入口|index.php程序主入口
|crossdomain.xmlFLASH跨域传输文件|robots.txt搜索引擎蜘蛛限制配置文件|favicon.ico系统icon图标


PHPCMSV9核心文件说明
模块与控制器模块:
phpcmsv9框架中的模块,位于phpcms/modules目录中每一个目录称之为一个模块。即url访问中的m

访问content模块示例:http://www.yourname.com/index.php?m=content控制器:
phpcmsv9的控制器就是模块的类文件,位于phpcms/modules/模块/目录下面。类名成就是文件名+.php,例如一个名为abc的控制器,那么他的命名为abc.php即可。控制器类默认继承系统的函数库,可以直接使用。控制器类的类名称与控制器文件名必须相同。如果您创建了一个abc.phptest模块下,那么我们在浏览器里面输入URLhttp://www.yourname.com/index.php?m=test&c=abc二次开发技巧
如果要对已存在的控制器进行二次开发,为了方便升级不建议直接对内核文件直接修改该,您可以通过“MY_*.php”的形式进行二次开发。例如您要对改phpcms/mood/index.php进行二次开发。您可以在与index.php同级的目录下建立"MY_index.php"

classMY_indexextendsindex{function__construct({parent::__construct(;}„„yourcode}
这样当您通过url访问index控制器的时候,系统会默认指向MY_index.php并且原文件的方法将被继承,可以直接使用。系统配置文件
文件路径:根目录/caches/configsdatabase.php数据库配置文件system.php系统配置文件route.php路由配置文件

调用方法
如调用系统配置中的web_path:
pc_base::load_config('system',web_path';CMS入口文件:
PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。
入口程序是在前期处理用户请求的引导程序。它是唯一一个可以被最终用户可以直接请求运行的。
文件路径:根目录/index.php
define('PHPCMS_PATH',dirname(__FILE__.DIRECTORY_SEPARATOR;includePHPCMS_PATH.'/phpcms/base.php';pc_base::creat_app(;?>
这段代码首先加载了phpcms框架的引导文件base.php,然后它根据指定的配置文件建立了一个Web应用实例并运行。
PHPCMS框架入口文件:

文件路径:根目录/phpcms/base.php代码片段如下:
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/global.func.php代码片段如下:functionnew_addslashes($string{if(!is_array($stringreturnaddslashes($string;foreach($stringas$key=>$val$string[$key]=new_addslashes($val;return$string;}„„?>
该文件中的函数,为全系统基础函数,可以在系统中直接调用。二次开发技巧:
如果需要增加自己的全局函数,可根据需要增加到
/phpcms/libs/functions/global.func.php/extention.func.php中,不会影响升级
数据模型基类:
文件路径:根目录/phpcms/libs/classes/model.class.php代码片段如下:

?>
pc_base::load_sys_class('db_factory','',0;classmodel{//数据库配置
protected$db_config='';//数据库连接protected$db='';//调用数据库的配置项
protected$db_setting='default';//数据表名protected$table_name='';//表前缀public$db_tablepre='';„„
加载数据模型后,可以的数据库该类中方法进行数据库操作。表单调用类:
文件路径:根目录/phpcms/libs/classes/form.class.php代码片段如下:classform{//编辑器调用publicstaticfunctioneditor($textareaid='content',$toolbar='basic',$module='',$catid='',$color='',$allowupload=0,$allowbrowser=1,$alowuploadexts='',$height=200,$disabled_page=0{}//图片上传调用publicstaticfunctionimages($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_cache.class.php代码片段如下:
finalclasstemplate_cache{publicfunctiontemplate_compile($module,$template,$style=‘default’{

$tplfile=$_tpl=
PC_PATH.'templates'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html';„„?>该类作用为解析模板,解析模板及更新模板缓存
PHPCMSV9二次开发
PHPCMSURL访问:
PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。
参数名称描述位置备注
M模型/模块名称phpcms/modules中模块目录名称必须C控制器名称phpcms/modules/模块/*.php文件名称必须A事件名称phpcms/modules/模块/*.php中方法名称

模块访问方法[示例]
二次开发命名规范
类文件需要以.class.php为后缀(这里是指的phpcms的系统类库文件和模块中的类库文件,第三方引入的不做要求),例如http.class.php函数文件需要以.func.php为后缀(第三方引入的不做要求),例如mail.func.php
类名和文件名一致,例如phpcmsapp类的文件命名是phpcmsapp.class.php数据模型需要以“数据表名称_model.class.php”为形式,类名称与文件名必须相同。

二次开发开发流程创建数据库模型类
数据库模型位于:phpcms/model/目录下。
数据模型文件的命名规则建议为数据表名称+'_model.class.php'
如果在我们的创建的模块中我要使用一个数据库“test”,首先需要建立一个数据库模型文件,文件名称为'test_model.class.php'

defined('IN_PHPCMS'orexit('Nopermissionresources.';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(;}}?>
数据库模型类名称必须与文件名称相同;
$this->db_setting='default'为数据库配置文件中配置数据库链接池名称,默认为default,一般情况下不需要修改。$this->table_name=‘test’为数据表名称创建模块
如果要创建一个模块,只要在phpcms/modules目录下创建文件夹并放入你的控制器类就可以了。
例如要开发一个叫做test的模块,那么首先在phpcms/modules目录下创建文件夹,并将其命名为test。模块的标准结构通常是这样的。
如果您的模板有单独的前台模板,你需要在phpcms/templates/default下创建一个您的模块目录来放置前台模板,"default"为你的风格包名称,我们默认适default



访问test模块示例:http://www.yourname.com/index.php?m=test
创建模块控制器类
test模块增加一个名为myest的控制器文件路径:根目录/phpcms/modules/test/mytest.php代码片段如下:

defined('IN_PHPCMS'orexit('Nopermissionresources.';classmytest{
function__construct({}
publicfunctioninit({

?>
}
$var='helloworld!';echo$myvar;}
publicfunctionmylist({
$var='helloworld!thisisaexample!';echo$myvar;}
常用操作列表(11.调用数据库模型
$this->db=pc_base::load_model('test_model';
其中$this->db中所支持的方法请参照phpcms/libs/classes/model.class.php中方法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模块下classname5.加载模块函数库
pc_base::load_sys_func(‘global‘,’test’;//调用test模块的global函数包
常用操作列表(26.加载前台模板
includetemplate('test','mytest','default';7.加载后台模板

include$this->admin_tpl('mytest_admin_list';8.权限控制
后台控制控制器需要加载admin模块下的admin类,并继承该类
defined('IN_PHPCMS'orexit('Nopermissionresources.';pc_base::load_app_class('admin','admin',0;classmytest_adminextendsadmin{//这个控制器需要登录后台才可以访问}?>
PHPCMSV9模板与标签

PC标签评论模块会员模块友情链接模块投票模块公告模块专题模块内容模块工具箱json工具箱xml工具箱get标签碎片工具箱


v9二次开发之构建模块全过程
第一:开发流程
为你的phpcms创建一个模块的一般开发流程是:创建数据库和数据表;(没有数据库操作可略过)

创建模块目录创建模块控制器类;
创建模块类与模块函数;(如果只是简单的模块可以不必创建)创建模板文件;运行和调试。第二:创建模块
phpcmsv9框架中的模块,位于phpcms/modules目录中每一个目录称之为一个模块如果要创建一个模块,只要在phpcms/modules目录下创建文件夹并放入你的控制器类就可以了。
例如我要开发一个叫做test的模块,那么首先在phpcms/modules目录下创建文件夹,并将其命名为test
test模块的标准结构通常是这样的。

其中
classes为模块类库包
functions为模块函数库包


templates为模块模板包这里通常放置含有权限控制的控制器模板,也就是后台模板。

如果您的模板有单独的前台模板,你需要在phpcms\templates\default下创建一个您的模块目录来放置前台模板,"default"为你的风格包名称,我们默认适用default

第三:创建模块控制器类
在创建模块中我们已经创建好了一个名为“test”的模块,接下来我们继续为这个模块添加两个控制器类。
phpcmsv9的控制器就是模块的类文件,位于phpcms/modules/模块/目录下面。类名成就是文件名+.php例如一个名为mytest的控制器,那么他的命名为mytest.php即可。控制器类默认继承系统的函数库,可以直接使用。控制器类的类名称与控制器文件名必须相同控制器类文件包含两种形式:
1.mytest.php控制器,前台浏览(不含权限控制)

defined('IN_PHPCMS'orexit('Nopermissionresources.';classmytest{
function__construct({}
publicfunctioninit({

$var='helloworld!';echo$myvar;}
publicfunctionmylist({
$var='helloworld!thisisaexample!';echo$myvar;}}?>

这个控制器的url访问方法前面已经介绍过了,
http://www.yourname.com/index.php?m=test&c=mytest
http://www.yourname.com/index.php?m=test&c=mytest&a=mylist没有填写“a”的情况下,默认调用init方法

2.mytest_admin.php控制器,后台管理(含权限控制
后台控制控制器需要加载admin模块下的admin,并继承该类。需要注意的是因为你添加的控制器类继承了其他的类,你要小心你控制器的方法名不要和该类中的方法名一样了,否则会造成影响,具体请查看admin类中有哪些方法。
defined('IN_PHPCMS'orexit('Nopermissionresources.';pc_base::load_app_class('admin','admin',0;classmytest_adminextendsadmin{publicfunction__construct({}
publicfunctioninit({
$myvar='oh,iamphpcmser';echo$myvar;}}?>

在控制器中增加模板调用

phpcms可以实现完全的模板与程序分离,所以在我们的控制器程序中要加载模板,才可以更友好的显示出来。1.加载前台模板
前台模板文件在phpcms\templates\default\模块名称目录中,本示例也就在phpcms\templates\default\test加载模板方法如下:
includetemplate('test','mytest','default';
其中test为模块名称mytest为模板目录下模板名称,default为风格名称,默认不填为defalut
在上面例子中如果要给mytest.phpinit方法加载一个mytest的模板,如下
publicfunctioninit({
$var='helloworld!';
includetemplate('test','mytest','default';}

这样我们通过url访问该方法的时候也就加载了对应的模板。2.加载后台模板
后台模板文件在phpcms\modules\模块名称\templates目录中,本示例也就在phpcms\modules\test\templates加载模板方法如下:
include$this->admin_tpl('mytest_admin_list';

其中mytest_admin_listphpcms\modules\test\templates
mytest_admin_list.tpl.php注意:此处模板必须以.tpl.php作为后缀
在上面例子中如果要给mytest_admin.phpinit方法加载一个mytest_admin_list的模板,如下
publicfunctioninit({
$myvar='oh,iamphpcmser';

include$this->admin_tpl('mytest_admin_list';}
第四:创建数据库模型类
数据库模型位于:phpcms/model/目录下。
数据模型文件的命名规则建议为数据表名称+'_model.class.php'
如果在我们的创建的模块中我要使用一个数据库“test”,首先需要建立一个数据库模型文件,文件名称为'test_model.class.php'内容如下:php
defined('IN_PHPCMS'orexit('Nopermissionresources.';
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';来加载。具体如下php
defined('IN_PHPCMS'orexit('Nopermissionresources.';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/model.class.php中方法


PC标签使用说明
PHPCMSV9中我们正式开始需要PC标签做为数据的获取的方式。PC标签是以下面的方式进行声明
pc:contentaction="lists"cache="3600"num="20"page="$page"{/pc}
PC标签必须以{pc}开头,并以{/pc}结尾的代码片段。
当然不以{/pc}结尾并不会引起程序致命性的错误,导致程序无法继续运行。
以下为两种已知可能会出现的问题:
1.当网页中出现两个PC标签时,可能会使得没有闭合的PC标签之后的PC标签
数据和其混乱。
2.在后台可视化编辑时,可能出现网页结构错乱的问题。

PC标签分析:
PC标签中{pc:}冒号之后跟随的为模块名。如上面的例子中调用的是内容模型的PC标签。action="list"
这个形式所代表的是参数。每一个PHPCMSV9模型都为其PC标签定义了调用的参数。其中有一些调用参数是系统保留的参数,其对所有的PC标签都是有效的。参数必须使用参数名="参数值"
的方式填写,多个参数之间使用空格分开(如下例),参数值可使用双引号来包括,无论是什么形式的引号都必须是成对出现的。
{pc:content参数名="参数值"参数名="参数值"参数名="参数值"}

请查看PC标签保留参数相关章节,以了解具体保留参数及其用途。PC标签分类:
PC标签包含两个类别,分别为:
1.工具类2.模块类

工具类,大体上可以理解为PHPCMSV9所提供的一些工具箱。请查看PC标签工具箱相关章节,以了解更多关于工具类的PC标签的更多信息。
而模块类,PHPCMSV9各个模型提供给大家调用模块数据的数据接口。查看具体模块的相关说明章节,以了解更多关于模块类的PC标签的更多信息。如何显示PC标签中的数据:
默认情况下PC标签中的数据都是数组方式返回的,你都可以通过$data来获取到这个数组,如果你在PC标签中定义了return参数,返回的数组将使用return的值进行命令。一般情况下你可以使用如下的方式来显示值:{loop$data$key$val}
<ahref="{$val[url]}">{$val[title]}a><br>{/loop}
基中的$val[url]$val[title]需要具体根据所使用的PC标签,返回的数据来判断。


PC标签保留参数
下表为PC标签保留参数表,几乎所有的PC标签都支持这些保留参数设置
变量名
默认值
说明
本参数的值表示为操作事件,模型
action
null
PC标签必须使用包含本参数,说明要进行的操作。
cachenumpageurlrulereturn
020nullnulldata
缓存存储时间(单位秒)获取记录的条数,最后会被模板引擎处理成limit传送到处理函数中。当前分页。一般填写为$_GET[page]URL规则返回数据变量名
下例中是一个完整的使用例子。
{pc:contentaction="lists"catid="25"num="20"page="$_GET[page]"return="data"}

    {loop$data$n$r}
  • <ahref="{$r[url]}">{$r[title]}a>li>{/loop}ul>{/pc}




    get标签
    GET标签源自于PHPCMS2008版,其使用SQL语句直接获取数据的特性,成为大家制作模板的首选。
    V9中这样强大的工具也得到保留下来。GET标签使用方式如下:
    {pc:getsql="SELECT*FROMphpcms_member"cache="3600"page="$page"dbsource="discuz"return="data"}

      {loop$data$key$val}{$val[username]}<br/>{/loop}ul>{$pages}{/pc}
      从上面的代码里面可以看出GET标签所支持的参数。对照下面的列表了解每一个参数的用途:
      默认null00

      参数sqlcachepage
      说明
      要执行的SQL语句缓存时间,单位为秒
      分页,通过变量把当前的分布传给PC标签进行处理
      dbsourcenull
      数据源,当你通过系统后台的数据源模块配置过数据源时,可把数据源名填写到这里,系统会去对应的数据本系统的数据请留空

      returndata返回的数据的变量

      内容模块
      内容模块PC标签调用说明模块名:content模块提供的可用操作
      操作名listsrelationhitscategoryposition
      说明
      内容数据列表内容相关文章内容数据点击排行榜内容栏目列表内容推荐位列表
      position操作说明如下:

      内容推荐位列表(position):可用参数:
      参数名posidcatidthumbordernum
      是否必须
      默认值nullnull0nullnull
      说明推荐位ID调用栏目ID是否仅必须缩略图排序类型数据调用数量
      代码例子:
      {pc:contentaction="position"posid="2"order="listorderDESC"num="4"}


        {loop$data$key$val}
      • <ahref="{$val['url']}">{$val['title']}a>li>{/loop}ul>{/pc}
        返回参数如下表:
        字段titleurl
        类型char(80char

        默认NULLNULLNULLNULL
        推荐位标题推荐位链接地址推荐位发布时间推荐位缩略图
        根据模型所设置的加入到推荐位中字段名称
        注释
        inputtimeint(10thumb其他
        char不定

        内容列表(lists):可用参数:参数名
        catidwherethumbordernummoreinfo
        是否必须
        默认值nullnull0nullnull0
        说明调用栏目ID
        sql语句的where部分是否仅必须缩略图排序类型数据调用数量是否调用副表数据
        提醒:PHPCMSV9Beta20101105版本开始支持moreinfo参数属性,本参数表示在返回数据的时候,会把副表中的数据也一起返回。一个内容模型分为2个表,一个主表一个副表,主表中一般是保存了标题、所属栏目等等短小的数据(方便用于索引),而副表则保存了大字段的数据,如内容等数据。在模型管理中新建字段的时候,是允许你选择存入到主表还是

        副表的(我们推荐的是,把不重要的信息放到副表中)。想要在列表中调取副表的数据就需要在PC标签中使用moreinfo这个属性。代码例子:
        {pc:contentaction="lists"catid="2"order="idDESC"num="4"}

          {loop$data$key$val}
        • <ahref="{$val['url']}">{$val['title']}a>li>{/loop}ul>{/pc}where用法:
          {pc:contentaction="lists"catid="2"where="`thumb`!=''AND`status`=99"order="idDESC"num="4"}

            {loop$data$key$val}
          • <ahref="{$val['url']}">{$val['title']}a>li>{/loop}ul>{/pc}
            返回参数如下表:
            字段
            类型

            默认
            注释

            titleurl
            char(80char

            NULLNULLNULLNULL
            推荐位标题推荐位链接地址推荐位发布时间推荐位缩略图其他模型字段
            inputtimeint(10thumb其他
            char不定

            点击排行榜(hits):可用参数:
            参数catidday
            是否必默认
            null0nullnull
            说明调用栏目ID调用多少天内的排行
            排序类型(本月排行-monthviewsDESC、本周排行-weekviewsDESC、今日排行-dayviewsDESC数据调用数量
            ordernum

            代码例子:
            {pc:contentaction="hits"catid="2"order="weekviewsDESC"num="10"}

              {loop$data$key$val}
            • <ahref="{$val['url']}">{$val['title']}a>li>{/loop}ul>{/pc}
              返回参数如下表:

              字段titleurl
              类型char(80char

              默认NULLNULLNULLNULL
              推荐位标题推荐位链接地址推荐位发布时间推荐位缩略图其他模型字段
              注释
              inputtimeint(10thumb其他
              char不定

              相关文章(relation):可用参数:
              参数名catidrelationkeywordsnum
              是否必须
              默认值null$relationnullnull
              说明调用栏目ID无需更改
              内容页面取值:$rs[keywords]数据调用数量
              代码例子:
              {pc:contentaction="relation"relation="$relation"catid="$catid"num="5"keywords="$rs[keywords]"}{loop$data$r}
            • ·<ahref="{$r[url]}"
              target="_blank">{$r[title]}a><span>({date('Y-m-d',$r[inputtime]}span>li>{/loop}{/pc}
              返回参数如下表:
              字段titleurl
              类型char(80char

              默认NULLNULLNULLNULL
              推荐位标题推荐位链接地址推荐位发布时间推荐位缩略图其他模型字段
              注释
              inputtimeint(10thumb其他
              char不定


              栏目列表(category):可用参数:
              参数名catid$siteidorder
              是否必须
              默认值01null
              说明
              调用该栏目下的所有栏目,默认0,调用一级栏目默认调用系统站点
              排序方式、一般按照listorderASC排序,即栏目的添加顺序
              代码例子:
              {pc:contentaction="category"catid="0"num="25"siteid="$siteid"order="listorderASC"}{loop$data$r}
            • <ahref="{$r[url]}"><span>{$r[catname]}span>a>li>{/loop}{/pc}
              返回参数如下表:
              字段
              catidsiteidmoduletypemodelidparentidarrparentidchildarrchildidcatnameimagedescriptionparentdircatdirurl
              smallinttinyint(3varchar(15tinyint(1tinyint(5smallint(5varchar(255tinyint(1mediumtextvarchar(30varchar(100mediumtextvarchar(100varchar(30varchar(100
              类型
              默认值
              说明
              栏目ID站点ID模块ID栏目类型ID模型ID上级父栏目所有父栏目子栏目所有子栏目栏目名称栏目图片栏目描述父栏目目录栏目目录栏目链接

              01550

              字段
              itemshitssettinglistorderismenusethtmlletter
              类型
              mediumint(8int(10mediumtextsmallint(5tinyint(1tinyint(1varchar(30
              00000
              默认值
              栏目内容数点击数栏目设置排序是否显示
              说明
              是否生成到根目录栏目拼音

              PHPCMSv9.1.7整合discuzX2的解决办

              最近有不少朋友提出PHPCMSv9.1.7(20110909discuz新版X2整合过程中有问题。由于PHPCMSV9中默认整合的Ucenter版本为1.5.1(即适用于DiscuzX1.5以下Discuz7.0之上的版本,而最新的DiscuzX2中升级了Ucenter版本至Ucenter1.6,由于接口文件的变动,所以会导致一些无法同行问题。
              现给出如下解决方案:
              第一步:确定你的PHPCMSPHPSSO版本为最新版v9.1.7(20110909。注:截至发此文章时间最新版为该版本。
              第二步:使用新的uc_client文件,打开phpsso_server\api\目录修改原uc_client目录名称为uc_client.1.5.1,然后将下面文件解压后覆盖到该目录下。
              uc_client.rar(41.12KB
              第三步:使用下面文件覆盖
              phpsso_server\phpcms\libs\functions\global.func.php文件。注意:是phpsso_server中的global.func.php,不是cms中的!
              global.func.rar(7.75KB

              第四步:登录phpsso后台,系统设置>uc设置,配置相应的整合信息,如下图。注意:在前缀前增加数据库名称,格式如:`bbs`.pre_uc_


              第五步:登录Ucenter后台,添加应用,配置相应的信息,这里不详细说明,如


              第六步:更新缓存,包括phpsso缓存,ucenter缓存,discuz缓存。此时你会发现从CMS中登录退出,论坛可以同步登录退出,但是在论坛登录退出无法同步登录退出cms,由于discuz本身的一些问题,为了解决该问题,我们需要修改一下discuz的代码。第七步:修改Discuz中文件
              1、修改template\default\member\login.htm36行,删除
              ajaxpost('loginform_$loginhash','returnmessage_$loginhash','returnmessage_$loginhash','onerror';returnfalse;
              2、修改template\default\member\login_simple.htm2行,删除onsubmit="returnlsSubmit("

              3、修改/source/function/function_message.php78行,查找$param['header']=true;替换为:
              $param['header']=false;
              如果你是dzx1.5则应该修改/source/function/function_core.php1458行,查找
              $param['header']=true;替换为:
              $param['header']=false;
              以上便是PHPCMSv9.1.7(20110909版本整合discuzX2出现无法同行问题的解决方案,希望对大家有用!


              phpcms_v9二次开发手册

相关推荐