如何从平面HTML文件构建树枝模板?

时间:2015-10-30 10:17:59

标签: templates twig

我需要创建一个从外部CMS“扩展”模板的主题。

此CMS生成一个包含三个占位符的HTML模板:

  • ### APPINCLUDEHEADER ###:其他标题内容的占位符。
  • ### APPINCLUDECONTENT ###:“主要内容”的占位符。
  • ### APPINCLUDEFOOTER ###:其他页脚内容的占位符。

我想获取模板并用Twig块替换占位符。所以,最后,我可以处理模板,因为它是从一开始就在Twig中创建的。可能吗?怎么样?

另请注意,每次用户请求Twig模板时都应该请求外部模板,因为外部CMS内容可能随时更改。

1 个答案:

答案 0 :(得分:0)

您可以通过用树枝块替换占位符来完成这项工作:

PHP

$contents = file_get_contents("http://example.com/cms/template.html");
$contents = str_replace("###APPINCLUDEHEADER###", "{% block header %}{% endblock %}", $contents);
$contents = str_replace("###APPINCLUDECONTENT###", "{% block content %}{% endblock %}", $contents);
$contents = str_replace("###APPINCLUDEFOOTER###", "{% block footer %}{% endblock %}", $contents);
file_put_contents("base.html.twig", $contents);

然后在渲染视图中,您可以使用:

layout.html.twig

{% extends "base.html.twig" %}

{% block header %}
  {# your site's header #}
{% endblock %}

{% block content %}
  {# your site's body #}
{% endblock %}

{% block footer %}
  {# your site's footer #}
{% endblock %}