模块:使用CakePHP为XOOPS制作模块

作者: kiang于2007/11/24 23:56:58 9602次阅读
本文将向您介绍如何使用bake来构建XOOPS的模块。 :)

环境
Windows XP Pro SP2
XAMPP 1.6.0a / PHP版本5.2.4
CakePHP 1.2.0.5875预发布
XOOPS 2.0.17.1
PDT 1.0

1. 在XAMPP中设置XOOPS,在PDT中打开一个项目,并将工作区指向XOOPS的根目录。
2. 下载并解压1.2版本的Cake,将cake文件夹移动到XOOPS的根目录中(D:\xampp\htdocs\xoops\cake)
3. 打开PDT,
运行 -> 外部工具 -> 打开外部工具对话框
在程序中添加一个条目
引用
名称:BakeXOOPS
主 -> 位置:D:\xampp\php\php.exe
工作目录:${workspace_loc:/xoops/cake/console}
参数:cake.php bake -working ../../modules/test/


*名称'test'是要构建的模块名称。
4. 执行BakeXOOPS两次,以获得Cake的基本框架并为新模块(test)设置数据库。
5. 在浏览器中打开http://localhost/xoops/modules/test/,查看Cake是否在test模块中工作。
6. 修改xoops/modules/test/webroot/index.php,在开头添加以下行

$xoops_path dirnamedirnamedirname__FILE__ ))));
    require_once( 
$xoops_path '/mainfile.php' );
    include 
XOOPS_ROOT_PATH."/header.php";


并在结尾

include XOOPS_ROOT_PATH."/footer.php";


7. 修改xoops/modules/test/views/layouts/default.ctp,结果

全局变量$xoopsTpl;
$xoopsTpl->assign('xoops_module_header', $html->css('cake.generic') . $scripts_for_layout);
如果
$session->check('Message.flash'))):
    
$session->flash();
endif;
echo
$content_for_layout;
echo
$cakeDebug;


8. 修改xoops/modules/test/webroot/css/cake.generic.css,尝试移除冲突行,结果如下

table tr.altrow td {
    
background#f4f4f4;
}
td.actions {
    
text-aligncenter;
    
white-spacenowrap;
}
td.actions a {
    
displayinline;
    
margin0px 6px;
}
.
cakeSqlLog table {
    
background#f4f4f4;
}
.
cakeSqlLog td {
    
padding4px 8px;
    
text-alignleft;
}

/* Paging */
div.paging {
    
color#ccc;
    
margin-bottom2em;
}
div.paging div.disabled {
    
color#ddd;
    
displayinline;
}

/* Notices and Errors */
div.message {
    
clearboth;
    
color#900;
    
font-size140%;
    
font-weightbold;
    
margin1em 0;
}
div.error-message {
    
clearboth;
    
color#900;
    
font-weightbold;
}
div.error em {
    
font-size140%;
    
color#003d4c;
}
span.notice {
    
background-color#c6c65b;
    
color#fff;
    
displayblock;
    
font-size140%;
    
padding0.5em;
    
margin1em 0;
}
/*  Actions  */
div.index div.actions {
    
clearboth;
    
margin-top.4em;
    
text-alignleft;
}
div.view div.actions {
    
clearboth;
    
margin-top.4em;
    
text-alignleft;
    
width60%;
}
div.actions ul {
    
margin0px 0;
    
padding0;
}
div.actions li {
    
displayinline;
    list-
style-typenone;
    
line-height2em;
    
margin0 2em 0 0;
    
white-spacenowrap;
}
div.actions ul li a {
    
color#003d4c;
    
text-decorationnone;
}
div.actions ul li a:hover {
    
color#333;
    
text-decorationunderline;
}

/* Related */
div.related {
    
clearboth;
    
displayblock;
}

/* Debugging */
pre.cake-debug {
    
background#ffcc00;
    
font-size120%;
    
line-height18px;
    
margin4px 2px;
    
overflowauto;
    
positionrelative;
}
div.cake-stack-trace {
    
background#fff;
    
color#333;
    
margin4px 2px;
    
padding4px;
    
font-size120%;
    
line-height18px;
    
overflowauto;
    
positionrelative;
}
div.cake-code-dump pre {
    
positionrelative;
    
overflowauto;
}
div.cake-stack-trace prediv.cake-code-dump pre {
    
color#000000;
    
background-color#F0F0F0;
    
border1px dotted #606060;
    
margin4px 2px;
    
padding4px;
    
overflowauto;
}
div.cake-code-dump prediv.cake-code-dump pre code {
    
clearboth;
    
font-size12px;
    
line-height5px;
    
margin4px 2px;
    
padding4px;
    
overflowauto;
}
div.cake-code-dump span.code-highlight {
    
background-color#FFFF00;
}


9. 修改xoops/modules/test/config/database.php,结果如下

if(!isset($xoopsOption)){
    
$xoopsOption['nocommon'] = 1;
    
$xoops_path = dirnamedirnamedirnamedirname(__FILE__))));
    require_once(
$xoops_path &'/mainfile.php' );
}
define('CAKE_DB_PREFIX', XOOPS_DB_PREFIX &'_');
class
DATABASE_CONFIG {

    var
$default = array(
        
'driver' => XOOPS_DB_TYPE,
        
'persistent' => false,
        
'host' => XOOPS_DB_HOST,
        
'port' => '',
        
'login' => XOOPS_DB_USER,
        
'password' => XOOPS_DB_PASS,
        
'database' => XOOPS_DB_NAME,
        
'schema' => '',
        
'prefix' => CAKE_DB_PREFIX,
        
'encoding' => '' );
}


10. 修改xoops/modules/test/config/core.php

禁用此设置


11. 修改xoops/modules/test/config/core.php中的缓存设置



12. 修改xoops/cake/libs/cache/file.php
禁用第79行


13. 然后您就可以开始烘烤模块了。 :)

已知问题
1. 在模块的xoops_version.php中,我无法使用$modversion['sub']来添加子菜单,就像其他XOOPS模块一样。
2. 有时候我会遇到空白页,切换调试设置或刷新页面可能会得到正确的结果。
3. 我不能同时打开调试设置。
4. 我遇到了许多与变量作用域有关的问题,它们与过去构建XOOPS模块的方式不同。
5. “永不”在生产中使用结果而不小心,要更加,更加,更多地留意。