支持多个站点继承的最快PHP模板引擎(或框架)

3
我需要在PHP中找到一个模板引擎和/或框架,让我可以使用一个模板发布网站,并通过创建子模板在同一服务器上的其他网站上重用该模板,其中我只覆盖父模板中的某些设计元素。
我寻找的是部署速度 - 哪个模板引擎(需要PHP)可以让我最快地推出额外的网站?
例如,我有不同市场、不同类别的网站要发布。因此,我将创建一个英国站点模板作为主模板,然后针对瑞典和法国市场覆盖标志和静态文本等详细信息。此外,对于不同类别(如男装与女装),我需要覆盖某些设计元素的图像和颜色(例如首页上的图片等)。
我需要推出的所有站点都基于相同的API(RESTful JSON),我需要能够轻松地集成搜索、排序和过滤表单 - 因此,模板引擎必须允许易于与变量集成...
您建议哪种解决方案符合这些要求?
6个回答

6

这是一个很好的比较 - 并回答了我对Smarty继承方面的疑虑。Twig实际上最适合这个解决方案。 - Calle

3

Simple -> Symfony

使用一个非常简单的模板引擎,因为文档非常好,所以很容易学习。


1
如果不是框架而是模板引擎,我想不到其他比Smarty更好的选择了。它易于使用且非常灵活。您可以创建一个主模板,例如main.tpl,放入一些变量,并通过为每个站点(例如index.php)分配所需值来反复重用该模板。
$smarty->assign(array(
   'PageTitle' => 'Some site title'
   'CustomContent' => $smarty->fetch('custom.tpl'); // custom for this site
));

// of course you've setup the template location at this point
$MainTemplate = $smarty->fetch('main.tpl');

$smarty->display($MainTemplate);

main.tpl 文件中,你会看到类似下面的代码:

// on main.tpl you'd have
<title>{$PageTitle}</title>
......
<body>
{$CustomContent}
</body>

只是一个想法 :)


据我所知,Smarty没有内置的json处理程序,但它支持扩展,如Smarty {json}扩展。http://jlix.net/extensions/smarty/json - tradyblix
谢谢 - 另一个问题,如果您熟悉Smarty - 它如何处理将内容翻译成多种语言? - Calle
CI已经支持Smarty了...你们在说什么呢?JSON支持?语言支持?这是一种模板语言,一种抽象出服务器端代码语言的方式,它绝对不能回答OP的问题。 - Aaria Carter-Weir
@tradyblix 哦天啊。到底怎么了?当然Smarty可以处理不同的语言。就像你自己说的,它是一种模板语言。你知道吗?PHP也可以用作模板语言。你打算如何“配置”Smarty以支持JSON?如果Smarty是从PHP脚本运行的,为什么需要JSON支持?OP的问题是:“使用一个模板发布网站,并通过创建子模板在同一服务器上的其他网站上重用该模板”,我认为不能仅仅说“使用Smarty”来回答这个问题。这就像说:“使用PHP”。 - Aaria Carter-Weir
@SkippyChalmers,@tradyblix 仅澄清一下,我的问题是关于我如何以最快的方式从模板一转到模板二(... 或十个),在具有几乎相同功能的多个站点上进行部署。如果我可以写更少的代码来与我的 JSON 响应集成,则 Smarty、CI+Template 和 CI+Smarty 解决方案均可作为我的答案。 (翻译问题与问题本身无直接关系,不影响我的最佳答案选择) - Calle
显示剩余3条评论

1
嗯,使用包和模板库“extension”设置CodeIgniter 2,并将模板文件放在单独的存储库中,为每个“子站点”加载它们作为一个包。如果您仔细定义您的区域,那应该就是您需要做的一切 :)

我已经在一个网站上安装了CI 2 - 你能给我提供更多相关信息的链接吗? - Calle
我猜你指的是这个模板库 --> 链接 - Calle
是的!就是那个。在config/autoload.php中查找包 :) - Aaria Carter-Weir

1
Zend Framework和设置不同的“站点”作为模块可能是一个很好的方法,特别是如果它们共享很多逻辑等方面。每个模块可以有一个独特的布局。
Zend Framework允许您使用MVC模式进行工作,并且可以轻松地将逻辑和呈现分离。您可以在http://framework.zend.com/找到更多信息。

1

我建议使用http://agiletoolkit.org/,原因如下:

  • 内置和集成了组件级模板。CSS框架基于jQuery UI CSS和960.gs。大多数框架处理页面级别的模板,这使得它们不太可重用。
  • 支持ajax的开箱即用表单,不同形状的过滤器以及HTML/CSS布局。UI组件可以与MVC或静态数组数据一起使用(这很容易与JSON一起使用)。大多数框架不提供表单HTML。此外,生成器通常只会将UI元素与模型集成。
  • 面向对象的组件方法从“视图对象”构建站点,您可以在多个站点之间共享这些对象并与不同的模型合并。页面也被定义为类。这意味着您可以拥有具有共同祖先和微小更改的2个页面。如果您了解OOP,则它将成为一个强大的功能。大多数框架需要单独安装,并且共享组件更加困难。此外,大多数框架需要每个页面单独的模板。
  • 该解决方案更轻量级,旨在实现高效的开发和集成。相比之下,Zend专注于组件独立性。轻量级和更快的速度是这一点的直接结果。

Agile Toolkit是开源的。

希望这些信息能够带来一些新的见解,从不同的角度看待开发。我积极地与框架合作,目前文档尚不完整且正在建设中,但是架构非常有前途,只需要了解一些PHP和面向对象编程技巧。


敏捷工具包看起来确实很有前途 - 虽然我需要一些稳定且经过验证的记录,但我会尝试atk4。期待更多文档,特别是关于如何入门和教程的内容。 - Calle
http://new.agiletoolkit.org/?page=learn/tutorial/jobeet 是一个不错的起点。我正在努力完善其他方面。我知道还有很多需要改进的地方,非常感谢任何尝试的人。 - romaninsh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接