为你的网站制作你自己的个性化图形主题非常重要,这样你就不会有另一个 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 = " <a href=\"modules.php?name=Your_Account &op=new_user\">Create an account"; } else { $theuser = " Welcome $username!"; }
header.html 中的代码(可视化 $theuser 变量)
<td width="15% "nowrap >< font class="content" color="#363636 " > <b> $theuser </b></font></td>
它有一些有趣的元素我们需要分析
首先,它识别可视化的页面是否将 $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 "; }
语法非常简单,不是吗?
函数已打开
必要的变量被调用 ($bgcolor1, $bgcolor2)
我们打开一个 100% 宽的表格,并为其定义背景颜色
打开行,打开列
我们插入一个 100% 宽的新表格(用于边缘)
宽度和高度特征已定义。
行 列
我们在列上停下来,因为在这里我们将插入表格内容(实际上 opentable 是我们开始关闭此表格的地方!)
function CloseTable() { echo "</td ></tr ></table ></td ></tr ></table > \n"; }
实际上...
函数已打开
你关闭列,你关闭行
你关闭内部表格
你关闭列,你关闭行
你关闭外部表格
使用 PHP 构建 HTML 函数很容易,不是吗?