对xoops模组开发手册的学习情况汇报 |
||||
---|---|---|---|---|
初级会员
注册日期:
2005/3/31 15:21 所属群组:
注册会员 等级: 3; EXP: 93
HP: 0 / 73 MP: 9 / 1341 |
前几天将台湾tad兄写的xoops模组开发抄了过来,被站长标记为精华,甚为惶恐。
今天按照tad兄指导全过程学习了一下,现将发现的问题及心得记录下来,与诸位分享。 一、有关文章中的部分错误: 1、3 XOOPS2模块的灵魂xoops_version.php 根据说明:$modversion['image']变量可以不需要图标文件,在一般情况下确实可以不用,但是如果需要对模组进行管理,在管理区出现相应模块、使用浮选单则一定要设置图标变量,否则没有图标,管理区无法显示相应模块;图标文件可以不一定用logo.png这个名字,只要与变量对应即可。 2、4 数据库表设定 数据库表脚本“CREATE TABLE `phone ` ( ”,其中phone后面多了一个空格,请删除; 3、6 管理接口的index.php 该段中部分代码有错,应改为: switch($_REQUEST['op']) { case "Add": add_phone(); header("location: ".$_SERVER['PHP_SELF']); break; case "Del": del_phone(); header("location: ".$_SERVER['PHP_SELF']); break; default: $main=list_phone(); break; } 主要是case后应该为冒号,而不是分号,语法错误。 其中switch($_REQUEST['op'])似乎仍然有错,但是本人目前没有找到错误原因,因此无法修改,请大虾指正; $allData.="<tr><td>$name</td><td>$tel</td><td><a href='".$_SERVER['PHP_SELF']."?op=Del&sn=$sn'>删除</a>< /td> </tr>"; 应该改为:$allData.="<tr><td>$name</td><td>$tel</td><td><a href='".$_SERVER['PHP_SELF']."?op=Del&sn=$sn'>删除</a></td></tr>"; < /td>里面多了个空格; 4、9 模块样版设定 该段中部分代码有错,$data.="· $name : $tel"; 后面缺少一个换行符号,应该改为:$data.="· $name : $tel <br>"; 5、10 目前整个的档案结构 图片中文件结构中说明有一个block目录,但是其前面并没有介绍,我也没有找到相关资料; 二、根据这篇文章,有如下了解与各位分享: 1、模块自从拷贝到/modules下分3为个状态 .待安装状态:此时模组文件已经全部拷贝到目录下,并且xoops可以正确识别该模组,但是并不能为用户浏览; .安装状态:此时模组文件已经安装完成,在模块管理区可以看到相应的图标,启动栏被选中,并可以正常使用; .停用状态:此时模组已经被停用,但是在数据库内该模组的相关信息并没有被删除,因此可以随时启动。在这时数据库内针对该模组的更改已经被关闭,因此可以放心的对模组进行升级,当然也可以将其彻底删除调,如果删除,则有关该模组的所有信息将全部删除,包括该模组自己创建的数据库表。 另外,在卸载模组的时候,其提示只是简单的要求管理员确认卸载模块,甚至不如对模块停用、启用的时候用红色标记将发生的动作,个人认为这里不妥,如果是误操作,将论坛或者存有大量数据的模组删除,岂不损失惨重,希望对此进行改进,加上重点提示操作后果,防止不必要的损失。 2、经过试验表明,在xoops_version.php文件中列出的数据库表名,xoops会在相应的sql文件中找对应的数据库表描述,如果该文件中含有其它数据库表的描述,只要xoops_version.php文件中没有制订,xoops是不会执行的。 三、仍然存在的疑问: 1、数据库表有时候需要一些默认记录,如何给数据库表输入默认记录,则没有参考其它的sql文件; 2、xoops是支持多国语言的,但是该例子中未介绍language目录,很明显作者避开了语言部分; 3、关于xoops内置函数和变量,介绍的书籍好像也比较少; 四、以上是本人在学习该例子中的一些结果及仍然存在的疑问,还望各位不吝赐教。 五、附件内是我按照手册做的模组包,使用winrar压缩,图标是借用其它模组的图标。
2005/4/16 20:48
|
|||
|
Re: 对xoops模组开发手册的学习情况汇报 |
||||
---|---|---|---|---|
网站管理员
注册日期:
2004/6/25 19:16 所属群组:
网站管理员 注册会员 Dev+Hack 等级: 54; EXP: 77
HP: 537 / 1344 MP: 1983 / 27599 |
:: switch($_REQUEST['op'])
尽量不要直接用$_REQUEST (当然在这个具体的应用里没有什么问题), 可以用 $val = empty($_GET[$key])?(empty($_POST[$key])?"":$_POST[$key]):$_GET[$key]; ::$_SERVER['PHP_SELF'] 最好用 $_SERVER[ 'REQUEST_URI' ],在xoops/common.php里有相关处理
2005/4/16 21:15
|
|||
|
回复: 对xoops模组开发手册的学习情况汇报 |
||||
---|---|---|---|---|
新进会员
注册日期:
1/10 15:21 来自 江苏,南京
所属群组:
注册会员
帖子:
1
等级: 1; EXP: 0
HP: 0 / 0 MP: 0 / 0 |
1、数据库表有时候需要一些默认记录,如何给数据库表输入默认记录,则没有参考其它的sql文件;
RE:如果要同时插入数据的话,只要在该sql文件中插入insert语句就好了呀~数据库的简单备份也是这样的
1/10 18:50
|
|||
|