10

良い一日!

私は、コンテンツ エディターが CSS を非常に基本的なコンポーネント (通常は貼り付け先の「コード」と呼ばれる単一の複数行フィールドを含む) として保存できるようにし、これらをコンポーネント プレゼンテーションとして .css ファイル拡張子を持つページに追加します。ページを作成するとき、ユーザーはいくつかの構成値を設定できます: 出力の縮小 (bool)、ファイル名のプレフィックス、およびファイル名のサフィックス。最後の 2 つの目的は、ユーザーが CSS を縮小することを選択した場合、プレゼンテーション サーバー上でファイル名が異なる可能性があることです。

ファイル名の変更を除いて、すべてが機能しています。CM でファイル名を変更したくありません。プレゼンテーション サーバー上にある場合のみ。これは、CSS ページ テンプレートに配置された TBB で実行できると思います。私はそれにひびを入れましたが、私が見逃しているものがないことを確認したい. 次の例は、簡潔にするためにいくつかの構成可能な値をハードコードした省略形です。

// Create a reference to the Page object in the package.
Page page = this.GetPage();

// Retrieve a reference to the page's file name.
string currentFileName = Utilities.GetFilename(page.FileName);

// Set the published file name on its way out the door.
page.FileName = currentFileName + "_min";

// ???
// Profit.
4

3 に答える 3

6

@Dylan の応答に対する回答を読んで、最小化されたコードの出力を含むバイナリ バリアントを公開時に作成することを検討してください。

.AddBinary()最も単純な形式では、ページの出力でテキスト ファイルを作成し、ファイルの内容、ファイル名、バリアント名 (これにはページ URI をお勧めします)、現在の StructureGroup の URI を指定して呼び出します。これもバインドするコンポーネントの URI (おそらくページ上のコンポーネント)。

ここの Mihai のブログで、いくつかのバイナリ バリアントの例を見ることができます。

Binary binary = m_Engine.PublishingContext.RenderedItem.AddBinary(
    resizedStream, newFilename, variantId, mmc,
    binaryContent.MultimediaType.MimeType);

これにより、実際のページに加えて、ページの出力を含むファイルが公開されます。ページを非公開にすると、余分なファイルも非公開になります。

于 2012-11-08T23:44:42.297 に答える
6

Tridion Content Broker を使用せずに、静的パブリッシングのみを行っていると想定しています。

新しい TOM.NET ベースの Tridion Event System を使用してこれを実行し、Initiated フェーズで Publishing イベントにサブスクライブできるはずです。これは、ページの公開が開始される直前に、イベントをキャッチしてページのファイル名を変更することを意味します。ただし、これにより、CME でページに新しい名前が付けられます。この場合も、パブリッシュ トランザクションが通過した後に別のイベント フェーズである TransactionCommitted フェーズを使用して、ページの名前を元に戻すことができます。

これを行うために、ページの名前を変更するカスタム デプロイヤー拡張機能を作成することもできます。ただし、名前が変更されたページの「非公開」を管理するためのコードも必要になります。Deployer 拡張機能の作成方法については、Jaime のブログ投稿 ( http://sdltridionworld.com/articles/sdltridion2011/tutorials/Deployer_Extensions_With_Eclipse_1.aspx ) を参照してください。

于 2012-11-08T19:05:26.150 に答える
2

CMでファイル名を変更せず、外部で変更するコンテキスト/理由を理解せずに、最も適切な答えを提供することは困難です...通常は、単に2つのページを管理することをお勧めしますか?

あなたが調査できる他のオプションがあります...

Content Deployer 拡張機能。

ニックが提案するイベントシステム。

上記の両方について、非公開への影響も考慮する必要があります。

ファイルがパブリッシュされるのをサーバー側のシンプルなアプリで監視し、それを (Tridion パブリッシュされたファイルである) ファイルの {renamed} バージョンにコピーすることができます (Chris は、ここで同様のことを議論しています .NET を使用して Deployer をカスタマイズできますか? ) 。 ) - コンテンツ デプロイヤの Java コーディングを避けたい場合はさらに。

于 2012-11-08T20:02:41.533 に答える