0

我正在尝试从 Litmus 获取代码片段以在我的 Assemble.io 项目(HTML 电子邮件)中使用。一个典型的代码块如下所示:

<style>@media print{ #_t { background-image: url('https://0me4e2bg.emltrk.com/0me4e2bg?p&d=%%Email%%');}} div.OutlookMessageHeader {background-image:url('https://0me4e2bg.emltrk.com/0me4e2bg?f&d=%%Email%%')} table.moz-email-headers-table {background-image:url('https://0me4e2bg.emltrk.com/0me4e2bg?f&d=%%Email%%')} blockquote #_t {background-image:url('https://0me4e2bg.emltrk.com/0me4e2bg?f&d=%%Email%%')} #MailContainerBody #_t {background-image:url('https://0me4e2bg.emltrk.com/0me4e2bg?f&d=%%Email%%')}</style><div id="_t"></div>
<img src="https://0me4e2bg.emltrk.com/0me4e2bg?d=%%Email%%" width="1" height="1" border="0" />

理想情况下,我很想把整个事情都放在一个 YFM 变量中,我尝试过但没有成功。我相信解析器会卡在#、引号、花括号或上述任何组合上。我尝试将代码块包装在 ''、""、` 和 ``` 中,但都不起作用。现在我已经采用了该块的可变部分(在本例中为 0me4e2bg)并在我的 YFM 中使用了它,它运行良好,但我确信在 YFM 中使用 CSS 和 HTML 块/片段已经发生在其他人身上我很好奇是否有解决方案?只是我没有正确逃避它吗?谢谢!

编辑:尝试Anthon建议的答案后,我收到以下错误

can not read an implicit mapping pair; a colon is missed

看起来它是由@media 中的@ 触发的?

4

1 回答 1

1

YAML 中的标量不需要引号,除非它具有特殊字符,在您的情况下它确实如此。带引号的标量可以使用需要重复现有单引号的单引号,或者可以使用反斜杠转义的双引号。

如果你想要你的字符串,使用文字块引用是最好的方法,唯一有问题的是开始空格和行尾空白(即在换行符之前)。您应该能够将代码块分配给变量code,如下所示:

---
title: YAML Front Matter
description: A very simple way to add structured data to a page.
code: |
  <style>@media print{ #_t { background-image: url('https://0me4e2bg.emltrk.com/0me4e2bg?p&d=%%Email%%');}} div.OutlookMessageHeader {background-image:url('https://0me4e2bg.emltrk.com/0me4e2bg?f&d=%%Email%%')} table.moz-email-headers-table {background-image:url('https://0me4e2bg.emltrk.com/0me4e2bg?f&d=%%Email%%')} blockquote #_t {background-image:url('https://0me4e2bg.emltrk.com/0me4e2bg?f&d=%%Email%%')} #MailContainerBody #_t {background-image:url('https://0me4e2bg.emltrk.com/0me4e2bg?f&d=%%Email%%')}</style><div id="_t"></div>
  <img src="https://0me4e2bg.emltrk.com/0me4e2bg?d=%%Email%%" width="1" height="1" border="0" />
---
<h1> {{ title }} </h1>

您必须确保下的缩进code是一致的,这通常比解析字符串以转义字符更容易。

例如,您可以在线检查第一部分是有效的 YAML。

于 2015-08-13T19:31:37.963 回答