[JAVA] Ich möchte die Farbe des Steuerungsmenüs oben in Liferay 7 / DXP ändern

Entsprechende Version

Liferay DXP SP1 oder höher / Liferay 7 CE

Einführung

Es gibt viele Anforderungen des Projekts, dass ich die Farbe der Verwaltungsnavigationsleiste (Navigation bestehend aus Steuerungsmenü / Produktmenü / Simulationsmenü) ändern möchte, die oben in Liferay angezeigt wird (ich möchte die Farbe mit dem Thema abgleichen). Die Methode zur Behandlung eines solchen Falles wird beschrieben.

Offizielles Dokument: THEMENBEITRÄGE Offizielles Dokument: CONTEXT CONTRIBUTORS Die Erklärung zum Umgang damit wird in beschrieben, aber die tatsächliche Methode zum Erstellen eines Portlets wird hier erläutert.

Voraussetzungen

Es wird davon ausgegangen, dass der Liferay-Arbeitsbereich erstellt wurde und die Blade-Tools und verschiedene Tools zum Erstellen von Designs installiert wurden. Das folgende Dokument erläutert die Einrichtungsmethode.

Als Testszenario werden wir implementieren, um das Kontrollmenü in Rot zu ändern. Die Beziehung zum entsprechenden Kernthema-Anbieter ist wie folgt.

Funktionsname Projektname Pfad
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

Erstellen eines Themenbeitrags

Verschoben unter $ (liferay_workspace) / modules.

Wir müssen also einen Theme-Contributor erstellen, um das Control Menu-Bundle zu ersetzen. Wählen Sie in Liferay Developer Studio / IDE Datei-> Neu-> Liferay-Modulprojekt aus und wählen Sie unter Projektvorlagenname den Vorlagenkontextbeitrag aus. Oder an der Kommandozeile

blade create -t template-context-contributor -p com.liferay.product.navigation.control.menu.theme.contributor -c SampleProductNavigationControlMenu sample-product-navigation-control-menu-theme-contributor

Erstellen Sie ein Modulprojekt mit dem Blade-Tool in.

Erstellen eines SampleProductNavigationControlMenuTemplateContextContributor

Öffnen Sie die Basisdatei des Steuerungsmenüs

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

Kopieren Sie den Inhalt von ProductNavigationControlMenuTemplateContextContributor.java nach 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;
	}

Kopie der SCSS-Ressource

Unter dem Ressourcenverzeichnis von Product-Navigation-Control-Menü-Theme-Contributor (*** Original ***)

/src/main/resources

Beispiel-Produkt-Navigationssteuerungs-Menü-Theme-Contributor (*** Theme Contributor *** dieses Mal erstellt)

/src/main/resources

Kopieren Sie es unten. (Da sich unter dem Hauptverzeichnis nur ein Java-Verzeichnis befindet, kopieren Sie den gesamten Ressourcenordner.)

Versuchen Sie als Nächstes, den Speicherort der folgenden Datei zu ändern

_control_menu.In der Nähe der Linie 34 von scss


