2014-05-09 29 views
0

我知道,可以通過將Sitecore中的用戶添加到計劃中的某個特定狀態,然後在他們訪問廣告系列網址時添加它們,並在提交Web表單時添加它們對於營銷人員表單,並手動將其添加到Supervisor界面中。在參與計劃中註冊匿名用戶

此外,我知道,你可以使用API​​來添加用戶如下所述: http://briancaos.wordpress.com/2013/06/03/programming-for-sitecore-dms-engagement-plans/

然而,這種方法需要用戶名。

我想在訂閱計劃中註冊匿名用戶時,他們訪問由Sitecore中的特定模板表示的任何頁面(即來自產品模板的頁面)。這可能使用API​​嗎?

回答

1

根據Sitecore的支持,目前這是不可能的。但是,通過將jQuery AJAX調用添加到相關頁面類型使用的子層佈局的廣告系列URL,我能夠實現我想要的效果。當然,這隻適用於啓用JS的客戶端,但對我而言,這不是問題。

<script type="text/javascript">$(function() { $.get('/?sc_camp=[campaignid]'); });</script> 

編輯的2014年5月19日

我找到了一種方法通過Sitecore的API來做到這一點。這是粗糙的,需要檢查空值,異常等,但它確實工作:

string cookieVal = Request.Cookies["SC_ANALYTICS_GLOBAL_COOKIE"].Value; 
List<Guid> guids = new List<Guid>() { 
    new Guid(cookieVal) 
}; 
Guid automationStateId = new Guid("{24963AE9-1C8C-4E18-8EEE-01BC249D1F1B}"); 
Guid automationId = Sitecore.Context.Database.GetItem(new Sitecore.Data.ID(automationStateId)).ParentID.ToGuid(); 
Sitecore.Analytics.Automation.Data.AutomationManager.Provider.CreateAutomationStatesFromBulk(guids, automationId, automationStateId); 
+4

您也可以在服務器端做一些事情,將所有請求重定向到具有該模板的頁面,使其等同於添加的查詢字符串。這將消除對javascript的需求。 –

+0

這也是一個很好的建議 - 謝謝! –

+0

不錯的建議TwentyGotoTen! – Younes

1

爲了擴大對我的上述評論,以補充自己的答案,這裏的處理器,你可以添加到httpRequestBegin管道中的ItemResolver之後,以實現所需的結果。這是因爲你認爲合適的

class CampaignRedirect 
{ 
    public void Process(HttpRequestArgs args) 
    { 
     var request = HttpContext.Current.Request; 

     // must not already have the querystring in the URL   
     if(request.QueryString["sc_camp"] != null && 
      request.QueryString["sc_camp"] != "XXXXXXXX") 
      return; 

     // must have a context item 
     if(Sitecore.Context.Item == null) 
      return; 

     var item = Sitecore.Context.Item; 

     // must be the right template 
     if(item.TemplateID.ToString() != "{XXXXXXXXX-XXXX-XXXXXX}") 
      return; 

     var basicUrl = LinkManager.GetItemUrl(item); 

     var response = HttpContext.Current.Response; 

     response.Redirect(basicUrl + "?sc_camp=XXXXXXX"); 
    } 
} 

如果你不熟悉添加處理器,你可以美化一個非常基本的版本,看看here

+0

謝謝 - 這是一個很好的解決方案,不依賴於ISAPI_Rewrite或IIS URL重寫,所以它適用於那些不能/不想將這些添加到組合中的人。我不這樣做的唯一原因是我不希望將sc_camp = whatever附加到頁面的所有URL上。但是,似乎我們可以獲取DMS會話cookie及其值,並且爲處理器中的URL構建新的HTTP請求,並獲得與我的AJAX請求想法相同的結果,然後它將適用於少數人誰關閉了JS。 –

+0

當然。您的解決方案完全有效。我只是活在過去,並且總是試圖首先想出一個非JS的方式:-) –