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:
-
Creërend en het Leiden de Fragmenten van de Inhouden Pagina Authoring met de Fragmenten van de Inhoudvoor verdere informatie over inhoudsfragmenten.
-
het Leiden Assetsvoor verdere informatie over standaardactiva.
Architectuur architecture
De basis samenstellende delenvan een inhoudsfragment zijn het volgende:
- A het Fragment van de Inhoud zelf
- Het bestaat uit één of meerdere Elementen van de Inhoud
- Het kan één of meerdere Variaties van de Inhoud hebben
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 hebben.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 Assets integration-of-sites-with-assets
Content Fragment Management (CFM) maakt deel uit van Adobe Experience Manager (AEM) Assets als:
- Inhoudsfragmenten zijn elementen.
- Ze gebruiken de bestaande Assets-functionaliteit.
- Ze zijn volledig geïntegreerd met Assets (beheerconsoles, enzovoort).
Inhoudsfragmenten worden als een AEM Sites-functie beschouwd:
- Deze worden gebruikt bij het ontwerpen van uw pagina's.
Inhoudsfragmenten toewijzen aan Assets mapping-content-fragments-to-assets
Inhoudsfragmenten, gebaseerd op een inhoudsfragmentmodel, worden toegewezen aan één element:
-
Alle inhoud wordt opgeslagen onder het knooppunt
jcr:content/data
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 de respectieve subnode opgeslagen als een bezit met de elementnaam:
De inhoud van elementtext
wordt bijvoorbeeld opgeslagen als eigenschaptext
onjcr:content/data/master
.
-
-
Metagegevens en bijbehorende inhoud worden opgeslagen onder
jcr:content/metadata
Met uitzondering van de titel en beschrijving, die niet als traditionele metagegevens worden beschouwd en worden opgeslagen opjcr:content
Locatie van element asset-location
Net als bij standaardelementen wordt een inhoudsfragment opgeslagen onder:
/content/dam
Elementmachtigingen asset-permissions
Zie het Fragment van de Inhoud - Schrap Overwegingen.
Functie-integratie feature-integration
Integreren met Assets core:
-
De functie CFM (Content Fragment Management) is gebaseerd op de Assets-kern.
-
CFM biedt zijn eigen implementaties voor items in de kaart-/kolom-/lijstweergaven; deze plug-in de bestaande Assets-implementaties voor het renderen van inhoud.
-
Verschillende Assets-componenten 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 verstrekt de kerncomponent van het Fragment van de Inhoud- a component die u inhoudsfragmenten op uw pagina'slaat omvatten. U kunt dit de kerncomponent van het Fragment van de Inhoud ook uitbreiden.
-
De component gebruikt de eigenschap
fragmentPath
om naar het daadwerkelijke inhoudsfragment te verwijzen. De eigenschapfragmentPath
wordt op dezelfde manier afgehandeld 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
De Fragmenten van de inhoud zijn volledig geïntegreerd met het AEM vertaalwerkschema. 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
:- Aangezien de modellen van het inhoudsfragment in
/conf
verblijven, zijn deze niet inbegrepen in dergelijke vertalingen. U kunt de UI-tekenreeksen internationaliseren.
-
-
schema's van Meta-gegevens
-
De fragmenten van de inhoud gebruiken en hergebruiken de meta-gegevensschema'sdie met standaardactiva kunnen worden bepaald.
-
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:
-
Fragment van de Inhoud ( 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
-
Creeer elementen (zie Gebieden)
-
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:
-
Element van de Inhoud ( 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)
-
-
de Variatie van de Inhoud ( ContentVariation)
- Basisgegevens ophalen (naam, titel, beschrijving)
- Inhoud ophalen/instellen
- Eenvoudige synchronisatie, gebaseerd op laatst gewijzigde informatie
Alle drie de interfaces (
ContentFragment
,ContentElement
,ContentVariation
) breiden deVersionable
-interface uit, die versiemogelijkheden toevoegt, die vereist zijn 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 Sling-bron; wanneer u de onderliggendeResource
rechtstreeks bijwerkt, moet hetContentFragment
-object opnieuw worden opgebouwd. -
Asset
- De DAMAsset
-abstractie die het inhoudsfragment vertegenwoordigt. Wanneer uAsset
rechtstreeks bijwerkt, moet hetContentFragment
-object opnieuw worden opgebouwd.
-
-
ContentElement
kan worden aangepast aan:ElementTemplate
- voor de toegang tot van de structurele informatie van het element.
-
Resource
kan worden aangepast aan:ContentFragment
Caveats caveats
Er zij op gewezen dat:
-
Volledige API wordt ontworpen om niet veranderingen automatisch te handhaven (tenzij anders vermeld in 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 om variaties te maken vanuit
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. -
Wanneer u bestaande variaties via een element verwijdert, werkt u met
ContentElement.removeVariation()
de algemene gegevensstructuren die aan de variatie zijn toegewezen, niet bij. Om ervoor te zorgen dat deze gegevensstructuren gesynchroniseerd blijven, gebruikt uContentFragment.removeVariation()
, waarmee een variatie wereldwijd wordt verwijderd.
-
De API voor contentfragmentbeheer - Client-kant the-content-fragment-management-api-client-side
Aanvullende informatie additional-information
Zie het volgende:
-
filter.xml
Het
filter.xml
for content fragment management is zo geconfigureerd dat het niet overlapt met het Assets core content package.
Sessies bewerken edit-sessions
Het bewerken van een inhoudsfragment, dat meerdere weergaven kan beslaan (= HTML pagina's), is atomisch. Als zulk atoommulti-mening uitgeeft mogelijkheden zijn geen typisch AEM concept, gebruiken de inhoudsfragmenten wat een het uitgeven zitting wordt genoemd.
Er wordt een bewerkingssessie gestart wanneer de gebruiker een inhoudsfragment in de editor opent. De het uitgeven zitting wordt gebeëindigd wanneer de gebruiker de redacteur door of te selecteren sparen of annuleert.
Technisch, worden alle uitgeeft gedaan op levende inhoud, zoals met alle andere AEM het uitgeven. 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 sparen klikt, wordt niets specifiek gedaan, omdat het uitgeven op levende inhoud in werking werd gesteld, daarom worden alle veranderingen reeds voortgeduurd. Ook, leidt het klikken sparen sommige achtergrondverwerking zoals het creëren van volledige informatie van het tekstonderzoek, 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 verhinderen, moet het inhoudsfragment worden gesloten door de handeling van de Controle van DAM van het beleid ** op het fragment toe te passen.
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
die is aangepast op basis van 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
Het auto-sparen interval(die in seconden wordt gemeten) kan worden bepaald gebruikend de configuratiemanager (ConfMgr):
-
Knooppunt:
<conf-root>/settings/dam/cfm/jcr:content
-
Eigenschapnaam:
autoSaveInterval
-
Type:
Long
-
Standaard:
600
(10 minuten); dit is gedefinieerd voor/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
-
Eigenschapnaam:
autoSaveInterval
-
Type:
Long
-
Waarde:
300
(5 minuten komt overeen met 300 seconden)
Componenten voor paginaontwerp components-for-page-authoring
Zie voor meer informatie