0

我正在使用Maizzle html-email 框架开发一个项目,该框架需要在最终的生产构建文件中嵌入(但被忽略)一些 php 代码,以便稍后在运行时执行。本质上,我只是希望 Maizzle 在构建过程中忽略 php 代码块。

从包含在带有标记的主模板文件中的组件文件中忽略的简化代码<component src="compname.html"></component>

...
<p>News for the Week of <rawcode class="rawcode"><?php echo $start_date ?> to <?php echo $end_date ?> from the following categories: <?php echo $cat01, $cat02, $cat03, $cat04 ?></rawcode></p>
...

来自 config.production.js 文件的代码

 posthtml: {
    plugins: [require('posthtml-custom-elements')()],
    options: {
      directives: [{ name: '?php', start: '<', end: '>' }],
    },
    expressions: {
      ignoredTag: 'rawcode'
    },
  },

只要 php 代码直接在主模板文件中,我就可以使用 Raw 标签跳过表达式解析,以及使用 posthtml-custom-elements 指令将 posthtml-custom-elements 指令添加到我的配置文件中。 Maizzle 文档中显示的示例以跳过忽略 php 代码。

问题:但是,如果 php 代码在我的模板文件中包含的组件文件中,我无法让它工作。运行“maizzle 生产构建”后,组件文件中的任何 php 代码都会被完全删除。

我希望有人可以提供解决方案,或者这只是 Maizzle 工作方式的限制。

4

1 回答 1

0

更新

这已在 Maizzle v3.1.6中修复。


马克,我认为这可能是我们在 Maizzle 中用于组件功能的posthtml-modules插件的问题。

具体来说,它的processWithPostHtml方法不会将任何选项传递给 PostHTML 渲染,因此您posthtml在 Maizzle 中的配置config.js不会被继承/传递。这可以解释为什么它在组件之外工作。

我需要与 PostHTML 团队确认这一点;希望这是一个简单的修复posthtml-modules,我们可以将用户的 PostHTML 选项从 Maizzle 配置自动传递给它。

在 Maizzle 中为此创建了一个问题,一旦我们找到解决方案,我将在这两个地方更新我的回复

PS:您不需要<raw>标签或posthtml-custom-elements插件来呈现 PHP 代码,如果不将它们用于其他目的,您可以安全地删除它们。

于 2021-03-03T17:16:25.037 回答