0

「TriggerEvent」である6.4のOMSにあった非推奨のメソッドを代用しようとしています。次のコードで次のエラーが発生します。新しい DMS 6.5 で。新しい方法が正しいかどうかはわかりません。

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();
4

2 に答える 2

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:%'";

お役に立てれば

于 2012-07-18T14:28:59.333 に答える
0

SDN で DMS の API を確認できます。注目すべきドキュメントが 2 つあります。

于 2012-07-11T15:59:10.130 に答える