3

我们有一个客户,我们为他构建了很多基于模板的网站。理想情况下,我们会使用 kohana ( http://www.kohanaphp.com/ ) 之类的东西来处理模板并使进行站点范围内的更改变得轻而易举。

不幸的是,我们的客户端不能(也不会)托管任何服务器端代码(在您问之前,这不会改变并且自己托管文件不是一种选择),因此部署到它们的任何文件都必须是 HTML、Javascript、CSS、图像和闪存。

有没有一种在像 kohana 这样的框架环境中开发的好方法来使网站易于管理,但能够部署或导出网站的纯 HTML 版本(网站没有动态方面,例如需要服务器端语言的搜索,并且没有使用数据库)?

我想这类似于抓取网站,但我想要一些更可靠的东西,因为某些页面资产是使用 javascript 动态加载的。

谢谢

4

6 回答 6

1

试试WaveMaker Studio 。它将部分解决您的问题。

WaveMaker Studio 有一种模板功能,它是社区开源版本。

高温高压

于 2009-07-21T07:48:39.507 回答
1

我使用Template Toolkit (Perl) 并有一个从模板生成静态文件的简单脚本。这非常适合您所处的情况(常用导航等)。

它带有一个ttree命令,该命令将处理目录树并将结果放入另一个目录树中。

这是我使用的 tt.rc 文件:

# ignore these files (regular expressions)
ignore = \.svn
ignore = ^#
ignore = ~$
ignore = .DS_Store
ignore = \.tt$

# if these template files change, reprocess everything
depend *=tpl/wrapper,tpl/defaults,style/default.html

# just copy these files, don't process as templates
copy = \.(gif|png|pdf|jpg)$

# verbose output
verbose

# recurse into subdirectories
recurse

# setup some defaults from tpl/defaults
pre_process = tpl/defaults

# process this file instead of the real file (see below how this is used)
process     = tpl/wrapper

# process files from src/, output to html/
# extra templates in lib/ (tpl/wrapper for example).
src  = src
dest = html
lib  = lib

几个特殊文件,tpl/defaults

[%-  page = {
            title = template.title,
            style = template.style or 'default.html'
    };

    base = INCLUDE tpl/base_uri;

    # don't include any whitespace from here...
    RETURN;
-%]

并且tpl/wrapper

[%- content = PROCESS $template;    
   IF !template.name.search('.html') OR page.style == 'none';
      content;
   ELSE;
      default_style_template = "style/" _ page.style;
      PROCESS $default_style_template;
   END;
%]

这将处理真正的模板;将结果放入content变量中,然后处理style模板(用page.stylein设置tpl/defaults;默认为defaults.html)。

样式lib/style/default.html文件只需要有

[% content %]

包含真实模板的地方;在此之前和之后,您可以拥有标准的页脚和页眉。

您可以在tt2.org阅读有关模板工具包的更多信息。

另一种选择是wget在递归模式下使用(或类似的)在开发服务器上“镜像”由 PHP 生成的页面;但我不建议这样做。

于 2009-07-21T08:05:03.717 回答
0

考虑替代解决方案,即使您认为无法使用它们。对新颖的解决方案视而不见是错误的,因为您的客户端“无法处理服务器端语言”(意译)。有时,需求是不正确知识的结果。例如,客户端是否真的无法承载任何服务器端语言,因为它们无法承载 IIS 或 Apache - 还是因为它们没有它们并且也无法安装任何其他应用程序?(如果他们可以安装应用程序,也许解决方案可能是只提供一个“小型”网络服务器 - 也许是 XSP)。

我还建议你看看,例如,谷歌“齿轮”。我听说过很好的事情,尽管它可能不适合您的需求。

如果做不到这一点,您可能最好忽略经典的服务器端语言并在客户端完成所有操作,或者使用服务器端语言作为导出器。(这将是一项自定义工作)。我认为使用自定义脚本“导出”网站可能是最好的方法。

最后,这个问题真的没有一个单一的答案——作为一个程序员,你的工作就是权衡不同的优势和不同的解决方案,然后选择最好的一个。

于 2009-07-20T06:52:16.610 回答
0

嗯...如果客户端的服务器不允许 PHP 或 ASP,我认为他们不会选择更不安全的 CGI。

好吧,您可以在开发应用程序中制作页面,在浏览器中加载这些页面,然后保存生成的 html。对所有页面都这样做,然后你就设置好了。

只要确保链接指向正确。

于 2009-07-20T06:52:39.307 回答
0

我不知道对此有任何具体的解决方案,但如果您愿意用您选择的语言创建一个您自己的简单模板系统,那么实际上只需制作一个脚本来生成页面。我十几岁的时候就有这样的网站。每当我上传新内容时,我都会重新生成网站并上传新页面。那时我正在使用 PERL。

创建这样一个脚本的复杂性很大程度上取决于您用于构建站点的内容。我正在使用一个完全定制的构建,它可以像它一样工作。在这种情况下,我想您可能想自己编写一个简单的模板系统来获得模板的优势以及能够从中生成静态 HTML。

于 2009-07-20T07:18:26.167 回答
0

我不知道这是否是一个选择,但我会建议CushyCms。这是一个在线 CMS,您可以在其中使用 CSS 类定义内容区域,并且可以在线编辑内容。您确实需要提供 FTP 详细信息,所以这对您来说可能是一个交易破坏者,但我认为值得一提。

于 2009-07-20T07:29:24.193 回答