Ссылка на страницу, содержащую определенную статью веб-контента в Liferay 6

Я создаю портлет для сайта на базе Liferay EE 6.0 SP1, который будет предлагать связанный или иным образом интересный контент в зависимости от того, что в данный момент просматривает пользователь.

Например, предположим, что пользователь находится на Странице, которая содержит портлет Отображение веб-содержимого, отображающий статью 5 веб-содержимого. Мой портлет будет содержать HTML-ссылки на страницы, на которых пользователь может просмотреть статьи 6 и 7 веб-содержимого (которые содержат содержимое, определяется как подобное содержанию в веб-содержимом 5).

Проблема возникает потому, что я не хочу, чтобы мой портлет отображал HTML-ссылки на статьи веб-контента 6 и 7 (при условии, что такая концепция вообще действительна), я хочу, чтобы мой портлет отображал ссылки на страницы, на которых находятся эти элементы. отображаются (т. е. ссылки на страницы, содержащие портлеты отображения веб-содержимого, сконфигурированные для отображения этих статей веб-содержимого).

Есть ли способ:

  • Связать статью веб-контента со страницей, чтобы, если у меня есть первая, я мог получить вторую?
  • Или определить страницы, которые содержат портлеты, отображающие статью веб-контента?

В качестве альтернативы, если бы существовал способ получить все экземпляры портлета, связанные с определенной страницей, это также могло бы привести к решению.


person Community    schedule 21.07.2011    source источник


Ответы (3)


Одним из подходов к решению этой проблемы является добавление элемента управления «Ссылка на страницу» в структуру статьи веб-контента. Контент-менеджеры могут использовать это для создания отношений «многие к одному» между статьями веб-контента и страницами.

Однако это решение проблематично, поскольку нет ограничений на выбор страницы при редактировании веб-контента.

Например, контент-менеджер может создать статью веб-содержимого под названием «Наша история», но указать страницу «Продукты» в качестве значения элемента управления «Ссылка на страницу» этой статьи. Когда портлет связанного содержимого отображает статью «Наша история», он создает гиперссылку на страницу «Продукты», которая в этом случае нигде не отображает статью «Наша история».

Возможно, это можно считать функцией, но, возможно, есть лучший способ сделать это.

person Community    schedule 03.08.2011
comment
Отметив это как принятый ответ, так как это решение, которое мы в конечном итоге выбрали. - person ; 02.08.2012

Боюсь, этой функции еще нет в Liferay. По крайней мере на страницах Liferay есть запрос функции та же тема. Даты обсуждения - март 2011 года, так что, возможно, скоро что-то будет :)

person mico    schedule 05.08.2011

Еще одно решение, которое мы рассматриваем в настоящее время, — это создание пользовательского режима просмотра для портала (т. е. «ПРОСМОТР», «ПЕЧАТЬ» и т. д.) под названием «XML». Когда портал обнаруживает, что браузер запрашивает режим XML (аналогично как Sitecore определяет, какое устройство использовать), он обходит тему, и все портлеты, поддерживающие этот режим XML, будут отображать свое содержимое в формате XML.

Вывод может выглядеть примерно так:

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

Затем периодический процесс будет сканировать сайт в режиме XML и обновлять индекс Lucene.

Очевидная проблема с этим подходом заключается в том, что он требует, чтобы каждый портлет, который мы используем на сайте, был разработан на заказ. По разным причинам (некоторые назвали бы это чрезмерно амбициозным творческим отделом; я называю это значительно недостаточным существующим набором функций) нам все равно придется пойти по этому пути.

person Community    schedule 16.09.2011