.control-menu-level-1 {
	background-color: #990000; //Ändern Sie dies im Test mit einem direkten Wert in Rot. Erstellen Sie tatsächlich eine Variable mit SCSS und behandeln Sie sie.
	color: $control-menu-level-1-color;

bnd.bnd Dateieinstellungen

*** Überprüfen Sie den Inhalt der ursprünglichen *** bnd-Datei und kopieren Sie sie in die bnd.bnd-Datei von *** Theme Contributor ***, die dieses Mal wie folgt erstellt wurde.

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

Beachten Sie hier Folgendes.

Bundle-Version
Dies entspricht der ursprünglichen Nummer
Liferay-Theme-Contributor-Weight
Dies sollte eine Zahl sein, die größer als der ursprüngliche Wert ist. Dadurch wird die Ladepriorität des Bundles geändert.

Bereitstellen

Starten Sie Liferay DXP und

blade deploy

Bereitstellen mit.

wichtiger Punkt

Das Obige ist nur ein Beispiel für das Steuerungsmenü, aber Sie können die Farbe für beide Produktmenüs / Simulationsmenüs auf dieselbe Weise ändern. Da diese Bundles jedoch eng mit dem Verwaltungsbildschirm und dem Kern verbunden sind, führen Änderungen auf der Kernseite zu Unterschieden zu den überschriebenen Bundles, was zu Problemen führt, wenn die Änderungen nicht auf ein Minimum beschränkt werden. Es gibt eine Möglichkeit.

Aufgrund eines Fehlers in SCSS wird die Änderung nicht übernommen, selbst wenn Sie eine andere SCSS-Datei als die erste Ebene ändern. (Zugehöriges JIRA-Ticket) Wenn Sie also die SCSS-Datei ändern, müssen Sie die SCSS-Datei der ersten Ebene ändern (product_navigation_control_menu. Im Fall des Steuerungsmenüs. Bearbeiten Sie scss), indem Sie Zeilenumbrüche einfügen oder entfernen, damit SCSS vor der Bereitstellung kompiliert wird (gradle css Build wird ausgeführt).

Ebenso wie der Artikel Ich möchte die Anzeige der Navigationsleiste des oberen Managements (Steuerungsmenü) mit Liferay 7 / DXP steuern wird er angezeigt / ausgeblendet. Die Steuerung usw. kann mit SampleProductNavigationControlMenuTemplateContextContributor.java geändert werden.

Recommended Posts

Ich möchte die Farbe des Steuerungsmenüs oben in Liferay 7 / DXP ändern
Ich möchte die Anzeige der oberen Verwaltungsnavigationsleiste (Steuerungsmenü) in Liferay 7 / DXP steuern
Ich möchte den Wert von Attribute in Selenium of Ruby ändern
Ich möchte die Protokollausgabeeinstellung von UtilLoggingJdbcLogger ändern
Ich möchte die Standardfehlermeldung von Spring Boot steuern
Bootstrap4 Ändern Sie die Farbe des Hamburger-Menüs
Ich möchte die JSP des offenen Portlets bei der Entwicklung von Liferay kennen
Ich möchte den Inhalt der Absicht var_dump
[AndroidStudio] Ändern Sie die Farbe des Hamburger-Menüs von ActionBarDrawerToggle
Ich möchte den Wert in Ruby erhalten
[Swift] So ändern Sie die Reihenfolge der Balkenelemente in Tab Bar Controller [Anfänger]
Ich möchte eine TraceId in das Protokoll einbetten
Ich möchte die Antwort der Janken-App wissen
Ich möchte den Namen des Posters des Kommentars anzeigen
Ich möchte die Bildlaufposition von UITableView zurückgeben!
[Active Admin] Ich möchte den Umfang der Sammlung angeben, die in select_box angezeigt werden soll
[Rails] Ich möchte das Linkziel von link_to auf einer separaten Registerkarte anzeigen
[Rails] [Bootstrap] Ich möchte die Schriftgröße entsprechend ändern
Ich möchte die maximale Dateigröße für das Hochladen von Dateien für jede URL in Spring Boot steuern
Ich möchte im gespeicherten Zustand zum selben Bildschirm wechseln
Ich möchte den Inhalt von Assets in der mit capistrano erstellten Umgebung von Grund auf neu erstellen
[Ruby] Ich möchte die Reihenfolge der Hash-Tabelle umkehren
Ich möchte die if-else-Anweisung für bedingte Verzweigungen in Java vereinfachen
Ich möchte die Methode des Controllers kennen, bei der die Ausnahme im ExceptionHandler von Spring Boot ausgelöst wurde
Die Geschichte von Collectors.groupingBy, die ich für die Nachwelt behalten möchte
Ich möchte die Eingabe begrenzen, indem ich den Zahlenbereich einschränke
Ich möchte den oberen Rand in der UITableView von Grouped entfernen (schnell)
[Java] Ich möchte mit dem Schlüssel im Objekt eindeutig arbeiten
[Swift] Die Farbe der Navigationsleiste unterscheidet sich (heller) von der angegebenen Farbe.
[Android] Ich möchte den Listener über die Schaltfläche in ListView abrufen
[Rails] Ich möchte Daten verschiedener Modelle in einem Formular senden
Ich möchte JSP in Emacs einfacher als die Standardeinstellung schreiben.
[Ruby] Ich möchte nur den Wert des Hash und nur den Schlüssel extrahieren
So ändern Sie die maximale und maximale Anzahl von POST-Daten in Spark
Ich möchte das Argument der Annotation und das Argument der aufrufenden Methode an den Aspekt übergeben
[Ruby] Ich möchte veröffentlichte Artikel in der Reihenfolge des neuesten Datums anzeigen
Ich möchte die IP-Adresse erhalten, wenn ich mit Java eine Verbindung zu Wi-Fi herstelle
So ändern Sie den Wert einer Variablen an einem Haltepunkt in IntelliJ
Ich habe versucht, den CPU-Kern mit Ruby voll auszunutzen
Ich möchte bei der Registrierung in der Datenbank eine Fehlermeldung anzeigen
Ich möchte den Feldnamen des [Java] -Felds erhalten. (Alter Ton)
[swift5] So ändern Sie die Farbe der TabBar oder die Farbe des TabBar-Elements mit Code
Ich möchte, dass Sie Enum # name () für den Schlüssel von SharedPreference verwenden
Ändern Sie das Speicherziel des Bildes in der Rails-App in S3. Teil 2
[Eclipse] Ändern Sie die Farbe des vertikalen Lineals
Ich möchte @Autowired in Servlet verwenden
[Swift] Ändern Sie die Farbe des SCN-Knotens