2011-07-21 11 views
1

Liferay EE 6.0 SP1を搭載したサイト用のポートレットを構築しています。これは、ユーザーが現在見ているコンテンツで。Liferay 6の特定のWebコンテンツ記事を「含む」ページにリンクする

たとえば、ユーザーが、Webコンテンツ第5章を表示しているWebコンテンツ表示ポートレットを含むページ上にあるとします。私のポートレットには、Webコンテンツ記事6および7を表示できるページへのHTMLリンクが含まれますWebコンテンツ5のコンテンツに類似すると判断されたコンテンツを含む)。

Webコンテンツの記事6と7へのHTMLリンクをポートレットに表示させたくないため(このような概念が有効であると仮定して)、私のポートレットにリンクを表示するようにします。これらの項目はと表示されます(つまり、Webコンテンツ表示ポートレットを含むページへのリンクは、Webコンテンツ記事を表示するように構成されています)。

する方法があります:

  • は、私がかつてのを持っている場合、私は後者を取得できるように、ページとWebコンテンツの記事を関連付けますか?
  • Webコンテンツ記事を表示するポートレットを含むページを特定しますか?

また、特定のページに関連付けられたすべてのポートレット・インスタンスを取得する方法がある場合は、解決策にもつながる可能性があります。

答えて

0

この問題の1つのアプローチは、Webコンテンツ記事の構造に「ページへのリンク」コントロールを追加することです。コンテンツマネージャはこれを使用して、Webコンテンツの記事とページとの間に多対1の関係を作成できます。

しかし、Webコンテンツの編集時に選択されているページが制約されていないため、この解決策には問題があります。

たとえば、コンテンツマネージャは、「Our History」と題するWebコンテンツ記事を作成することができますが、その記事の「Link to Page」コントロールの値として「Products」ページを指定することがあります。関連コンテンツポートレットが「Our History」記事をレンダリングすると、「Products」ページへのハイパーリンクが作成されます。このページでは、「Our History」記事はどこにも表示されません。

おそらく、これは機能と見なすことができますが、おそらくこれを行うより良い方法があります。

+0

これを受け入れられた回答としてマークします。これは私たちが最終的に行った解決策です。 –

0

これはLiferayにはまだ存在しない機能です。少なくともLiferayページには、全く同じトピックにfeature requestがあります。ディスカッションの日付は2011年3月ですので、すぐに何かが来るでしょう:)

0

私たちが現在検討しているもう一つの解決策は、ポータルのカスタム表示モードを作成することです( "VIEW"、 "PRINT"など)。 ) "XML"と呼ばれる。ポータルは、ブラウザがXMLモードを要求していることを検出すると(how Sitecore detects which device to useと同様)、テーマをバイパスし、このXMLモードをサポートするすべてのポートレットはXML形式でコンテンツをレンダリングします。

出力は次のようになります:

<?xml version="1.0" encoding="utf-8" ?> 
<portal> 
    <portlet id="..." title="..." ...> 
    <JournalArticle> 
     <uuid_>...</uuid_> 
     ... 
    </JournalArticle> 
    ... 
    </portlet> 
</portal> 

定期的なプロセスは、XMLモードでサイトをクロールし、Luceneインデックスを更新します。

このアプローチの明らかな問題は、サイトで使用するすべてのポートレットをカスタム開発する必要があることです。いろいろな理由で(いくつかは過度に意欲的な創造的な部署と呼ばれますが、私はこれをかなり不十分な既存の機能セットと呼んでいます)、とにかくこのルートに行く必要が生じる可能性があります。

関連する問題