Definitie van inhoudsfragmentmodel
Dit voorbeeld bindt aan om het even welk gebied van het Fragment van de Inhoud de waarvan naam sku
is (via a regelmatige uitdrukkingsgelijkevan ^sku$
) en vervangt het met een douanegebied. Het voorbeeld gebruikt het model van het Fragment van de Inhoud van WKND Adventure van de Inhoud dat is bijgewerkt en de definitie is als volgt:
Ondanks het gebied van douaneSKU dat als dropdown wordt getoond, wordt zijn onderliggend model gevormd als tekstgebied. De implementatie van het aangepaste veld hoeft alleen te worden uitgelijnd met de juiste naam en het juiste type eigenschap, waardoor het standaardveld gemakkelijker kan worden vervangen door de aangepaste vervolgkeuzelijst.
Toepassingsroutes
Neem in de hoofdcomponent React App.js
de /sku-field
-route op om de component SkuField
React te renderen.
src/aem-cf-editor-1/web-src/src/components/App.js
import React from "react";
import ErrorBoundary from "react-error-boundary";
import { HashRouter as Router, Routes, Route } from "react-router-dom";
import ExtensionRegistration from "./ExtensionRegistration";
import SkuField from "./SkuField"; // Custom component implemented below
function App() {
return (
<Router>
<ErrorBoundary onError={onError} FallbackComponent={fallbackComponent}>
<Routes>
<Route index element={<ExtensionRegistration />} />
<Route
exact path="index.html"
element={<ExtensionRegistration />}
/>
{/* This is the React route that maps to the custom field */}
<Route
exact path="/sku-field"
element={<SkuField />}/>
</Routes>
</ErrorBoundary>
</Router>
)
...
}
...
Deze douaneroute van /sku-field
kaarten aan de SkuField
component wordt gebruikt hieronder in de registratie van de Uitbreiding.
Registratie van extensies
ExtensionRegistration.js
, toegewezen aan de route index.html, is het ingangspunt voor de uitbreiding van AEM en bepaalt:
- De widgetdefinitie in de functie
getDefinitions()
metfieldNameExp
- enurl
-kenmerken. De volledige lijst van beschikbare attributen is beschikbaar in het Element dat van de Vorm van de Douane API Verwijzing teruggeeft. - De waarde van het kenmerk
url
, een relatief URL-pad (/index.html#/skuField
) om de interface van het veld te laden.
src/aem-cf-editor-1/web-src/src/components/ExtensionRegistration.js
import { Text } from "@adobe/react-spectrum";
import { register } from "@adobe/uix-guest";
import { extensionId } from "./Constants";
function ExtensionRegistration() {
const init = async () => {
const guestConnection = await register({
id: extensionId,
methods: {
field: {
getDefinitions() {
return [
// Multiple fields can be registered here.
{
fieldNameExp: '^sku$', // This is a regular expression that matches the field name in the Content Fragment Model to replace with React component specified in the `url` key.
url: '/#/sku-field', // The URL, which is mapped vai the Route in App.js, to the React component that will be used to render the field.
},
// Other bindings besides fieldNameExp, other bindings can be used as well as defined here:
// https://developer.adobe.com/uix/docs/services/aem-cf-editor/api/custom-fields/#api-reference
];
},
},
}
});
};
init().catch(console.error);
return <Text>IFrame for integration with Host (AEM)...</Text>;
}
export default ExtensionRegistration;