Liferay DXP SP1 ou version ultérieure / Liferay 7 CE
Il existe de nombreuses exigences pour les projets qui souhaitent modifier la couleur de la barre de navigation de gestion (navigation composée du menu de contrôle / du menu produit / du menu de simulation) affichée en haut de Liferay (pour faire correspondre la couleur avec le thème). La méthode de traitement d'un tel cas sera décrite.
Document officiel: THEME CONTRIBUTORS Document officiel: CONTEXT CONTRIBUTORS L’explication de la façon de le gérer est décrite dans, mais la méthode réelle de création d’un portlet est expliquée ici.
On suppose que l'espace de travail Liferay a été créé et que les outils de lame et divers outils de création de thème ont été installés. Le document suivant explique la méthode de configuration.
En tant que scénario de test, nous allons implémenter pour changer le menu de contrôle en rouge. La relation avec le fournisseur de thème principal correspondant est la suivante.
Nom de la fonction | Nom du projet | chemin |
---|---|---|
Control Menu | product-navigation-control-menu-dxp-theme-contributor | /liferay-portal/modules/private/apps/web-experience/product-navigation |
Product Menu | product-navigation-product-menu-dxp-theme-contributor | /liferay-portal/modules/private/apps/web-experience/product-navigation |
Simulation Menu | product-navigation-simulation-theme-contributor | /liferay-portal/modules/apps/web-experience/product-navigation |
Déplacé sous $ (liferay_workspace) / modules.
Nous devons donc créer un contributeur de thème pour remplacer le bundle du menu de contrôle. Sélectionnez Fichier-> Nouveau-> Projet de module Liferay dans Liferay Developer Studio / IDE, et sélectionnez Contributeur de contexte de modèle dans Nom du modèle de projet. Ou sur la ligne de commande
blade create -t template-context-contributor -p com.liferay.product.navigation.control.menu.theme.contributor -c SampleProductNavigationControlMenu sample-product-navigation-control-menu-theme-contributor
Créez un projet de module à l'aide de l'outil Blade dans.
Ouvrez le fichier de base du menu de contrôle
ProductNavigationControlMenuTemplateContextContributor.java
vi /liferay-portal/modules/apps/web-experience/product-navigation/product-navigation-control-menu-theme-contributor/src/main/java/com/liferay/product/navigation/control/menu/theme/contributor/internal/ProductNavigationControlMenuTemplateContextContributor.java
Copiez le contenu de ProductNavigationControlMenuTemplateContextContributor.java dans SampleProductNavigationControlMenuTemplateContextContributor.java.
SampleProductNavigationControlMenuTemplateContextContributor.java
@Override
public void prepare(
Map<String, Object> contextObjects, HttpServletRequest request) {
if (!isShowControlMenu(request)) {
return;
}
String cssClass = GetterUtil.getString(
contextObjects.get("bodyCssClass"));
contextObjects.put("bodyCssClass", cssClass + " has-control-menu");
}
protected boolean isShowControlMenu(HttpServletRequest request) {
ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
WebKeys.THEME_DISPLAY);
if (themeDisplay.isImpersonated()) {
return true;
}
if (!themeDisplay.isSignedIn()) {
return false;
}
User user = themeDisplay.getUser();
if (!user.isSetupComplete()) {
return false;
}
return true;
}
Sous le répertoire des ressources de product-navigation-control-menu-theme-contributor (*** original ***)
/src/main/resources
Sample-product-navigation-control-menu-theme-contributor (*** Thème contributeur *** créé cette fois)
/src/main/resources
Copiez-le ci-dessous. (Puisqu'il n'y a qu'un répertoire java sous le répertoire principal, copiez tout le dossier de ressources)
Ensuite, essayez de changer l'emplacement du fichier suivant
_control_menu.Près de la ligne 34 du scss
.control-menu-level-1 {
background-color: #990000; //Changez ceci en rouge dans le test avec une valeur directe. En fait, créez une variable avec SCSS et correspondez.
color: $control-menu-level-1-color;
*** Vérifiez le contenu du fichier *** bnd original et copiez-le dans le fichier bnd.bnd du *** contributeur au thème *** créé cette fois comme suit.
bnd.bnd
Bundle-Name: Liferay Product Navigation Control Menu DXP Theme Contributor SAMPLE
Bundle-SymbolicName: com.liferay.product.navigation.control.menu.dxp.theme.contributor
Bundle-Version: 1.0.7
Liferay-Releng-Module-Group-Description:
Liferay-Releng-Module-Group-Title: Product Navigation
Liferay-Theme-Contributor-Type: product-navigation-control-menu
Liferay-Theme-Contributor-Weight: 1500
Web-ContextPath: /product-navigation-control-menu-dxp-theme-contributor
Notez ce qui suit ici.
Démarrez Liferay DXP et
blade deploy
Déployez avec.
Ce qui précède est un exemple de menu de contrôle uniquement, mais vous pouvez changer la couleur de la même manière pour le menu produit / menu de simulation. Cependant, étant donné que ces bundles sont profondément liés à l'écran de gestion et au noyau, si les changements ne sont pas réduits au minimum, les changements du côté du noyau entraîneront des différences par rapport aux paquets remplacés, ce qui causera des problèmes. Il y a une possibilité.
En raison d'un bogue dans SCSS, même si vous modifiez un fichier SCSS autre que la première couche, la modification ne sera pas reflétée. (Ticket JIRA associé), donc si vous modifiez le fichier SCSS, assurez-vous de changer le fichier SCSS du premier niveau (product_navigation_control_menu. Dans le cas du menu de contrôle. Edit scss) en insérant ou en supprimant des sauts de ligne afin que SCSS soit compilé avant le déploiement (gradle css Build s'exécute).
Aussi, comme l'article Je veux contrôler l'affichage de la barre de navigation de gestion supérieure (menu Contrôle) avec Liferay 7 / DXP, il est affiché / masqué. Le contrôle, etc. peut être modifié avec SampleProductNavigationControlMenuTemplateContextContributor.java, veuillez donc vous y référer.
Recommended Posts