Liferay DXP SP1 oder höher / Liferay 7 CE
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.
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 |
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.
Ö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;
}
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;
*** Ü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.
Starten Sie Liferay DXP und
blade deploy
Bereitstellen mit.
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.