7.1. PHP-Nuke 主题的结构

为您的网站制作您自己的个性化图形主题非常重要,这样您就不会拥有另一个 PHP-Nuke 克隆站点。如果您的网站看起来与其他网站相同,这会让您这位网站管理员看起来不够专业。个性化门户网站从图形方面开始。了解如何掌握 PHP-Nuke 主题意味着能够处理我们可以使用的所有图形元素。在本章中,我们将使用的示例主题是由 Francisco Burzi 为 PHP-Nuke 制作的 NukeNews 主题。这是一个由许多包含在 theme.php 中的 HTML 文件组成的主题。这是一个非常好的解决方案,它允许您通过像 DreamWeaver 这样的编辑器来管理主题的图形部分,并使用最少量的 PHP 代码。

NukeNews 主题的结构如下

这些文件包含在 theme.php 中指定的函数中。然后我们有一个名为 style.css (style/style.css) 的样式表,它包含在我们主题文件夹的 header.html 文件中。按照惯例,样式表必须始终称为 style.css,并且必须始终包含在我们主题文件夹内名为“style”的文件夹中。图像通常分组在一个名为“images”的文件夹中,该文件夹始终位于我们的主题文件夹中。

NukeNews 主题的文件夹结构将是

始终记住大小写很重要,为了与任何 Unix 系统的兼容性,您必须区分大写和小写。

theme.php 文件是所有 PHP-Nuke 图形管理的核心。

HTML 文件包含并非发生在所有类型的主题中,一些程序员将所有 HTML 都包含在 theme.php 文件中,但是单独包含它可以解决许多问题,例如 HTML 格式化,否则这些格式化将包含在 PHP 代码中。它还使我们有可能使用可视化编辑器 (WYSIWYG) 进行编辑。

theme.php 是创建所有 PHP-Nuke 组件(页眉、页脚、中心部分、区块...)的管理功能的文件。

themeheader() 函数管理站点页眉。它由构成标题的各种表格组成,有时还定义一些未包含在样式表中的 body 标签元素以及放置在包含的 html 文件中的变量。

示例

变量 $theuser 在 themeheader() 函数内部定义,然后在 header.html 文件中的表格中调用

theme.php 中的代码(定义 $theuser 变量)

if ($username == "Anonymous") {
$theuser = "&nbsp;&nbsp; <a href=\"modules.php?name=Your_Account &op=new_user\">Create an account";
} else {
$theuser = "&nbsp;&nbsp;Welcome $username!";
}

header.html 中的代码(可视化 $theuser 变量)

<td width="15% "nowrap >< font class="content" color="#363636 " >
<b> $theuser </b></font></td>

themefooter(); 函数管理我们网站的页脚。

它有一些有趣的元素我们需要分析

首先,它识别可视化的页面是否已将 $index 变量设置为等于 1,在这种情况下,我们还将在页面上插入右侧区块,但如果 $index==0,则右侧区块将不会出现在我们的页面上。

然后,它定义页脚消息(从 config.php 捕获)并将它们全部插入到一个变量中,该变量从 footer.html 文件中调用。

函数 themeindex() 管理主页中的新闻,并根据各种情况使用“if”函数格式化它们并添加元素。它还包括 story_home.htm 文件。

函数 themearticle() 则管理内部新闻页面(我们可以通过点击“阅读更多...”看到;请记住,在这种情况下,布局部分是通过包含 story_page.htm 文件来管理的,但是必须包含的区块(即文章的调查、相关链接等)由新闻模块定义。

函数 themesidebox() 则管理我们创建或已经找到的盒子的布局(参见第 8 章),它也包含一个名为 blocks.htm 的文件,该文件定义了样式和布局。

我们忽略了 theme.php 文件的一个元素。这些是格式化文本的变量,其中一些变量插入到 css(样式表)中,但另一些变量是在 theme.php 文件的开头定义的。

让我们看看 NukeNews 主题中的变量

$bgcolor1 = "# efefef";
$bgcolor2 = "# cfcfbb";
$bgcolor3 = "# efefef";
$bgcolor4 = "# cfcfbb";
$textcolor1 = "# 000000";
$textcolor2 = "# 000000";

如您所见,这些变量的表达式值是十进制格式。

定义您的网站颜色 - $bgcolor2 通常用于表格边缘,正如您在函数 opentable() 中看到的那样,$bgcolor1 用于表格背景。其他两个背景变量使用相同的标准。$textcolor1 和 $textcolor2 用于格式化文本颜色。

现在我们必须检查 tables.php 文件中包含的内容。此文件创建 4 个函数 (opentable(); closetable(); opentable2(); closetable2();),这些函数包含以预定义方式打开和关闭表格的 HTML 标签。

在创建模块时(参见第 9 章)它非常容易使用,您不必每次想要创建表格时都重写 HTML,而只需使用以下语法就足够了

opentable();
echo "Content of the table";
closetable();

这样,您就以快速有效的方式创建了一个表格。但是这个函数是如何构造的呢?我们将首先检查 opentable(); 然后是 closetable();

Note请注意
 

这些是 php 函数,因此您必须尊重 php 内部的 HTML 语法,在每个“之前添加 /(即 align="left" 必须写成 align=\"left\")

function OpenTable() {
global $bgcolor1, $bgcolor2;
echo "<table width=\"100% \" border=\"0 \ "cellspacing=\"1 \" cellpadding=\"0 \ "bgcolor=\"$bgcolor2 \" >< tr >< td > \n ";
echo "< table width=\"100% \" border=\"0 \ "cellspacing=\"1 \" cellpadding=\"8 \ "bgcolor=\"$bgcolor1 \" >< tr >< td > \n ";
}

语法非常简单,不是吗?

我们停在列上,因为这里我们将插入表格内容(实际上 opentable 是我们开始关闭此表格的地方!)

function CloseTable() {
echo "</td ></tr ></table ></td ></tr ></table > \n";
}

事实上...

用 PHP 构建 HTML 函数很容易,不是吗?