【问题标题】:Fastest PHP template engine (or framework) supporting inheritance for multiple sites支持多个站点继承的最快的 PHP 模板引擎(或框架)
【发布时间】:2011-05-18 07:50:08
【问题描述】:

我需要在 PHP 中找到一个模板引擎和/或框架,让我可以使用一个模板发布一个网站,并通过制作一个子模板在同一服务器上的其他网站上重用该模板,我只覆盖某些设计来自父模板的元素。

我正在寻找的是部署速度 - 我可以使用哪个模板引擎(需要 PHP)以最快的速度获得其他网站?

例如,我有针对不同市场、不同类别的网站。因此,我将创建一个作为主模板的英国站点模板,然后覆盖瑞典和法国市场的徽标和静态文本等细节。此外,对于不同的类别(例如男士时尚与女士时尚),我需要覆盖某些设计元素(例如首页上的图片等)的图像和颜色。

我需要启动的所有网站都基于相同的 API(RESTful JSON),并且我需要能够轻松集成用于搜索、排序和过滤的表单 - 因此模板引擎必须允许轻松与变量集成...

您会建议哪种解决方案符合这些要求?

【问题讨论】:

    标签: php frameworks template-engine


    【解决方案1】:

    您也可以查看Twig。以下是有关它的更多信息以及它与其他的比较:http://fabien.potencier.org/article/34/templating-engines-in-php

    【讨论】:

    • 这是一个很好的比较——回答了我对继承的疑问。 Twig 实际上最适合这个解决方案。
    【解决方案2】:

    简单 -> Symfony

    使用非常简单的模板引擎 - 并且易于学习,因为他们的文档非常棒

    【讨论】:

      【解决方案3】:

      嗯。使用包和模板库“扩展”设置 codeigniter 2,将模板文件放在单独的存储库中,并将它们作为每个“子站点”的包加载。如果您仔细定义您的区域,这应该是您需要做的所有事情:)

      【讨论】:

      • 我已经在一个站点上安装了 CI 2 - 您能否给我一个链接以获取更多相关信息?
      • 我猜你指的是这个模板库 --> link
      • 是的!就是那个。在 config/autoload.php 中查找包:)
      【解决方案4】:

      如果不是框架而是模板引擎,除了使用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} 扩展之类的扩展。 jlix.net/extensions/smarty/json
      • 谢谢 - 另一个问题,如果你熟悉 Smarty - 它是如何处理将内容翻译成多种语言的?
      • 基于使用它我会说它处理得很好。我曾在使用不同语言(日语、中文、俄语、韩语等)的网站上工作过,尽管内容当然来自我们的数据库并且只提供给 Smarty,但它仍然可以毫无问题地呈现字符串。如果您使用的是 PHP gettext,Smarty 中有一个插件可以让您使用它,例如{t}Term{/t} 将根据您当前的 PHP 语言环境进行翻译。
      • 太棒了!我会试试 Smarty。
      • CI 已经支持 smarty...你们到底在干什么?支持 JSON 吗?语言支持?这是一种模板化语言,一种从服务器端代码语言中抽象出来的方法,它绝对不能回答 OP 的问题。
      【解决方案5】:

      Zend 框架和将不同的“站点”设置为模块可能是一个好方法,如果它们共享大量逻辑等。每个模块都可以有一个独特的布局。

      Zend Framework 允许您使用 MVC 模式工作,并且可以轻松地分离逻辑和表示。您可以在http://framework.zend.com/找到更多信息

      【讨论】:

        【解决方案6】:

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

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

        Agile Toolkit 是开源的。

        我希望这些信息可以带来一些新的见解,并从不同的角度看待发展。我积极使用该框架,目前文档不完整,正在建设中,但该架构非常有前途,只需要了解一些 PHP 和面向对象的编程技能。

        【讨论】:

        • Agile Toolkit 看起来确实很有希望——尽管需要具有稳定且经过验证的记录的东西,但我会尝试使用 atk4。期待更多文档,尤其是关于如何入门和教程的文档。
        • new.agiletoolkit.org/?page=learn/tutorial/jobeet 现在是一个好的开始。在其他所有事情上都非常努力。我知道它需要改进,感谢任何尝试它的人。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多