【问题标题】:How to put placeholders for dynamic contents in html email?如何在html电子邮件中放置动态内容的占位符?
【发布时间】:2018-12-05 11:58:00
【问题描述】:

我有一个 fiddle(基本上是一个 html 电子邮件),我按照特定的设计复制了它。

在 html 邮件中,有一些动态内容我想在其中放置占位符,因为它会因不同的客户而变化。

我使用动态内容的小提琴中的 html 代码的 sn-ps 是:

<tr>
   <td>
      <table cellpadding="0" cellspacing="0" border="0" width="100%" style="font-size:20px; padding-right: 23%;">
         <tr>
            <td style="padding-bottom: 3%;text-align:right;">type:</td>
            <td style="padding-bottom: 3%;padding-left: 10%;">availability check request</td>
         </tr>
         <tr>
            <td style="padding-bottom: 3%;text-align:right;">estimated total:</td>
            <td style="padding-bottom: 3%;padding-left: 10%;">$250.00</td>
         </tr>
         <tr>
            <td style="padding-bottom: 3%;text-align:right;">what</td>
            <td style="padding-bottom: 3%;padding-left: 10%;">Radio</td>
         </tr>
         <tr>
            <td style="padding-bottom: 3%;text-align:right;">how many</td>
            <td style="padding-bottom: 3%;padding-left: 10%;">2</td>
         </tr>
         <tr>
            <td style="padding-bottom: 3%;text-align:right;">when:</td>
            <td style="padding-bottom: 3%;padding-left: 10%;word-wrap: break-word;
               width: 300px;">March 28/18 @ 7:00pm to March 30/18 @ 7:00pm</td>
         </tr>
         <tr>
            <td style="padding-bottom: 3%;text-align:right;">who:</td>
            <td style="padding-bottom: 3%;padding-left: 10%;color:#FF8D58;">Mike</td>
         </tr>
      </table>
   </td>
</tr>



问题陈述:

我想知道如何在上面使用动态内容的 html 代码中放置一个占位符,例如 $250.00Radio2March 28/18 @ 7:00pm to March 30/18 @ 7:00pm

【问题讨论】:

  • 如何填充模板?例如,数据从哪里/如何提供给模板?
  • @ChaseIngebritson 我会尽快回复您。此刻,我不确定。有没有我们可以先放这个占位符,以后再根据需要改?
  • @ChaseIngebritson 我刚刚想通了。我们正在从 Laravel Blade 中填充数据,它本身就是一个模板。
  • 我添加了一个 Laravel Blade 示例。这可能并不完全准确,因为我以前从未使用过 Laravel,但应该可以帮助您实现目标。

标签: html css laravel html-email laravel-blade


【解决方案1】:

您可以采取的一种方法是使用template engine。使用此解决方案,您可以将要替换的每个项目替换为通用标签。在我包含的示例中,这个标签就是{{...}}

完成此操作后,您将向模板引擎提供新创建的模板。然后,引擎将通过将每个标签替换为相关数据来处理您的模板。

/* It was a little hard to read with all of the inline CSS */

table {
  font-size: 20px;
  padding-right: 23%;
}

table tr td {
  padding-bottom: 3%;
}

table tr td:first-child {
  text-align: right;
}

table tr td:last-child {
  padding-left: 10%;
}
<table cellpadding="0" cellspacing="0" border="0" width="100%">
  <tr>
    <td>type:</td>
    <td>{{type}}</td>
  </tr>
  <tr>
    <td>estimated total:</td>
    <td>${{total}}</td>
  </tr>
  <tr>
    <td>what</td>
    <td>{{what}}</td>
  </tr>
  <tr>
    <td>how many</td>
    <td>{{count}}</td>
  </tr>
  <tr>
    <td>when:</td>
    <td style="word-wrap: break-word;
               width: 300px;">{{date_from}} to {{date_to}}</td>
  </tr>
  <tr>
    <td>who:</td>
    <td style="color:#FF8D58;">{{name}}</td>
  </tr>
</table>

那么,如果您要向模板提供以下数据...

let data = [
    {
        id: 123, // A "key" for the user to have a way to reference the data
        name: "Mike",
        type: "availability check request",
        total: 250.00,
        what: "Radio",
        count: 2,
        date_from: new Date(3-28-2018),
        date_to: new Date(3-30-2018)
    }
];

...与您提供的表格相似的表格将在处理模板后生成。

这显然是非常笼​​统的,不能适用于所有场景,但应该回答你的问题。随时更新您的帖子或评论,提供更多信息,我会尝试更新以匹配您的示例。


编辑:

为了在 Laravel Blade 中实现同样的功能,我们必须创建一个 [FILE NAME].blade.php 文件。这将是包含我们模板的文件。 Laravel 在their Templates page 上有很多与语法相关的文档。这应该是对之前模板的粗略翻译。

<table cellpadding="0" cellspacing="0" border="0" width="100%">
  <tr>
    <td>type:</td>
    <td>{{ $type }}</td>
  </tr>
  <tr>
    <td>estimated total:</td>
    <td>${{ $total }}</td>
  </tr>
  <tr>
    <td>what</td>
    <td>{{ $what }}</td>
  </tr>
  <tr>
    <td>how many</td>
    <td>{{ $count }}</td>
  </tr>
  <tr>
    <td>when:</td>
    <td style="word-wrap: break-word;
               width: 300px;">{{ date("F j/s @ g:ia", $dateFrom) }} to {{ date("F j/s @ g:ia", $dateTo) }}</td>
  </tr>
  <tr>
    <td>who:</td>
    <td style="color:#FF8D58;">{{ $name }}</td>
  </tr>
</table>

{{ date("F j/s @ g:ia", $date) }} 函数采用给定的时间戳并将其格式化为给定的格式。文档可以在here 找到,但很简单:

  • F:3 月 28/18 @ 7:00pm
  • j:3 月 28/18 @ 7:00pm
  • s:3 月 28 日/18 @ 7:00pm
  • g:2018 年 3 月 28 日@7:00pm
  • 我:2018 年 3 月 28 日 @ 7:00pm
  • 答:2018 年 3 月 28 日 @ 7:00pm

【讨论】:

  • 你能解释一下这个{{ date("F j/s @ g:ia", $date) }}吗?
  • 我会把它添加到帖子中。同时,php date()函数的文档可以在here找到。
  • @user5447339 很抱歉,我没有看到您同时拥有 from date。我已经更新了每个相关部分的帖子,现在应该更清楚了。
  • 我已接受您的回答。我想知道您是否有任何 html 电子邮件的经验。我有一个类似的question 与 html 电子邮件相关。我想知道你是否可以看看它。
  • 我想知道我们是否可以为 html 电子邮件使用填充。对前景有用吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-10
  • 2020-06-01
  • 2014-06-02
  • 2019-04-25
  • 2013-03-14
  • 1970-01-01
  • 2012-05-01
相关资源
最近更新 更多