SDL Tridion インターフェイスで公開されたオブジェクトの絶対 URL を見つける方法はありますか?
たとえば、ページを公開したときに、そのページにアクセスするための URL を見つけるにはどうすればよいですか?
SDL Tridion インターフェイスで公開されたオブジェクトの絶対 URL を見つける方法はありますか?
たとえば、ページを公開したときに、そのページにアクセスするための URL を見つけるにはどうすればよいですか?
Tridion 2011 PowerToolsには、「ステージングで開く」と「ライブで開く」の 2 つのボタンが含まれています。
C# tbb ライブラリでコードを探している場合は、ページと構造グループの PublishLocationUrl プロパティを使用できます。
StructureGroup.PublishLocationUrl または Page.PublishLocationUrl
これは、アイテムが公開されているかどうかに関係なく URL を返します。Page と StructureGroup は ReposityObject クラスを拡張するため、通常、ページが公開されているターゲットに ReposityObject が公開されているかどうかを確認するためのチェックを実行します。たとえば、次のようになります。
if (PublishEngine.IsPublished(myReposityObject, myEngine.PublishingContext.PublicationTarget))
{
// page or sg is published!
}
注: myEngine は Engine オブジェクトのインスタンスです。
コア サービスでこれを行う場合は少し異なります。以下に示すように、Page または StructureGroup オブジェクト プロパティ LocationInfo からキャストされる PublishLocationInfo オブジェクトを作成する必要があります。
PublishLocationInfo pubInfo = (PublishLocationInfo)page.LocationInfo;
return pubInfo.PublishLocationUrl;
Tridion では 1 つのページを複数のターゲット (= Web サイト) に公開できるため、これはあまり簡単ではありません。実際、ページには多数の URL が含まれている可能性があります。
ただし、最適なオプションは、ページを開いて [情報] タブをクリックすることです。ファイル パスは、\about\press\2011 のようになります。バックスラッシュをスラッシュに置き換え、ページのファイル名とファイル拡張子を追加します ([全般] タブにあります)。すべてを Web サイトのルート URL の後ろに置きます (例: http://www.mysite.com ')。
Tridion は、PublishLocationUrl プロパティで URL のパスを公開します。これには、TOM.NET API を使用するか、Internet Explorer のアドレス バーに TCMURI を入力してアイテムの生の XML を表示することでアクセスできます (例: tcm:4-264-64)。
ただし、どちらの場合も、URL のパス部分が返されるだけです。Quirijn が既に述べたように、正しいベース URL を前に付ける必要があります。
過去に、私はパブリケーション ターゲットの宛先のプロトコル スキーマを拡張することに頼りました。そこに baseURL プロパティを追加すると、イベント システム コードからこれにアクセスできます (ワークフローの承認者にリンクをメールで送信するというアイデアでした)。最近では、アプリケーション データを使用して同じことを行うことができます。