2

这是我如何拥有文件以及它们做什么的粗略图片。

开头的index.php显示开始的 HTML 标记并包含 header.php(链接的 div),最后包含显示结束 HTML 标记的 footer.php。在这之间,index.php 从 GET 参数、POST 表单等获取所有用户输入,并从数据库(functions.php 和 mysql_functions.php)获取数据。为了显示正文内容,它包含一个基于用户请求的任何页面的 PHP 模板文件,例如:index.php?p=page1包括template_page1.php

要在模板文件中显示的信息存储在一个数组中,而不仅仅是普通变量,所以在模板中我有如下所示的内容:

<title><?php echo $content['page_title']; ?></title>

<div>
    <?php
        foreach($name as $content['names']){
            echo '<p>'.$name.'</p>';
        }
    ?>
</div>

模板文件中没有真正繁重的代码,只有循环和基本的 if 语句。繁重的工作在 index.php 和函数文件中完成。

有时我觉得它可能很笨拙和凌乱,不是一种好的做事方式。前几天我查看了一个模板系统(Code Igniter),它似乎很复杂,有这么多不同的文件需要更改以显示一些内容。

我可以对我的做法提出一些批评和一些优点/缺点,以及我可以如何更好地做到这一点的一些想法吗?

4

2 回答 2

0

你是对的。将大量代码堆叠到一个文件中并不是一个好习惯。但是,如果您是 PHP 的初学者,则不必太担心它。我无法在脑海中完全描绘出您的文件结构,但我想我有一个想法。

尝试将每个 PHP 函数和诸如此类的东西放在其他文件中,并在 index.php 中使用尽可能少的 PHP。不过,请确保您没有太多不必要的文件(每个事件/功能一个)。

于 2012-12-12T00:48:34.487 回答
0

至少有一个用 php 完成的模板工具包的 beta 版本。但是perl中的原版本质上是一种不同的语言。它相当强大。

原件在 CPAN 上。我认为当前版本是 2.25。

我的网络构建系统的内容和标记几乎完全分离。

这是添加内容之前的基本页面:

[% PROCESS header.inc 
    Title = "Sherwood's Forests -- Seedling Sales" 
    Desc = "Sherwood's Forests Pre-season orders for little Trees."
%]

<DIV id="content">
[% FILTER multimarkdown %]


# Seedling Sales 2014

<div markdown="1" class=picr>

![Picture alternate text][/base-absolute/path/to/image.jpg]

</div>

Please be patient

#### This file is still germinating 


[% PROCESS Copyright.inc %][% END %]



</div>
[% INCLUDE footer.inc %]

所有内容都在 FILTER 行和底部内容之间用 markdown 编写。允许我在列的右侧浮动图像。CSS 完全是流动的,因此屏幕在 iPhone 上仍然可用(几乎不可用)。

大部分魔法都在 header.inc 中。它读取文件fileindex.txt,它本质上是整个网站的菜单树。没有爪哇。所有静态网站。

Fileindex.text 看起来像这样:

ABBAB:f:/Home/Business_Stuff/Inventory.html:3:Inventory.html:Inventory
ABCAB:f:/Home/Business_Stuff/Ordering.html:3:Ordering.html:Ordering
ABDAB:f:/Home/Business_Stuff/Prices.html:3:Prices.html:Prices
ABJAB:f:/Home/Business_Stuff/Business_Stuff.html:3:Business_Stuff.html:Business Stuff
ADAAA:d:/Home/Services:2:Services:Services
ADJAB:f:/Home/Services/Christmas_Trees.html:3:Christmas_Trees.html:Christmas Trees
ADKAB:f:/Home/Services/Custom_Growing.html:3:Custom_Growing.html:Custom Growing
ADLAB:f:/Home/Services/Nature_Walks.html:3:Nature_Walks.html:Nature Walks

开头的字母汤决定了索引的排序顺序。d 或 f 是目录或文件。该数字是菜单层次结构中向下的级别数。然后是完整路径的文件组件。最后是用于链接名称的文本。其中一些是早期重写的冗余,但不值得修复。“不要优化它”。最后一个字段允许使用与文件名不同的链接名称。这个用的不多。

fileindex.txt 本身是由 perl 程序 MakeFileIndex 生成的。它使用两个信息源: find 的结果。在源代码树上运行,以及一个文件 tt2seq,该文件在菜单项的顺序上有可选的覆盖。

我想在我的网站上添加一个新页面。

将第一个文件复制到相应的目录。用我的新内容更改该文件的内容。如果它需要以非字母顺序出现,那么我必须向 tt2seq 添加行来控制它。运行 MakeFileIndex。运行 ttree -a(模板工具包中的实用程序)这将更新每个文件中的所有菜单项。

验证页面看起来像我想要的。如果不是,则重新编辑。为我刚刚编辑的文件重新运行 ttree。当我高兴时,同步到我的服务器。

最终的结果是,与写作所需的时间相比,我花在机械上的时间很少。

如果我决定重新安排站点,我只需在目录树中移动文件,然后重新构建。这不会修复内容块中的任何内部链接。

以这种方式制作的网站是http://sherwoods-forests.com。这是一个老式的网站。重点是内容,而不是嘶嘶声。但它是生成静态页面的好系统。

于 2014-01-29T04:36:05.343 回答