2012-07-09 18 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:%'"; 

希望这有助于