Inhoudsfragmenten aanpassen en uitbreiden customizing-and-extending-content-fragments
In Adobe Experience Manager as a Cloud Service breidt een inhoudsfragment een standaard element uit. Zie:
-
Inhoudsfragmenten maken en beheren en Pagina's ontwerpen met inhoudsfragmenten voor meer informatie over inhoudsfragmenten.
-
Elementen beheren voor meer informatie over standaardactiva.
Architectuur architecture
De basis samenstellende delen van een inhoudsfragment zijn:
- A Inhoudsfragment zichzelf
- Bestaat uit een of meer Inhoud-elementen
- Het kan een of meer Inhoudsvariaties
De afzonderlijke inhoudsfragmenten zijn gebaseerd op modellen van inhoudsfragmenten:
-
Inhoudsfragmentmodellen definiëren de structuur van een inhoudsfragment wanneer dit wordt gemaakt.
-
Een fragment verwijst naar het model. Wijzigingen in het model kunnen dus invloed hebben op afhankelijke fragmenten of dit effect hebben.
-
Modellen zijn opgebouwd uit gegevenstypen.
-
Functies om nieuwe variaties toe te voegen, enzovoort, moeten het fragment overeenkomstig bijwerken.
note note NOTE Als u een inhoudsfragment wilt weergeven/renderen, moet uw account read
machtigingen voor het model.note caution CAUTION Wijzigingen in een bestaand inhoudsfragmentmodel kunnen van invloed zijn op afhankelijke fragmenten. Dit kan leiden tot weeseigenschappen in die fragmenten.
Integratie van sites met middelen integration-of-sites-with-assets
CFM (Content Fragment Management) maakt deel uit van Adobe Experience Manager (AEM) Assets als:
- Inhoudsfragmenten zijn elementen.
- Ze gebruiken de bestaande functionaliteit Elementen.
- Ze zijn volledig geïntegreerd met Elementen (beheerconsoles, enzovoort).
Inhoudsfragmenten worden als een AEM Sites-functie beschouwd:
- Deze worden gebruikt bij het ontwerpen van uw pagina's.
Inhoudsfragmenten toewijzen aan elementen mapping-content-fragments-to-assets
Inhoudsfragmenten, gebaseerd op een inhoudsfragmentmodel, worden toegewezen aan één element:
-
Alle inhoud wordt opgeslagen onder de
jcr:content/data
knooppunt van het element:-
De elementgegevens worden opgeslagen onder het hoofdsubknooppunt:
jcr:content/data/master
-
Variaties worden opgeslagen onder een subknooppunt met de naam van de variatie: bijvoorbeeld
jcr:content/data/myvariation
-
De gegevens van elk element worden in het desbetreffende subknooppunt opgeslagen als een eigenschap met de elementnaam: bijvoorbeeld de inhoud van het element
text
is opgeslagen als eigenschaptext
opjcr:content/data/master
-
-
Metagegevens en bijbehorende inhoud worden hieronder opgeslagen
jcr:content/metadata
Met uitzondering van de titel en de beschrijving, die niet als traditionele metagegevens worden beschouwd en opjcr:content
Locatie van element asset-location
Net als bij standaardelementen wordt een inhoudsfragment opgeslagen onder:
/content/dam
Elementmachtigingen asset-permissions
Zie Inhoudsfragment - Overwegingen verwijderen.
Functie-integratie feature-integration
Integreren met de kern Elementen:
-
De functie CFM (Content Fragment Management) is gebaseerd op de kern Elementen.
-
CFM biedt zijn eigen implementaties voor items in de kaart-, kolom- of lijstweergaven; deze plug-in de bestaande implementaties voor het renderen van de inhoud van Elementen.
-
Verschillende middelencomponenten zijn uitgebreid om rekening te houden met inhoudsfragmenten.
Inhoudsfragmenten op pagina's gebruiken using-content-fragments-in-pages
Vanuit AEM pagina's kan naar inhoudsfragmenten worden verwezen, net als met elk ander elementtype. AEM biedt de Basiscomponent van inhoudsfragment - een component waarmee u inhoudsfragmenten op uw pagina's kunt opnemen. U kunt dit ook uitbreiden Inhoudsfragment kerncomponent.
-
De component gebruikt de
fragmentPath
eigenschap om naar het daadwerkelijke inhoudsfragment te verwijzen. DefragmentPath
Deze eigenschap wordt op dezelfde manier verwerkt als soortgelijke eigenschappen van andere elementtypen, bijvoorbeeld wanneer het inhoudsfragment naar een andere locatie wordt verplaatst. -
Met de component kunt u de variatie selecteren die moet worden weergegeven.
-
U kunt ook een reeks alinea's selecteren om de uitvoer te beperken. Deze alinea kan bijvoorbeeld worden gebruikt voor uitvoer met meerdere kolommen.
-
De component staat tussenliggende inhoud toe:
-
Hier kunt u met de component andere elementen (afbeeldingen, enzovoort) tussen de alinea's van het fragment waarnaar wordt verwezen plaatsen.
-
Voor tussenliggende inhoud:
-
Houd rekening met de mogelijkheid van onstabiele referenties. Tussen de inhoud (die bij het ontwerpen van een pagina wordt toegevoegd) bevindt zich geen vaste relatie met de alinea die ernaast staat. Als u een nieuwe alinea invoegt (in de inhoudfragmenteditor) vóór de positie van de tussenliggende inhoud, kan de relatieve positie verloren gaan.
-
Overweeg de extra parameters (zoals variatie- en alineafilters) om te configureren wat op de pagina wordt weergegeven.
-
-
Integratie met andere frameworks integration-with-other-frameworks
Inhoudsfragmenten kunnen worden geïntegreerd met:
-
Vertalingen
Inhoudsfragmenten zijn volledig geïntegreerd met de AEM vertaalworkflow. Op architectonisch niveau betekent dit:
-
De afzonderlijke vertalingen van een inhoudsfragment zijn afzonderlijke fragmenten, bijvoorbeeld:
-
zij bevinden zich onder verschillende taalwortels, maar delen het relatieve pad onder de desbetreffende taalwortel:
/content/dam/<path>/en/<to>/<fragment>
vs
/content/dam/<path>/de/<to>/<fragment>
-
-
Naast op regel gebaseerde paden is er geen andere verbinding tussen de verschillende taalversies van een inhoudsfragment. Deze fragmenten worden als twee afzonderlijke fragmenten behandeld, hoewel de interface de mogelijkheid biedt om tussen de taalvarianten te navigeren.
note note NOTE De AEM vertaalworkflow werkt met /content
:- Terwijl de modellen van het inhoudsfragment zich bevinden in
/conf
, worden deze niet in dergelijke vertalingen opgenomen. U kunt de UI-tekenreeksen internationaliseren.
-
-
Metagegevensschema's
-
Inhoudsfragmenten gebruiken en hergebruiken de metagegevensschema's die met standaardelementen kunnen worden gedefinieerd.
-
CFM biedt een eigen, specifiek schema:
/libs/dam/content/schemaeditors/forms/contentfragment
dit kan zo nodig worden verlengd .
-
Het respectievelijke schema-formulier is geïntegreerd met de fragmenteditor.
-
De API voor contentfragmentbeheer - Server-kant the-content-fragment-management-api-server-side
U kunt de server-kant API gebruiken om tot uw inhoudsfragmenten toegang te hebben; zie:
Belangrijke interfaces key-interfaces
De volgende drie interfaces kunnen als ingangspunten dienen:
-
Inhoudsfragment (ContentFragment)
Met deze interface kunt u op abstracte wijze met een inhoudsfragment werken.
De interface voorziet u van de middelen:
-
Standaardgegevens beheren (bijvoorbeeld naam ophalen; titel/beschrijving ophalen/instellen)
-
Toegang tot metagegevens
-
Toegangselementen:
-
Lijstelementen
-
Elementen op naam ophalen
-
Elementen maken (zie Caveats)
-
Gegevens over toegangselementen (zie
ContentElement
)
-
-
Variaties weergeven die zijn gedefinieerd voor het fragment
-
Wereldwijd variaties maken
-
Gekoppelde inhoud beheren:
- Lijstverzamelingen
- Verzamelingen toevoegen
- Verzamelingen verwijderen
-
Toegang krijgen tot het model van het fragment
De interfaces die de belangrijkste elementen van een fragment vertegenwoordigen zijn:
-
Inhoud-element (ContentElement)
-
Basisgegevens ophalen (naam, titel, beschrijving)
-
Inhoud ophalen/instellen
-
Toegang tot variaties van een element:
-
Sneltoets voor het oplossen van variaties (door een aanvullende, implementatiespecifieke fallback-logica toe te passen als de opgegeven variatie niet beschikbaar is voor een element)
-
-
Inhoudsvariatie (ContentVariation)
- Basisgegevens ophalen (naam, titel, beschrijving)
- Inhoud ophalen/instellen
- Eenvoudige synchronisatie, gebaseerd op laatst gewijzigde informatie
Alle drie de interfaces (
ContentFragment
,ContentElement
,ContentVariation
) deVersionable
interface, die versiemogelijkheden toevoegt, vereist voor inhoudsfragmenten:- Een versie van het element maken
- Versies van het element weergeven
- Hiermee wordt de inhoud opgehaald van een specifieke versie van het element met versiebeheer
-
Aanpassen - Using adjustTo() adapting-using-adaptto
Het volgende kan worden aangepast:
-
ContentFragment
kan worden aangepast aan:-
Resource
- de onderliggende sloopbron; actualisering van de onderliggendeResource
rechtstreeks vereist dat deContentFragment
object. -
Asset
- de DAMAsset
abstractie die het inhoudsfragment vertegenwoordigt; het bijwerken vanAsset
rechtstreeks vereist dat deContentFragment
object.
-
-
ContentElement
kan worden aangepast aan:ElementTemplate
- voor toegang tot de structurele informatie van het element.
-
Resource
kan worden aangepast aan:ContentFragment
Caveats caveats
Er zij op gewezen dat:
-
De gehele API is ontworpen voor niet Wijzigingen automatisch aanhouden (tenzij anders vermeld in de API JavaDoc). Zo, begaat altijd de middeloplosser van het respectieve verzoek (of resolver u eigenlijk gebruikt).
-
Taken die extra inspanning zouden kunnen vereisen:
-
Adobe raadt u aan variaties te maken op basis van
ContentFragment
. Dit zorgt ervoor dat alle elementen deze variatie delen en dat de juiste algemene gegevensstructuren zo nodig worden bijgewerkt om de nieuwe variatie in de inhoudsstructuur te weerspiegelen. -
Bestaande variaties verwijderen door een element, gebruiken
ContentElement.removeVariation()
, worden de algemene gegevensstructuren die aan de variatie zijn toegewezen, niet bijgewerkt. Om ervoor te zorgen dat deze gegevensstructuren synchroon blijven, gebruikt uContentFragment.removeVariation()
in plaats daarvan, die een variatie globaal verwijdert.
-
De API voor contentfragmentbeheer - Client-kant the-content-fragment-management-api-client-side
Aanvullende informatie additional-information
Zie het volgende:
-
filter.xml
De
filter.xml
voor inhoudsfragmentbeheer is zo geconfigureerd dat dit niet overlapt met het elementeninhoudspakket.
Sessies bewerken edit-sessions
Het bewerken van een inhoudsfragment, dat meerdere weergaven kan beslaan (= HTML pagina's), is atomisch. Aangezien dergelijke atomische multi-view bewerkingsmogelijkheden geen typisch AEM concept zijn, gebruiken de inhoudsfragmenten wat wordt genoemd een bewerksessie.
Er wordt een bewerkingssessie gestart wanneer de gebruiker een inhoudsfragment in de editor opent. De bewerkingssessie is voltooid wanneer de gebruiker de editor verlaat door een van de volgende opties te selecteren Opslaan of Annuleren.
Technisch gezien worden alle bewerkingen uitgevoerd op leven inhoud, net als bij alle andere AEM bewerkingen. Wanneer de bewerkingssessie wordt gestart, wordt een versie van de huidige, onbewerkte status gemaakt. Als een gebruiker een bewerking annuleert, wordt die versie hersteld. Als de gebruiker klikt Opslaan Er wordt niets specifieks gedaan, omdat de bewerking is uitgevoerd op leven de inhoud, dus alle wijzigingen blijven al bestaan. Klik ook op Opslaan veroorzaakt sommige achtergrondverwerking zoals het creëren van volledige tekst onderzoeksinformatie, of het behandelen van gemengde media activa, of allebei.
Er zijn enkele veiligheidsmaatregelen voor randgevallen, bijvoorbeeld als de gebruiker de editor probeert te verlaten zonder de bewerkingssessie op te slaan of te annuleren. Er is ook een periodieke automatische opslag beschikbaar om gegevensverlies te voorkomen.
Twee gebruikers kunnen hetzelfde inhoudsfragment gelijktijdig bewerken en daarom elkaars wijzigingen overschrijven. Om dit te voorkomen, moet het inhoudsfragment worden vergrendeld door toepassing van de DAM-beheerfunctie Afhandeling handeling op het fragment.
Voorbeelden examples
Voorbeeld: een bestaand inhoudsfragment openen example-accessing-an-existing-content-fragment
Hiertoe kunt u de bron die de API vertegenwoordigt aanpassen aan:
com.adobe.cq.dam.cfm.ContentFragment
Bijvoorbeeld:
// first, get the resource
Resource fragmentResource = resourceResolver.getResource("/content/dam/fragments/my-fragment");
// then adapt it
if (fragmentResource != null) {
ContentFragment fragment = fragmentResource.adaptTo(ContentFragment.class);
// the resource is now accessible through the API
}
Voorbeeld: een inhoudsfragment maken example-creating-a-new-content-fragment
Als u een inhoudsfragment programmatisch wilt maken, gebruikt u een FragmentTemplate
aangepast aan een modelbron.
Bijvoorbeeld:
Resource modelRsc = resourceResolver.getResource("...");
FragmentTemplate tpl = modelRsc.adaptTo(FragmentTemplate.class);
ContentFragment newFragment = tpl.createFragment(parentRsc, "A fragment name", "A fragment description.");
Voorbeeld: het interval voor automatisch opslaan opgeven example-specifying-the-auto-save-interval
De automatisch opslaan, interval (gemeten in seconden) kan worden gedefinieerd met behulp van configuratiemanager (ConfMgr):
-
Knooppunt:
<conf-root>/settings/dam/cfm/jcr:content
-
Naam eigenschap:
autoSaveInterval
-
Type:
Long
-
Standaard:
600
(10 minuten); dit wordt gedefinieerd op/libs/settings/dam/cfm/jcr:content
Als u een auto-sparen interval van 5 minuten wilt plaatsen, bepaal het bezit op uw knoop.
Bijvoorbeeld:
-
Knooppunt:
/conf/global/settings/dam/cfm/jcr:content
-
Naam eigenschap:
autoSaveInterval
-
Type:
Long
-
Waarde:
300
(5 minuten komt overeen met 300 seconden)
Componenten voor paginaontwerp components-for-page-authoring
Zie voor meer informatie
- Kerncomponenten - component Inhoudsfragment (aanbevolen)