Question

J'essaie de faire en sorte que l'éditeur d'actifs Liveray (6.0.6) publie toutes les modifications sur plusieurs communautés sur la page d'accueil du portail. En cliquant sur un lien, l'utilisateur est censé être redirigé vers une autre communauté et voir le nouveau contenu Web. Le problème est que le comportement par défaut de l'éditeur d'actifs (même avec le crochet pour recueillir des informations de toutes les communautés) essaie d'obtenir l'URL en recherchant le groupe de la page actuelle (dans laquelle le contenu n'est pas). J'ai décidé de modifier le JSP affichant la page pour rechercher toutes les pages sur toutes les communautés et trouver la première contenant le portlet avec le contenu Web souhaité. Alors

  1. Comment pourrais-je obtenir le portlet contenant le contenu Web par ID de journal du contenu Web?
  2. Comment pourrais-je obtenir la page contenant le portlet?

Merci

Était-ce utile?

La solution

La Portletpréférences La table dans la base de données contient les configurations de chaque portlet dans le système. La configuration d'un article d'article pour un portlet d'affichage de contenu Web est stockée comme une préférence dans ce tableau. Si vous regardez ce tableau, il y a 3 colonnes importantes:

  • gigogne Contient l'ID de la mise en page (= page) sur laquelle le portlet a été abandonné.
  • portlettid contient le exemple ID du portlet. Pour le portlet d'affichage du contenu Web, cet ID a le format 56_instance_xxxx où xxxx est un hachage unique.
  • préférences est une chaîne formatée XML de toutes les préférences et leurs valeurs pour ce portlet.

Un exemple du préférences XML:

<portlet-preferences>
    <preference><name>group-id</name><value>10139</value></preference>
    <preference><name>article-id</name><value>14295</value></preference>
</portlet-preferences>

C'est donc juste une question de bien faire vos requêtes SQL. Pour autant que je sache, il n'y a pas de service que vous pouvez appeler directement pour cela.

SELECT l.friendlyURL
FROM PortletPreferences p, Layout l
WHERE p.plid=l.plid 
AND p.portletid LIKE '56_INSTANCE_%' 
AND p.preferences LIKE '<preference><name>article-id</name><value>14295</value></preference>';

Autres conseils

Quelque chose comme ce qui suit vous permet de trouver la mise en page sur laquelle un article est rendu.

List<Long> layoutIds = JournalContentSearchLocalServiceUtil.getLayoutIds(groupId, false, articleId);
long layoutId = 0;

if (!layoutIds.isEmpty()) {
  layoutId = layoutIds.get(0).longValue();
  Layout layout = LayoutLocalServiceUtil.getLayout(groupId, false, layoutId);
  String url = PortalUtil.getLayoutURL(layout, themeDisplay);
  ...
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top