Extensiepunt

Dit voorbeeld breidt zich tot uitbreidingspunt rte uit om een widget aan RTE in de Redacteur van het Fragment van de Inhoud toe te voegen.

AEM-gebruikersinterface uitgebreid
Extensiepunt

Voorbeeldextensie

Het volgende voorbeeld leidt tot de Lijst van de Code van de a Korting widget. Door op de { speciale sleutel binnen RTE te duwen, wordt het contextmenu geopend, dan door de optie van de Lijst van de Code van de Korting van het contextmenu te selecteren wordt de dialoog UI geopend.

De auteurs van de inhoud WKND kunnen, huidige Adventure-specifieke kortingscode vinden selecteren en toevoegen, als beschikbaar.

Registratie van extensies

ExtensionRegistration.js , toegewezen aan de route index.html, is het ingangspunt voor de uitbreiding van AEM en bepaalt:

  • De widgetdefinitie in getWidgets() functie met id, label and url attributen.
  • De waarde van het kenmerk url , een relatief URL-pad ( /index.html#/discountCodes ) om de interface van het dialoogvenster te laden.

src/aem-cf-editor-1/web-src/src/components/ExtensionRegistration.js

import React from "react";
import { Text } from "@adobe/react-spectrum";
import { register } from "@adobe/uix-guest";
import { extensionId } from "./Constants";

// This function is called when the extension is registered with the host and runs in an iframe in the Content Fragment Editor browser window.
function ExtensionRegistration() {
  const init = async () => {
    const guestConnection = await register({
      id: extensionId,
      methods: {
        rte: {
          // RTE Widgets
          getWidgets: () => [
            {
              id: "discountcode-list-widget", // Provide a unique ID for the widget
              label: "Discount Code List", // Provide a label for the widget
              url: "/index.html#/discountCodes", // Provide the "relative" URL to the widget content. It will be resolved as `/index.html#/discountCodes`
            },
          ],
        }, // Add a comma here
      },
    });
  };

  init().catch(console.error);

  return <Text>IFrame for integration with Host (AEM)...</Text>;
}

export default ExtensionRegistration;