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}

{$val[title]}

{/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"}

{/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"}

{/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"}

{/pc}

where用法:

{pc:content action="lists" catid="2" where="`thumb`!='' AND `status`=99" order="id DESC"

num="4"}

{/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"}

{/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}

  • {$r[catname]}
  • {/loop}

    {/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 出现无法同行问题的解决方案,希望对大家有用!


    本文标签: 模块 文件 标签 模板 调用