2

異なるPageTypeの2つのリスト(NewsItemsとPressReleases)があります。それらは、個々のアイテムへのリンクとともに、それぞれ1つのリストに表示されます。

次に、プレスリリース項目をニュースリストに含め、ニュース項目のスタイルを使用してそれらをニュース項目として表示したいと思います。これらは、ニューステンプレートで使用される「Heading」や「BodyText」などのプロパティを共有します。

NewsItemsのListPageに両方のページセットをフィードするのはそれほど難しいことではないと思いますが、アイテムページのレンダリングを制御する方法がわかりません。

NewsItemまたはPressReleaseItemからPageDataオブジェクトを取得し、NewsListで選択されている場合は、News-Item.aspxテンプレートを使用して表示したいと思います。ただし、EPiServerは、PageType設定で結合されているため、常にPR-Item.aspxを使用してPressReleaseItemをレンダリングします。

誰もがこれを達成する方法を知っていますか?

編集:明確にするための努力:

重要な問題は、「リストの親」をどのように知り、そこから適切なテンプレートを選択するかです。ListPageでは、トンパイプの回答を使用してPRアイテムとニュースアイテムにそれぞれ異なる外観を適用できますが、個々のアイテムを表示するように選択すると、EPiは「リストの親」に関係なくPR-Item-1を同じようにレンダリングします。それが問題です。

コンセプチュアルデザイン

4

3 に答える 3

2

私はあなたがここで試みていることを正確にフォローしていません。しかし、私はそれの要点を理解していると思います。

両方のページタイプに1つのaspxテンプレートを使用しないのはなぜですか。ただし、コードビハインドでは、visible属性を使用してセクションをオフにします。

PageTypeBuilderを使用している場合は、「is」キーワードを使用できます。

somePlaceHolder.Visible = CurrentPage is NewsItemList;

PTBを使用していない場合は、次のようなものを使用できます。

somePlaceholder.Visble = CurrentPage.PageTypeID == 10;

また

somePlaceholder.Visble = CurrentPage.PageTypeName == "NewsItemList";

ここで、私は何もハードコーディングするのが好きではないことを指摘します。そのため、テンプレート名、IDを構成ファイルに配置するか、スタート/ルートページのプロパティをハードコーディングしないようにします。

これが役立つかどうか、または私が誤解している場合は、問題について詳しく説明してみてください。

于 2011-11-23T12:40:16.453 に答える
1

テンプレートが共有する量に応じて、ユーザーコントロール、プレースホルダー、またはさまざまなマスターページを使用して、適切な方法でビューを切り替えることができます。

いつ切り替えるかを知るには、クエリ文字列パラメーター、セッション変数、または最も見栄えの良い方法を使用して、HTTPリファラーによってリストのPageDataオブジェクトを検索して取得することができます。空の場合、最悪の場合としてプレスリリースのレンダリングが表示されます。

于 2011-11-23T15:57:34.377 に答える
0

リストリンクのPRアイテムへのクエリ文字列の追加、アイテムテンプレートの参照URLの取得、PRアイテムからのニュースアイテムの自動公開のためのさまざまなタイプのイベントフックなど、多くのソリューションを試しました(ただし、見ただけですが)その1つのコードサンプルで)、そして最終的に、それらはすべて、私にそのように行かないように指示する何かを持っているという結論に達しました。(コードを複雑にしすぎたり、マークアップロジックを理解しにくくしたりするなど)

Fetch data from another EPiServer page使用して、ニュースアイテムのベースとして使用するPRアイテムを編集者に選択させる「ショートカットページタイプ」を作成することになりました。

このショートカットページタイプは「PR-as-news-itemPage」と呼ばれ、通常のニュースアイテムと同じaspxでレンダリングされます:News-Item.aspx。独自のプロパティがないため、「フェッチ...」で選択したPRアイテムからすべての関連データを取得します。

すべてのプロパティを含むPRアイテムをレンダリングするために、PR-Item.aspxという通常の新しいページタイプを作成しました。これにより、「属性2」プロパティがレンダリングされます。これは、PR-item.aspxによってのみレンダリングされ、News-Item.aspxによってはレンダリングされません。

(編集者に古いNews-Itemページタイプを使用させ、そこで「Fetch ...」プロパティを使用させることで、さらに簡単にすることもできますが、そのページタイプには、作成したくない必須のプロパティがいくつかあります。このためのオプションです。)

于 2011-11-28T09:48:48.973 に答える