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

Templates 如何从平面HTML文件构建细枝模板?,templates,twig,Templates,Twig,我需要创建一个主题,从外部CMS“扩展”模板 此CMS生成带有三个占位符的HTML模板: ###APPINCLUDEHEADER####:用于附加标题内容的占位符 ###APPINCLUDECONTENT###:用于“主要内容”的占位符 ###APPINCLUDEFOOTER###:用于其他页脚内容的占位符 我想抓取模板并用小树枝块替换占位符。因此,最后,我可以处理模板,因为它从一开始就是在Twig中创建的。可能吗?怎么做 另外,请注意,每次用户请求小枝模板时,都应请求外部模板,因为外部CM

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

此CMS生成带有三个占位符的HTML模板:

  • ###APPINCLUDEHEADER####:用于附加标题内容的占位符
  • ###APPINCLUDECONTENT###:用于“主要内容”的占位符
  • ###APPINCLUDEFOOTER###:用于其他页脚内容的占位符
我想抓取模板并用小树枝块替换占位符。因此,最后,我可以处理模板,因为它从一开始就是在Twig中创建的。可能吗?怎么做


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

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

php

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

layout.html.twig


据我所知,每次执行PHP时都会生成一个新文件“base.html.twig”,但这并不能解决外部模板可能随时更改的问题。渲染细枝模板时,不会重新考虑外部模板。我们可以在Twig代码中执行PHP功能吗?或者Twig函数可以完成这项工作吗?如果你每次调用我给出的php代码,你的base.html.Twig文件每次都会更新,不是吗?您最终需要禁用细枝缓存。
$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);
{% 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 %}