至少有一个用 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。这是一个老式的网站。重点是内容,而不是嘶嘶声。但它是生成静态页面的好系统。