第 7 章。自定义 PHP-Nuke 主题

目录
PHP-Nuke 主题的结构
修改 HTML 模板
主题构建:需要遵循的规则

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();

请注意:这些是 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 函数很容易,不是吗?