預處理指令

您可以在傳送內容中使用特定語法,以新增指示並編寫追蹤電子郵件的URL指令碼。 <%@指示不是JavaScript:此語法是Adobe Campaign專屬的。

它們只適用於傳送內容的內容。 這是指令碼編寫電子郵件URL且仍會加以追蹤(除了URL參數以外)的唯一方法。 在偵測要追蹤的連結之前,它們可視為在傳送分析期間套用的自動複製/貼上。

指示有三種類型:

  • include:主要用於將選項、個人化區塊、外部檔案或頁面中的某些程式碼分成因素。 了解更多
  • value:提供傳送、傳送變數和傳送中載入之自訂物件的欄位存取權。 了解更多
  • foreach:以循環載入為自訂物件的陣列。 了解更多

可直接從傳遞精靈測試。 它們會套用在內容預覽中,當您按一下追蹤按鈕以查看URL清單時。

include

下列範例是最常使用的範例之一:

  • 包括鏡像頁面連結:

    <%@ include view="MirrorPage" %>  
    
  • 鏡像頁面URL:

    View as a <a href="<%@ include view='MirrorPageUrl' %>" _label="Mirror Page" _type="mirrorPage">web page.
    
  • 現成可用的取消訂閱url:

    <%@ include option='NmsServer_URL' %>/webApp/unsub?id=<%= escapeUrl(recipient.cryptedId)%>
    
  • 其他範例:

    <%@ include file='http://www.google.com' %>
    <%@ include file='file:///X:/france/service/test.html' %>
    <%@ include option='NmsServer_URL' %>
    

    使用傳遞精靈中的個人化按鈕來取得正確語法。

value

此指示可讓所有收件者存取固定的傳送參數。

語法:

<%@ value object="myObject" xpath="@myField" index="1" %>

其中:

  • object:物件名稱(範例:傳送、提供者等)。
    物件可以是:
    • delivery:(請參閱下文小節中的詳細資訊和限制)。
    • provider:(nms:externalAccount)。
    • 額外的指令碼物件:如果物件是透過以下項目載入內容: 屬性 > 個人化 > 在執行上下文中添加對象.
    • 前循環項:請參閱 福雷阿 一節。
  • xpath:欄位的xpath。
  • index (可選):if object 是陣列(用於其他指令碼對象),陣列中的項目索引(從0開始)。

delivery 物件 

對於電子郵件個人化,可透過兩種方式存取傳送物件:

  • 使用JavaScript:

    <%= delivery.myField %>`.
    

    在JavaScript物件傳送自訂欄位中不受支援。 它們可在預覽中運作,但在MTA中則無法運作,因為MTA只能存取現成可用的傳送結構。

  • 使用預先處理:

    <%@ value object="delivery"
    

注意

如果您對透過中間來源傳送的傳送使用下列指示,則自訂欄位 @myCustomField 必須在行銷和中間來源平台上新增至nms:delivery schema:

<%@ value object="delivery" xpath="@myCustomField" %>

若是傳送參數/變數,請使用下列語法(使用傳送物件):

<%@ value object="delivery" xpath="variables/var[@name='myVar']/@stringValue" %>

value 在Javascript區段中

若要允許在Javascript區段中使用<%@值,兩個特殊物件會取代為<%和%>:

<%@ value object='startScript' %>
<%@ value object='endScript' %>

例如:

<%@ value object='startScript' %> var iMode = <%@ value object="delivery" xpath="@deliveryMode" %> if(iMode == 1) { ... } else { ... }`
`<%@ value object='endScript' %> is expanded in something like <% var iMode = 1 if(iMode == 1) { ... } else { ... } %>.

foreach

此指示允許在傳送中載入的物件陣列上進行迭代,以追蹤與物件相關的個別連結。

語法:

<%@ foreach object="myObject" xpath="myLink" index="3" item="myItem" %> <%@ end %>

其中:

  • object:要開始的物件名稱,通常是額外的指令碼物件,但可以是傳送。
  • xpath (可選):要循環的集合的xpath。 預設值為「。」,表示物件是要循環的陣列。
  • index (可選):如果xpath不是"" 而對象是陣列本身,是對象的項索引(從0開始)。
  • item (可選):可在foreach循環內以<%@值訪問的新對象的名稱。 預設為架構中的連結名稱。

範例:

在傳送屬性/個人化中,載入一系列文章以及收件者與文章之間的關係表格。

只要使用Javascript即可顯示這些文章的連結,如下所示:

<%
  for(var i=0; i<recipient.rcpArticle.length; i++ )
  {
    %><a href="http://nl.net?a.jsp?article=<%=recipient.rcpArticle[i].article.@id%>">article</a><%
  }
%>

透過該解決方案,所有文章的連結都可不受區分地受到追蹤。 您可以知道收件者已點按文章連結,但您無法知道要點擊哪篇文章。

解決方案是:

  1. 將所有可能的文章預先載入至傳送的額外指令碼陣列 — articleList[] — 這表示可能的文章數量必須有限。

  2. 在內容開頭撰寫JavaScript函式。

    <%@ value object='startScript' %>
    function displayArticle(articleId)
    {
      <%@ foreach object="articleList" item="article" %>
        if( articleId == <% value object="article" xpath="@id" %> ) 
        {
          <%@ value object='endScript' %>
            <a href="http://nl.net?a.jsp?article=<%@ value object="article" xpath="@id" %>">article</a>
          <%@ value object='startScript' %>
        } 
      <%@ end @%>
    }
    <%@ value object='endScript' %>
    
  3. 呼叫函式以顯示文章。

    <%
    for(var i=0; i<recipient.rcpArticle.length; i++ )
    {
     displayArticle(recipient.rcpArticle[i].article.@id)
    }
    %>
    

本頁內容