Registrazione dell’estensione

Le estensioni dell'interfaccia utente di AEM sono app App Builder specializzate, basate su React e utilizzano il framework dell'interfaccia utente React Spectrum.

Per definire dove e come viene visualizzata l’estensione dell’interfaccia utente di AEM, sono necessarie due configurazioni nell’app App Builder dell’estensione: il routing dell’app e la registrazione dell’estensione.

Route delle app app-routes

Il App.js dell'estensione dichiara il router React che include una route di indice che registra l'estensione nell'interfaccia utente di AEM.

La route dell'indice viene richiamata al caricamento iniziale dell'interfaccia utente di AEM e la destinazione di questa route definisce il modo in cui l'estensione viene esposta nella console.

  • ./src/aem-ui-extension/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>
  )
  ...
}

Registrazione dell’estensione

ExtensionRegistration.js deve essere caricato immediatamente tramite la route dell'indice dell'estensione e agisce come punto di registrazione dell'estensione.

In base al modello di estensione dell'interfaccia utente di AEM selezionato al momento dell'inizializzazione dell'estensione dell'app App Builder🔗, sono supportati diversi punti di estensione.

Includi estensioni in modo condizionale

Le estensioni dell’interfaccia utente di AEM possono eseguire una logica personalizzata per limitare gli ambienti AEM in cui viene visualizzata l’estensione. Questo controllo viene eseguito prima della chiamata register nel componente ExtensionRegistration e restituisce immediatamente se l'estensione non deve essere visualizzata.

Il contesto disponibile per questo controllo è limitato:

  • L'host AEM su cui viene caricata l'estensione.
  • Token di accesso AEM dell’utente corrente.

I controlli più comuni per il caricamento di un’estensione sono:

  • Utilizzo dell'host AEM (new URLSearchParams(window.location.search).get('repo')) per determinare se l'estensione deve essere caricata.

    • Mostra l’estensione solo negli ambienti AEM che fanno parte di un programma specifico (come mostrato nell’esempio di seguito).
    • Mostra l’estensione solo in un ambiente AEM specifico (host AEM).
  • Utilizzo di un'azione Adobe I/O Runtime per effettuare una chiamata HTTP ad AEM per determinare se l'utente corrente deve visualizzare l'estensione.

L'esempio seguente illustra la limitazione dell'estensione a tutti gli ambienti nel 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);
}
recommendation-more-help
4859a77c-7971-4ac9-8f5c-4260823c6f69