[JAVA] Je souhaite changer la couleur du menu de contrôle en haut de Liferay 7 / DXP

Version correspondante

Liferay DXP SP1 ou version ultérieure / Liferay 7 CE

introduction

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.

Conditions préalables

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

Créer un contributeur de thème

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.

Création d'un SampleProductNavigationControlMenuTemplateContextContributor

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;
	}

Copie de la ressource SCSS

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;

Paramètres du fichier bnd.bnd

*** 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.

Bundle-Version
Cela correspond au numéro d'origine
Liferay-Theme-Contributor-Weight
Cela doit être un nombre supérieur à la valeur d'origine. Cela modifiera la priorité de chargement du bundle.

Déployer

Démarrez Liferay DXP et

blade deploy

Déployez avec.

point important

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

Je souhaite changer la couleur du menu de contrôle en haut de Liferay 7 / DXP
Je souhaite contrôler l'affichage de la barre de navigation de gestion supérieure (menu Contrôle) dans Liferay 7 / DXP
Je veux changer la valeur de l'attribut dans Selenium of Ruby
Je souhaite modifier le paramètre de sortie du journal de UtilLoggingJdbcLogger
Je veux contrôler le message d'erreur par défaut de Spring Boot
Bootstrap4 Changer la couleur du menu hamburger
Je veux connaître le JSP du portlet ouvert lors du développement de Liferay
Je veux var_dump le contenu de l'intention
[AndroidStudio] Changer la couleur du menu hamburger d'ActionBarDrawerToggle
Je veux obtenir la valeur en Ruby
[Swift] Comment changer l'ordre des éléments de barre dans le contrôleur de barre d'onglets [Débutant]
Je veux intégrer n'importe quel TraceId dans le journal
Je veux connaître la réponse de l'application Janken
Je souhaite afficher le nom de l'affiche du commentaire
Je veux retourner la position de défilement de UITableView!
[Active Admin] Je souhaite spécifier l'étendue de la collection à afficher dans select_box
[Rails] Je souhaite afficher la destination du lien de link_to dans un onglet séparé
[Rails] [bootstrap] Je souhaite modifier la taille de la police de manière réactive
Je souhaite contrôler la taille de fichier maximale pour le téléchargement de fichiers pour chaque URL dans Spring Boot
Je souhaite passer au même écran dans l'état enregistré
Je veux recréer le contenu des actifs à partir de zéro dans l'environnement construit avec capistrano
[Ruby] Je souhaite inverser l'ordre de la table de hachage
Je souhaite simplifier l'instruction if-else de la branche conditionnelle en Java
Je veux connaître la méthode du contrôleur où l'exception a été levée dans le ExceptionHandler de Spring Boot
L'histoire de Collectors.groupingBy que je veux garder pour la postérité
Je veux limiter l'entrée en réduisant la plage de nombres
Je veux supprimer la marge supérieure dans UITableView de Grouped (swift)
[Java] Je veux effectuer distinctement avec la clé dans l'objet
[Swift] La couleur de NavigationBar est différente (plus claire) de la couleur spécifiée.
[Android] Je souhaite obtenir l'auditeur à partir du bouton de ListView
[Rails] Je souhaite envoyer des données de différents modèles dans un formulaire
Je veux écrire une JSP dans Emacs plus facilement que la valeur par défaut.
[Ruby] Je souhaite extraire uniquement la valeur du hachage et uniquement la clé
Comment modifier le nombre maximum et maximum de données POST dans Spark
Je veux passer l'argument d'Annotation et l'argument de la méthode d'appel à aspect
[Ruby] Je souhaite afficher les éléments publiés par ordre de date la plus récente
Je souhaite obtenir l'adresse IP lors de la connexion au Wi-Fi avec Java
Comment changer la valeur d'une variable à un point d'arrêt dans intelliJ
J'ai essayé d'utiliser pleinement le cœur du processeur avec Ruby
Je souhaite afficher un message d'erreur lors de l'inscription dans la base de données
Je veux obtenir le nom de champ du champ [Java]. (Vieux ton d'histoire)
[swift5] Comment changer la couleur de TabBar ou la couleur de l'élément de TabBar avec le code
Je veux que vous utilisiez Enum # name () pour la clé de SharedPreference
Modifiez la destination d'enregistrement de l'image en S3 dans l'application Rails. Partie 2
[Eclipse] Changer la couleur de la règle verticale
Je veux utiliser @Autowired dans Servlet
[Swift] Changer la couleur du nœud SCN