AEM les extensions de la console de fragments de contenu sont des applications spécialisées du créateur d’applications, reposant sur React et utilisant React Spectrum Structure de l’interface utilisateur.
Pour définir où et comment l’extension apparaît dans la console de fragments de contenu d’AEM, deux configurations spécifiques sont requises dans l’application App Builder de l’extension : routage de l’application et enregistrement de l’extension.
L’extension App.js
déclare la variable Routeur React qui inclut un itinéraire d’index qui enregistre l’extension dans la console de fragments de contenu AEM.
L’itinéraire de l’index est appelé lors du chargement initial de AEM la console de fragments de contenu, et la cible de cet itinéraire définit la manière dont l’extension est exposée dans la 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
doit être immédiatement chargé via l’itinéraire d’index de l’extension et agit sur le point d’enregistrement de l’extension, en définissant :
headerMenu
propriété sous methods
.actionBar
propriété sous methods
.getButton()
fonction . Cette fonction renvoie un objet avec des champs :
id
est un identifiant unique du bouton.label
est le libellé du bouton d’extension dans la console Fragment de contenu AEMicon
est l’icône du bouton d’extension dans la console Fragment de contenu AEM. L’icône est une React Spectrum nom de l’icône, sans espaces.onClick()
fonction .
selections
.Les boutons d’extension du menu d’en-tête s’affichent lorsqu’aucun fragment de contenu n’est sélectionné. Étant donné que les extensions du menu d’en-tête n’agissent pas sur une sélection de fragment de contenu, aucun fragment de contenu n’est fourni à onClick()
gestionnaire.
./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)
}
Passer à la création d’une extension de menu d’en-tête
Découvrez comment enregistrer et définir une extension de menu d’en-tête dans la console Fragments de contenu AEM.
Les boutons d’extension de la barre d’actions s’affichent lorsqu’un ou plusieurs fragments de contenu sont sélectionnés. Les chemins d’accès au fragment de contenu sélectionné sont mis à la disposition de l’extension via le selections
, dans le onClick(..)
gestionnaire.
./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)
}
Passer à la création d’une extension de barre d’actions
Découvrez comment enregistrer et définir une extension de barre d’actions dans la console Fragments de contenu AEM.
AEM les extensions de la console de fragments de contenu peuvent exécuter une logique personnalisée afin de limiter le moment où l’extension apparaît dans AEM console de fragments de contenu. Cette vérification est effectuée avant la register
dans le ExtensionRegistration
et renvoie immédiatement si l’extension ne doit pas être affichée.
Le contexte disponible pour ce contrôle est limité :
Les contrôles les plus courants pour le chargement d’une extension sont les suivants :
new URLSearchParams(window.location.search).get('repo')
) pour déterminer si l’extension doit se charger.
L’exemple ci-dessous illustre la limitation de l’extension à tous les environnements du programme. 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);
}