Définition de modules de thème
Vous pouvez définir des modules de thèmes dans XML ou JSON.
Pourquoi et quand exécuter cette tâche
Les exemples suivants sont des déclinaisons des exemples précédents et couvrent toute la syntaxe disponible pour le point d'extension plugin.xml et les définitions de module JSON.
Procédure
- Définissez le module. Un ID est requis et la version est une valeur décimale facultative.
<module id="testModule1" version="1.0" >"modules":[ // ... The ellipses indicate place holders for syntax explained in other steps { "id":"testModule1", "version":"1.0", // ... }, // ... ] - Facultatif :
Définissez autant de fonctions que nécessaire dans le module, avec une chaîne d'ID requise et une valeur en notation décimale, par exemple,
1.2.3.4. Ces informations sont ajoutées à la mappe globale des fonctions de thème du client incluse dans l'attribut de demande com.ibm.portal.theme.client.capabilities. Les portlets peuvent envoyer une requête côté serveur pour identifier les fonctions côté client qui sont présentes, telles que des bibliothèques JavaScript et les catalogues de style CSS. Le code JavaScript côté client peut interroger l'objet JSON globalcom_ibm_theme_capabilitiespour rechercher toutes les fonctions disponibles dans la portée de la page rendue actuellement.<capability id="capabilityA" value="1.0.0"/> <capability id="capabilityB" value="1.5"/>"capabilities":[{ "id":"capabilityA", "value":"1.0.0" }, { "id":"capabilityB", "value":"1.5" } ],Outre les fonctions explicites définies ici, une fonction définie implicitement par module a également été introduite. Cette fonction définie implicitement porte le nom et la version du module. Si le même nom est défini implicitement, le nom explicite est utilisé.
- Facultatif :
Définissez autant de prereqs que nécessaire dans le module, avec une chaîne d'ID requise et une chaîne de type optional ou minVersion en notation décimale. Si le type
optionalest utilisé, aucune erreur n'est renvoyée en sortie si le prereq est introuvable sur le système.<prereq id="testModuleA"/> <prereq id="testModuleB" minVersion="1.2.3.4"/> <prereq id="testModuleC" type="optional"/>"prereqs":[{ "id":"testModuleA" }, { "id":"testModuleB", "minVersion":"1.2.3.4" }, { "id":"testModuleC", "type":"optional" } ], - Facultatif : Ajoutez un titre ou des titres en différentes langues pour le module.
<title lang="en" value="en Module"/> <title lang="de" value="de Module"/> <title lang="es" value="es Module"/>"titles":[{ "lang":"en", "value":"en Module" }, { "lang":"de", "value":"de Module" }, { "lang":"es", "value":"es Module" } ], - Facultatif : Ajoutez une ou plusieurs descriptions en différentes langues.
<description lang="en" value="one two three"/> <description lang="de" value="ein zwei drei"/> <description lang="es" value="uno dos tres"/>"descriptions":[{ "lang":"en", "value":"one two three" }, { "lang":"de", "value":"ein zwei drei" }, { "lang":"es", "value":"uno dos tres" } ], - Au moins une requise : ajoutez des contributions comportant chacune au moins une sous-contribution enfant au module. Il existe quatre types de contribution qui déterminent l'emplacement où les sous-contributions associées sont renvoyées sur la page HTML :
- head
- Ces contributions sont liées à la section head du thème dans la zone de contenu dynamique
co:head. - config
- Ces contributions sont ajoutées à la fin de la section body dans le thème dans la zone de contenu dynamique co:config.
- menu
- Ces contributions peuvent être appelées par la structure de menu du thème.
- dyn-cs
- Les sorties de ces contributions sont ajoutées au thème dans la zone de contenu dynamique indiquée.
Voir Utilisation des zones de contenu dynamique. Chaque contribution comporte au moins une sous-contribution. Chaque sous-contribution comporte au moins un URI vers une ressource et un seul de ces URI est renvoyé par chaque sous-contribution. Les sous-contributions ont chacune un type requis :
- css
- Des fichiers de feuille de style en cascade peuvent être ajoutés aux contributions head uniquement.
- js
- Des fichiers JavaScript peuvent être liés à des contributions head ou config.
- json
- La sortie JavaScript Object Notation est utilisée par les contributions menu uniquement.
- balisage
- Un marquage HTML peut être servi par des contributions head, config ou dyn-cs.
- config_static
- Ce type est une objet de configuration JavaScript statique, global et pouvant être mis en cache publiquement et rendu disponible dans les contributions head ou config.
- config_dynamic
- Ce type est un objet de configuration JavaScript qui peut changer en fonction de la page ou de l'utilisateur en cours, et rendu disponible dans les contributions head ou config.
Voir Types de contribution. Sur la base de ces types de contribution et de sous-contribution, il est impossible d'implémenter les cas d'utilisation suivants dans un module. Voir l'exemple de code au début de cette rubrique pour afficher tous les fragments suivants réunis.
- Facultatif :
Attribuez un indicateur d'activation au module. Utilisez l'extensionID, utilisé dans ces exemples, ou l'attribut class pour indiquer l'implémentation ModuleActiveChecker ; les deux sont pris en charge. Par défaut, tous les modules qui sont définis sont actifs. Un module inactif est traité de la même façon qu'un module qui n'est pas défini. C'est pourquoi les modules inactifs ne sont pas démarrés à l'exécution du portail. Spécifiez une clé pour une entrée dans un fournisseur d'environnement de ressources sur le serveur d'applications pour l'activation ou la désactivation du module. Voir Ajout des propriétés de fournisseur d'environnement de ressources. Remplacez
RESOURCE_ENV_PROVIDER_NAMEpar le nom du fournisseur d'environnement de ressources et KEY_IN_RESOURCE_ENV_PROVIDER par la clé dans le fournisseur d'environnement de ressources. Les valeurs de clé valides sont true si le module est actif et false si le module est inactif. Par exemple, si vous souhaitez spécifier la clémy.module.is.activepour l'activation du module dans le fournisseur d'environnement de ressources ConfigService, l'entrée est la suivante :<repentry rep="ConfigService" key="my.module.is.active"/><moduleActivation extensionID="com.ibm.portal.resourceaggregator.util.ResourceEnvironmentProviderModuleActivationHandler"> <parameter name="rep" value="RESOURCE_ENV_PROVIDER_NAME" /> <parameter name="key" value="KEY_IN_RESOURCE_ENV_PROVIDER"/> </moduleActivation>"moduleActivation":{ "extensionID":"com.ibm.portal.resourceaggregator.util.ResourceEnvironmentProviderModuleActivationHandler", "parameters":[{ "name":"rep", "value":"RESOURCE_ENV_PROVIDER_NAME" }, { "name":"key", "value":"KEY_IN_RESOURCE_ENV_PROVIDER" }] }, - Facultatif :
Attribuez au module un gestionnaire d'activation de l'environnement d'exécution avec une condition. Ce module peut être activé ou désactivé pour chaque page individuellement, en fonction de l'état de la page en cours. Actuellement, le gestionnaire d'activation d'exécution prend en charge la vérification des classes d'appareil, lesquelles peuvent être une chaîne ou une équation. Voir Equations de classe d'appareil.
<runtimeActivation> <condition deviceClass="tablet"/> </runtimeActivation>{code}"runtimeActivation":[{ "condition":{ "deviceClass":"tablet" } }]