9 nov. 2021, 15:30:26 Thomas Dumont

PageIncludeService

Table des matières

Définition

Les PageIncludeServices sont des services qui permettent d’inclure du code HTML dans les pages du site par le biais de bookmarks placés dans le gabarit principal du portail (page_frameset.html).
Ces services peuvent introduire du contenu mais sont plutôt destinés à insérer du code technique à des emplacements non accessibles pour les portlets ou les XPageApp. Par exemple, insérer dynamiquement, dans la partie des pages HTML, des liens vers des feuilles de style CSS ou vers des fichiers RSS.

Les PageIncludeServices du Core

Lutèce intègre par défaut plusieurs PageIncludeServices :

NomDescription
LinksInsertion des feuilles de style CSS et des Javascripts spécifiques des plugins installés
MétasInsertion des valeurs des tags méta définis dans le fichier webmaster.properties
ThemesGestion dynamique des chemins des feuilles de style CSS en fonction du thème associé à la page
StatisticsInsertion du code HTML spécifique à l’outil de mesure d’audience

Les services par défaut sont déclarés dans le fichier lutece.properties.

Création d’un PageIncludeService

Déclaration

Les plugins peuvent ajouter de nouveaux PageIncludeServices en les déclarant dans leur fichier XML de la manière suivante :

<!-- Page Includes -->
<page-include-services>
    ...
    <page-include-service>
        <page-include-service-name>My Include Service</page-include-service-name>
        <page-include-service-class>fr.paris.lutece.myplugin.web.MyInclude</page-include-service-class> 
    </page-include-service>
    ...
</page-include-services>

Implémentation

Un PageIncludeService doit implémenter l’interface PageInclude.

Voici un exemple très simple d’implémentation :

import fr.paris.lutece.portal.service.content.PageData;
import fr.paris.lutece.portal.service.includes.PageInclude;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;

public class MyInclude implements PageInclude
{
    private static final String MARK_MY_INCLUDE = "my_include";

    /**
    * {@inheritDoc}
    */
    @Override
    public void fillTemplate( Map<String, Object> rootModel, PageData data, int nMode, HttpServletRequest request )
    {
        rootModel.put( MARK_MY_INCLUDE, "My include content" );
    }
}