8.2. 如何创建一个新模块

要创建第三种类型的模块,即一个与数据库交互并推断数据的 php 脚本,首先我们必须了解这些模块的结构。它们包含在一个名为 blocks 的文件夹中,模块的名称必须是 block-模块名.php。所有模块都以 "block-" 开头非常重要。任何名称以 block- 开头的模块都将包含在可以激活的模块屏幕中。我们将在模块管理菜单中的 file_name 下拉列表中找到所有可用的模块。如果管理员未分配名称,则名称将与 block- 后面的名称相同。我们不能在模块名称中使用空格,必须使用下划线 _ 替换。所有遵守这些规则的模块都将插入到模块管理菜单中。

8.2.1. 如何创建一个模块,理论方法:

创建模块时,您必须遵循以下规则

请记住,模块中的空间有限,请特别注意布局!

Warning警告
 

为了使模块符合 W3C 标准,Francisco Burzi 说:

“为了遵守 HTML 4.01 Transitional 的 W3c 标准,非常重要的是,您要将 URL 中所有 “&” 的实例替换为标记 “& ”

例如,URL
<a href="modules.php?op=modload&name=FAQ&file=index">
必须写成
<a href="modules.php?op=modload&amp;name=FAQ&amp;file=index">
并且不要使用,例如,标签 “li”(用于创建列表),而是将其留在样式表 (CSS) 中,样式表将为您完成。

表格和字体等的背景最好留给样式表 (CSS)。

现在我们将看看如何从头开始构建一个模块。

8.2.2. 如何创建一个模块,一个实际示例

我们将创建一个非常简单的模块,显示前一天在我们网站上访问的页面。我们将只有一个查询和一个值,以便使事情更容易。我们的模块名为 “hits”,因此模块的完整名称将是 block-hits.php

首先,我们打开 php 标签

<?php

然后我们插入之前看到的保护脚本

if (eregi("block-hits.php", $PHP_SELF)) {
Header("Location: index.php");
die();
}

现在我们插入我们要调用的变量(在本例中是参数 $prefix 和 $dbi,它们处理数据库抽象)

global $prefix, $dbi;

现在我们继续插入从数据库读取我们网站上看到的页面数量的查询:(指令是“读取表 nuke_counter 中单元格 count 的第一行值”)

$result = sql_query("select count from "$prefix."_counter order by type desc limit 0.1", $dbi);
list($count) = sql_fetch_row($result, $dbi);

最后,我们传递将由模块回显的 “$content” 变量并关闭 PHP 标签

$content. = $count
?>

我们的完整脚本将是

<?php
if (eregi("block-hits,php", $PHP_SELF)) {
Header("Location: index.php");
die();
}
global $prefix, $dbi;
$result = sql_query("select count from "$prefix."_counter order by type desc limit 0.1", $dbi);
list($count) = sql_fetch_row($result, $dbi);
$content. = $count
?>