2012-07-09 54 views
0

我一直在試圖替代在OMS中是6.4的「TriggerEvent」的廢棄方法。我現在用下面的代碼得到以下錯誤。在新的DMS 6.5中。我不確定什麼是正確的新方法。OMS中的TriggerEvent不是DMS

var tracker = Sitecore.Analytics.Tracker.Visitor.CurrentVisit.CurrentPage; 
if (tracker != null) 
{ 
    string dataXml = Review_Module.sitecore_modules.Review_module.Classes 
     .AnalyticsHelper.FillDataField(new string[] 
       { 
       "Title", title, "Description", description, "Rate", rate 
       }); 

    PageEventData eventData = new PageEventData("Review"); 
    eventData.Data = dataXml; 
    VisitorDataSet.PageEventsRow pageEventsRow = Sitecore.Analytics.Tracker.CurrentPage.Register(eventData); 
    Sitecore.Analytics.Tracker.Submit(); 

錯誤

[PageEventDefinitionNotFoundException: The page event definition Review could not be found.] 
    Sitecore.Analytics.Data.DataAccess.DataSets.PagesRow.Register(PageEventData data) +170 
    Sitecore.Analytics.Data.DataAccess.DataSets.PagesRow.Register(String name, String text, String dataKey, String data) +127 
    ReviewModule.Nicam_Modules.Review_module.Controls.Review.ReviewClicked(Object sender, EventArgs e) +808 
    System.Web.UI.WebControls.LinkButton.OnClick(EventArgs e) +111 
    System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +79 
    System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10 
    System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 
    System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +175 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565 

工作守則6.4 OMS

string dataXml = Review_Module.sitecore_modules.Review_module.Classes.AnalyticsHelper.FillDataField(new string[] 
     { 
      "Title", title, "Description", description, "Rate", rate 
     }); 
     tracker.CurrentPage.TriggerEvent("Review", "Review: \"" + Sitecore.Context.Item.Name + "\"", string.Empty, dataXml); 
     tracker.Submit(); 

回答

2

好吧,我終於有機會回到這裏和更新這個帖子。我能夠在6.5中獲得這個工作。不知道他們是否要更新模塊,或者他們是否有計劃。我不得不刪除對TriggerEvent方法的調用。另外,AnalyticsTracker不再存在。它現在使用PageEventData和Sitecore.Analytics.Tracker.CurrentPage;

var tracker = Sitecore.Analytics.AnalyticsTracker.Current; 
if (tracker != null) 

{ 

string dataXml = Review_Module.sitecore_modules.Review_module.Classes.AnalyticsHelper.FillDataField(new string[] 

{"Title", title, "Description", description, "Rate", rate}); 

tracker.CurrentPage.TriggerEvent("Review", "Review: \"" + Sitecore.Context.Item.Name + "\"", string.Empty, dataXml); 
tracker.Submit(); 

} 

,取而代之的是:

var tracker = Sitecore.Analytics.Tracker.CurrentPage; 

if (tracker != null) 

{ 

string dataXml = Review_Module.sitecore_modules.Review_module.Classes.AnalyticsHelper.FillDataField(new string[] 

{ 
"Title", title, "Description", description, "Rate", rate 
}); 

PageEventData eventData = new PageEventData("Review"); 

Guid Gu = new Guid(); 

eventData.Text = "Review: \"" + Sitecore.Context.Item.Name + "\""; 
eventData.DataKey = String.Empty; 
eventData.Data = dataXml; 
eventData.ItemId = new Guid(Sitecore.Context.Item.ID.ToString()); 
Tracker.CurrentPage.Register(eventData); 
Tracker.Submit(); 
} 

此外,不得不更新公開發布給公衆UI認爲,審查的SQL。

來源:

//var sql = @"select {0}PageEvents{1}.Data from {0}PageEvents{1} inner join {0}Pages{1} on {0}PageEvents{1}.PageId = {0}Pages{1}.PageId 
//inner join {0}PageEventDefinitions{1} on {0}PageEventDefinitions{1}.PageEventDefinitionId = {0}PageEvents{1}.PageEventDefinitionId 
//where {0}Page{1}.ItemId = @itemId 
//and {0}PageEventDefinitions{1}.Name = 'Review'"; 

要:

var sql = @"select {0}PageEvents{1}.Data from {0}PageEvents{1} 
where {0}PageEvents{1}.ItemId = @itemId 
and {0}PageEvents{1}.[Text] LIKE 'Review:%'"; 

希望這有助於