1

次のコードを使用して、電子メール メッセージのさまざまな情報を視覚化しています。

   this.velocityContext.Put("args", args);
            this.velocityContext.Put("item", args.DataItem); 
            this.velocityContext.Put("processor", args.ProcessorItem);
            this.velocityContext.Put("user", Context.User); 
            this.velocityContext.Put("history", args.DataItem.State.GetWorkflow().GetHistory(args.DataItem));
            this.velocityContext.Put("state", args.DataItem.State.GetWorkflowState());
            this.velocityContext.Put("nextState", this.GetNextState(args));
            this.velocityContext.Put("site", Context.Site);
            this.velocityContext.Put("time", DateTime.Now);
            this.velocityContext.Put("previewUrl",string.Format("Http://{0}/?sc_itemid=%7b{1}%7d&sc_mode=preview",Context.Site.HostName,args.DataItem.ID.Guid));

previewUrl の値が機能していません。Context.Site.HostName は常に null です。誰かが原因を知っていますか?または、コンテンツ所有者によるレビュー/承認または拒否が必要な記事のリンクを構築する別の方法はありますか?

ありがとうございました、

4

1 に答える 1

0

コードがワークフローで実行されている場合、コードはシェルサイトコンテキストで実行されているため、探しているサイトコンテキストやホスト名は取得されません。アイテムが属するサイトを解決し、そこからホスト名を取得する必要があります。

ここからLinkHelperクラスを取得します: http ://webcmd.wordpress.com/2011/11/30/multiple-sites-with-one-authoring-domain-in-sitecore/

LinkHelperを使用して、特定のアイテムのサイトを判別します。次に、返されたSiteInfoからHostNameを取得します。

于 2012-11-13T17:51:19.317 に答える