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

PageIncludeService

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 <head> 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 :

Nom Description
Links Insertion des feuilles de style CSS et des Javascripts spécifiques des plugins installés
Métas Insertion des valeurs des tags méta définis dans le fichier webmaster.properties
Themes Gestion dynamique des chemins des feuilles de style CSS en fonction du thème associé à la page
Statistics Insertion 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" );
    }
}