AEM le estensioni della console Frammenti di contenuto sono app specializzate di App Builder, basate su React e utilizzano l’ React Spectrum Framework di interfaccia utente.
Per definire dove e come viene visualizzata la AEM console Frammenti di contenuto l’estensione, nell’app App Builder dell’estensione sono necessarie due configurazioni specifiche: routing dell'app e registrazione dell'estensione.
L'estensione App.js
dichiara la Reagisce router che include una route di indice che registra l'estensione nella AEM console Frammenti di contenuto.
La route di indice viene richiamata quando viene inizialmente caricata AEM console Frammenti di contenuto e la destinazione di questo percorso definisce come l'estensione viene esposta nella console.
./src/aem-cf-console-admin-1/web-src/src/components/App.js
import ExtensionRegistration from "./ExtensionRegistration"
...
function App(props) {
return (
<Router>
<ErrorBoundary onError={onError} FallbackComponent={fallbackComponent}>
<Routes>
{/* The index route maps to the extension registration */}
<Route index element={<ExtensionRegistration />} />
...
</Routes>
</ErrorBoundary>
</Router>
)
...
}
ExtensionRegistration.js
deve essere caricato immediatamente tramite la via di indicizzazione dell'estensione e agisce sul punto di registrazione dell'estensione, definendo:
headerMenu
proprietà sotto methods
.actionBar
proprietà sotto methods
.getButton()
funzione . Questa funzione restituisce un oggetto con campi:
id
è un ID univoco per il pulsantelabel
è l’etichetta del pulsante di estensione nella console Frammento di contenuto AEMicon
è l’icona del pulsante di estensione nella console Frammento di contenuto AEM. L’icona è un React Spectrum nome dell’icona, con gli spazi rimossi.onClick()
funzione .
selections
parametro .I pulsanti di estensione del menu intestazione vengono visualizzati quando non è selezionato alcun frammento di contenuto. Poiché le estensioni del menu di intestazione non agiscono in una selezione di frammenti di contenuto, non vengono forniti frammenti di contenuto al relativo onClick()
handler.
./src/aem-cf-console-admin-1/web-src/src/components/ExtensionRegistration.js
function ExtensionRegistration() {
const init = async () => {
const guestConnection = await register({
id: extensionId, // A unique ID for the extension
methods: {
// Configure your Action Bar button here
headerMenu: {
getButton() {
return {
'id': 'example.my-header-menu-extension', // Unique ID for the button
'label': 'My header menu extension', // Button label
'icon': 'Edit' // Button icon from https://spectrum.adobe.com/page/icons/
}
},
// Click handler for the extension button
// Header Menu extensions do not pass parameters to the click handler
onClick() { ... }
}
}
})
}
init().catch(console.error)
}
Passa alla creazione di un’estensione del menu di intestazione
Scopri come registrare e definire un’estensione del menu di intestazione nella AEM console Frammenti di contenuto .
I pulsanti di estensione della barra delle azioni vengono visualizzati quando si selezionano uno o più frammenti di contenuto. I percorsi selezionati del frammento di contenuto sono resi disponibili all’estensione tramite selections
nel onClick(..)
handler.
./src/aem-cf-console-admin-1/web-src/src/components/ExtensionRegistration.js
function ExtensionRegistration() {
const init = async () => {
const guestConnection = await register({
id: extensionId, // A unique ID for the extension
methods: {
// Configure your Action Bar button here
actionBar: {
getButton() {
return {
'id': 'example.my-action-bar-extension', // Unique ID for the button
'label': 'My action bar extension', // Button label
'icon': 'Edit' // Button icon from https://spectrum.adobe.com/page/icons/
}
},
// Click handler for the extension button
// Only Action Bar buttons populate the selections parameter
onClick(selections) { ... }
}
}
})
}
init().catch(console.error)
}
Passa alla creazione di un'estensione della barra delle azioni
Scopri come registrare e definire un’estensione della barra delle azioni nella AEM console Frammenti di contenuto .
AEM le estensioni della console Frammenti di contenuto possono eseguire logiche personalizzate per limitare l’aspetto dell’estensione nella console Frammenti di contenuto AEM. Questo controllo viene eseguito prima del register
chiama ExtensionRegistration
e restituisce immediatamente se l'estensione non deve essere visualizzata.
Questo controllo ha un contesto limitato disponibile:
I controlli più comuni per il caricamento di un'estensione sono:
new URLSearchParams(window.location.search).get('repo')
) per determinare se l’estensione deve essere caricata.
L'esempio seguente illustra la limitazione dell'estensione a tutti gli ambienti del programma p12345
.
./src/aem-cf-console-admin-1/web-src/src/components/ExtensionRegistration.js
function ExtensionRegistration() {
const PROGRAM_ID = 'p12345';
// Get the current AEM Host (author-pXXX-eYYY.adobeaemcloud.com) the extension is loading on
const aemHost = new URLSearchParams(window.location.search).get('repo');
// Create a check to determine if the current AEM host matches the AEM program that uses this extension
const aemHostRegex = new RegExp(`^author-${PROGRAM_ID}-e[\\d]+\\.adobeaemcloud\\.com$`)
// Disable the extension if the Cloud Manager Program Id doesn't match the regex.
if (!aemHostRegex.test(aemHost)) {
return; // Skip extension registration if the environment is not in program p12345.
}
// Else, continue initializing the extension
const init = async () => { .. };
init().catch(console.error);
}