[也適用於v8]{class="badge positive" title="亦適用於Campaign v8"}

前置處理指示 pre-processing-instructions

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

附註僅適用於傳遞內容的內容。 這是編寫電子郵件URL的指令碼且仍對其進行追蹤的唯一方法(除了URL引數以外)。 在偵測要追蹤的連結之前,可將連結視為在傳遞分析期間套用的自動複製/貼上。

有三種型別的指示:

  • include:主要用於分解選項、個人化區塊、外部檔案或頁面中的某些程式碼。 了解更多
  • value:授與傳遞欄位、傳遞變數以及傳遞中載入的自訂物件的存取權。 了解更多
  • foreach:重複載入為自訂物件的陣列。 了解更多

可直接從傳遞精靈中測試這些變數。 註解會套用於內容預覽,以及當您按一下追蹤按鈕以檢視URL清單時。

include include

最常使用的範例如下:

  • 包含映象頁面連結:

    code language-none
    <%@ include view="MirrorPage" %>
    
  • 映象頁面URL:

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

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

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

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

value value

此指示可讓您存取所有收件者均恆定的傳遞引數。

語法:

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

其中:

  • object:物件的名稱(例如:傳遞、提供者等)。
    物件可以是:

    • delivery:針對目前的傳遞(請參閱以下子段落中的詳細資訊和限制)。
    • provider:適用於目前的傳遞提供者/路由(nms:externalAccount)。
    • 額外的指令碼物件:如果物件是透過​ 屬性 > Personalization > 在執行內容中新增物件,載入到內容中。
    • foreach回圈的專案:請參閱下方的Foreach區段。
  • xpath:欄位的xpath。

  • index (選擇性):如果​ object ​是陣列(用於額外的指令碼物件),則陣列中的專案索引(從0開始)。

delivery物件  delivery-object

針對電子郵件個人化,傳遞物件提供兩種存取方式:

  • 使用JavaScript:

    code language-none
    <%= delivery.myField %>`.
    

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

  • 使用預先處理:

    code language-none
    <%@ value object="delivery"
    

警告

如果您對透過中間來源傳送的傳遞使用以下指示,則必須在行銷和中間來源平台上將自訂欄位​ @myCustomField ​新增到nms:delivery結構描述:

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

對於傳送引數/變數,請使用下列語法(使用傳送物件):

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

Javascript區段中的value value-in-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

此指示允許載入傳遞中的物件陣列上的反複專案追蹤與物件相關的個別連結。

語法:

<%@ 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函式。

    code language-none
    <%@ 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. 呼叫函式以顯示文章。

    code language-none
    <%
    for(var i=0; i<recipient.rcpArticle.length; i++ )
    {
     displayArticle(recipient.rcpArticle[i].article.@id)
    }
    %>
    
recommendation-more-help
601d79c3-e613-4db3-889a-ae959cd9e3e1