Anpassen der Websites-Konsole (klassische Benutzeroberfläche) customizing-the-websites-console-classic-ui
Hinzufügen einer benutzerdefinierten Spalte zur Websites-(SiteAdmin)-Konsole. adding-a-custom-column-to-the-websites-siteadmin-console
Die Websites-Administrationskonsole kann um die Anzeige benutzerdefinierter Spalten erweitert werden. Die Konsole basiert auf einem JSON-Objekt, das erweitert werden kann, indem ein OSGi-Dienst erstellt wird, der die Schnittstelle ListInfoProvider
implementiert. Ein solcher Dienst modifiziert das JSON-Objekt, das an den Client gesendet wird, um die Konsole zu erstellen.
In diesem Schritt-für-Schritt-Tutorial wird erläutert, wie Sie eine neue Spalte in der Websites-Administrationskonsole anzeigen, indem Sie die Schnittstelle ListInfoProvider
implementieren. Es besteht aus folgenden Schritten:
- Erstellen des OSGi-Dienstes und Bereitstellen des Pakets, das ihn enthält, auf dem AEM-Server.
- (Optional) Testen des neuen Dienstes durch Ausgabe eines JSON-Aufrufs, um das JSON-Objekt anzufordern, das zum Erstellen der Konsole verwendet wird.
- Anzeigen der neuen Spalte durch Erweitern der Knotenstruktur der Konsole im Repository
- die Digital Assets-Konsole
- die Community-Konsole
Erstellen von OSGi-Diensten creating-the-osgi-service
Die Schnittstelle ListInfoProvider
definiert zwei Methoden:
updateListGlobalInfo
, um die globalen Eigenschaften der Liste zu aktualisieren,updateListItemInfo
, um ein einzelnes Listenelement zu aktualisieren.
Die Argumente für beide Methoden lauten:
request
, das zugeordnete Sling-HTTP-Anforderungsobjekt,info
, das zu aktualisierende JSON-Objekt, bei dem es sich um die globale Liste bzw. das aktuelle Listenelement handelt,resource
, eine Sling-Ressource.
Es folgt eine Beispielimplementierung unten:
-
Es wird eine Eigenschaft starred für jedes Element hinzugefügt, deren Wert auf
true
festgelegt ist, wenn der Seitenname mit e beginnt. Andernfalls ist der Wert auffalse
festgelegt. -
Es wird die Eigenschaft starredCount hinzugefügt, die für die Liste global ist und die Anzahl der markierten Listenelemente enthält.
So erstellen Sie den OSGi-Dienst:
- Erstellen Sie ein Bundle in CRXDE Lite.
- Fügen Sie den Beispiel-Code unten hinzu.
- Erstellen Sie das Bundle.
Der neue Dienste wird ordnungsgemäß ausgeführt.
package com.test;
import com.day.cq.commons.ListInfoProvider;
import com.day.cq.i18n.I18n;
import com.day.cq.wcm.api.Page;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.commons.json.JSONException;
import org.apache.sling.commons.json.JSONObject;
@Component(metatype = false)
@Service(value = ListInfoProvider.class)
public class StarredListInfoProvider implements ListInfoProvider {
private int count = 0;
public void updateListGlobalInfo(SlingHttpServletRequest request, JSONObject info, Resource resource) throws JSONException {
info.put("starredCount", count);
count = 0; // reset for next execution
}
public void updateListItemInfo(SlingHttpServletRequest request, JSONObject info, Resource resource) throws JSONException {
Page page = resource.adaptTo(Page.class);
if (page != null) {
// Consider starred if page name starts with 'e'
boolean starred = page.getName().startsWith("e");
if (starred) {
count++;
}
I18n i18n = new I18n(request);
info.put("starred", starred ? i18n.get("Yes") : i18n.get("No"));
}
}
}
-
Ihre Implementierung sollte anhand der bereitgestellten Anforderung und/oder Ressource bestimmen, ob die Informationen zum JSON-Objekt hinzugefügt werden sollen.
-
Wenn Ihre
ListInfoProvider
-Implementierung eine Eigenschaft definiert, die bereits im Antwortobjekt vorhanden ist, wird ihr Wert durch den von Ihnen angegebenen Wert überschrieben.Sie können service ranking verwenden, um die Ausführungsreihenfolge mehrerer
ListInfoProvider
Implementierungen zu verwalten.
Testen des neuen Dienstes testing-the-new-service
Wenn Sie die Websites-Administrationskonsole öffnen und Ihre Site durchsuchen, gibt der Browser einen Ajax-Aufruf aus, um das JSON-Objekt abzurufen, das zum Erstellen der Konsole verwendet wird. Wenn Sie beispielsweise zum Ordner /content/geometrixx
navigieren, wird die folgende Anforderung an den AEM-Server gesendet, um die Konsole zu erstellen:
https://localhost:4502/content/geometrixx.pages.json?start=0&limit=30&predicate=siteadmin
Gehen Sie wie folgt vor, um sicherzustellen, dass der neue Dienst nach der Bereitstellung des Bundles, das ihn enthält, ausgeführt wird:
-
Lassen Sie Ihren Browser auf die folgende URL verweisen:
https://localhost:4502/content/geometrixx.pages.json?start=0&limit=30&predicate=siteadmin -
Die Antwort sollte die neuen Eigenschaften wie folgt anzeigen:
Anzeigen neuer Spalten displaying-the-new-column
Der letzte Schritt besteht darin, die Knotenstruktur der Websites-Administrationskonsole so anzupassen, dass die neue Eigenschaft für alle Geometrixx-Seiten durch Überlagerung von /libs/wcm/core/content/siteadmin
angezeigt wird. Gehen Sie wie folgt vor:
-
Erstellen Sie in CRXDE Lite die Knotenstruktur
/apps/wcm/core/content
mit Knoten des Typssling:Folder
, um die Struktur/libs/wcm/core/content
widerzuspiegeln. -
Kopieren Sie den Knoten
/libs/wcm/core/content/siteadmin
und fügen Sie ihn unter/apps/wcm/core/content
ein. -
Kopieren Sie den Knoten
/apps/wcm/core/content/siteadmin/grid/assets
nach/apps/wcm/core/content/siteadmin/grid/geometrixx
und ändert seine Eigenschaften:-
Entfernen Sie pageText.
-
Legen Sie pathRegex auf
/content/geometrixx(/.*)?
fest
Dadurch wird die Rasterkonfiguration für alle Geometrixx-Websites aktiviert. -
Legen Sie storeProxySuffix auf
.pages.json
fest -
Bearbeiten Sie die mehrwertige Eigenschaft storeReaderFields und fügen Sie den Wert
starred
hinzu. -
Um die MSM-Funktion zu aktivieren, fügen Sie die folgenden MSM-Parameter zu der aus mehreren Zeichenfolgen bestehenden Eigenschaft storeReaderFields hinzu:
- msm:isSource
- msm:isInBlueprint
- msm:isLiveCopy
-
-
Fügen Sie einen Knoten
starred
(des Typs nt:unstructured) unter/apps/wcm/core/content/siteadmin/grid/geometrixx/columns
mit den folgenden Eigenschaften hinzu:-
dataIndex:
starred
des Typs „String“ -
header:
Starred
des Typs „String“ -
xtype:
gridcolumn
des Typs „String“
-
-
(optional) Verschieben Sie die Spalten, die Sie nicht anzeigen möchten, per Drag-and-Drop nach
/apps/wcm/core/content/siteadmin/grid/geometrixx/columns
-
/siteadmin
ist ein Vanity-Pfad, der standardmäßig auf/libs/wcm/core/content/siteadmin
verweist.
Um ihn an Ihre SiteAdmin-Version auf/apps/wcm/core/content/siteadmin
umzuleiten, definieren Sie die Eigenschaftsling:vanityOrder
so, dass sie einen höheren Wert aufweist, als auf/libs/wcm/core/content/siteadmin
definiert ist. Der Standardwert lautet 300, also sind alle höheren Werte geeignet. -
Wechseln Sie zu Websites-Administrationskonsole und navigieren Sie zur folgenden Geometrixx-Website:
https://localhost:4502/siteadmin#/content/geometrixx. -
Die neue Spalte Starred ist nun verfügbar und zeigt benutzerdefinierte Informationen wie folgt an:
Beispielpaket sample-package
Das Ergebnis dieses Tutorials ist im Paket Anpassen der Website-Administrationskonsole bei Package Share verfügbar.