我们继续使用第 9.2 节中的 Topolino 示例,创建一个非常简单的模块,显示 Topolino 的 GIF 图片以及用户可编辑的 3 个预定义名称列表。这是一个无意义的模块,但它足够简单,每个人都能理解。我们将使用的数据库是 MySQL,但通过更改一些细节,该示例适用于所有数据库。首先,让我们看看我们将构建的每个模块的骨架
<?php if (!eregi("modules.php", $PHP_SELF)) { die ("You can't access this file directly..."); } $index = 1; require_once("mainfile.php"); $module_name = basename(dirname(__FILE__)); get_lang($module_name); include("header.php"); include("footer.php"); ?> |
![]() | 在进行任何操作之前,必须创建一个名为 "modules/Topolino" 的文件夹,我们刚刚创建的文件(以及其他内容)必须命名为 index.php,并且必须放在该文件夹中。 |
idperson:这是一个包含人员 ID 的单元格(int 11,主键)
nameperson:这是一个包含人员姓名的单元格(varchar 60)
我们手动插入(使用 PHPMyAdmin - 参见第 11.3 节 - 或等效的界面)我们感兴趣的 3 个人的姓名,参见图 9-1(为了简单起见,该模块不允许您添加或取消人员,而只允许编辑已存在的人员)。
Id 1:Topolino
Id 2:Minnie
Id 3:Pluto
![]() | 可以在每个函数的末尾包含页脚。这是一个稍微复杂的解决方案,因为我们必须编写更多的行,但我必须强调有多少模块使用它。 |
![]() | 注意!!! |
---|---|
为了保持 DB 的抽象性,使其能够在各种数据库中独立工作,我们不能使用通常被 MySQL 爱好者使用的经典 PHP 语法 ;-),相反,我们必须使用 include/sql_layer.php 文件中所示的语法 |
我们将编译的查询结构如下
$resultpersons = sql_query("SELECT idperson, nameperson FROM "$prefix."_topolino", $dbi); for ($m=0; $m < sql_num_rows($resultpersons, $dbi); $m++) { list($idperson, $nameperson) = sql_fetch_row($resultpersons, $dbi); echo "$idperson - $nameperson < br >"; } |
非常简单,不是吗?好的!在进入此模块的管理员界面之前,我们将开始修改它,目的是赋予它最起码的风格尊严。
我建议
将结果插入表格中
为其添加标题和模块描述。
我们可以通过渲染所有与 PHP-Nuke 多语言系统兼容的模块来做到这一点:我们定义将组成我们需要的两个短语的抽象,在 lang-english.php 文件中,我们必须插入
<?php define("_BENVETOPOMOD", "Topolino Module, Welcome!"); define("_DESCRITOPOMOD", "This is an example module that serves to illustrate how a PHP-Nuke module is created"); > |
记住在我们的语言文件夹中插入一个名为 index.htm 的文件!我们需要它来保护该文件夹内部免受不必要的导航。我们几乎到了前端部分的末尾,现在我们必须将样式部分插入到我们创建的代码中,并将所有内容组装起来。我们取出之前构建的两个代码片段(初始代码片段和我们创建的代码片段),并将样式修改连接起来
<?php if (!eregi("modules.php", $PHP_SELF)) { die ("You can't access this rows directly..."); } $index = 1; require_once("mainfile.php"); $module_name = basename(dirname(__FILE__)); get_lang($module_name); include("header.php"); echo "<br>"; echo""._BENVETOPOMOD.""; echo "<br><br>"; opentable(); echo "<br>"; echo""._DESCRITOPOMOD.""; echo "<br><br>"; $resultpersons = sql_query("SELECT idperson, nameperson FROM ".$prefix."_topolino", $dbi); for ($m=0; $m < sql_num_rows($resultpersons, $dbi); $m++) { list($idperson, $nameperson) = sql_fetch_row($resultpersons, $dbi); echo "$idperson - $nameperson <br>"; } closetable(); include("footer.php"); ?> |
我们只添加了文本、一些用于标题的换行符以及 "Opentable();" 和 "Closetable();" 来包含文本。结果可以在图 9-2中看到