Anpassa och utöka Content Fragments

Inom Adobe Experience Manager as a Cloud Service utökar ett innehållsfragment en standardresurs. se:

Arkitektur

Grundläggande beståndsdelar för ett innehållsfragment är:

  • A Innehållsfragment,
  • bestående av en eller flera Innehållselement,
  • och som kan ha en eller flera Innehållsvariationer.

De enskilda innehållsfragmenten baseras på modeller för innehållsfragment:

  • Modeller för innehållsfragment definierar strukturen för ett innehållsfragment när det skapas.

  • Ett fragment refererar till modellen. så ändringar i modellen kan/kommer att påverka beroende fragment.

  • Modeller är inbyggda i datatyper.

  • Funktioner för att lägga till nya varianter, osv., måste uppdatera fragmentet därefter.

    OBSERVERA

    För att du ska kunna visa/återge ett innehållsfragment måste ditt konto ha read behörigheter för modellen.

    FÖRSIKTIGHET

    Alla ändringar i en befintlig innehållsfragmentmodell kan påverka beroende fragment. detta kan leda till egenskaper som är överblivna i dessa fragment.

Integrering av webbplatser med resurser

Content Fragment Management (CFM) ingår i AEM Assets som:

  • Innehållsfragment är resurser.
  • De använder befintliga Assets-funktioner.
  • De är helt integrerade med Assets (Admin Consoles, etc.).

Innehållsfragment betraktas som en webbplatsfunktion som:

  • De används när du redigerar sidorna.

Mappa innehållsfragment till resurser

innehållsfragment till resurser

Innehållsfragment, som baseras på en innehållsfragmentmodell, mappas till en enda resurs:

  • Allt innehåll lagras under jcr:content/data resursens nod:

    • Elementdata lagras under den överordnad undernoden:

      jcr:content/data/master

    • Variationer lagras under en undernod som har variantens namn: till exempel jcr:content/data/myvariation

    • Data för varje element lagras i respektive undernod som en egenskap med elementnamnet: till exempel elementets innehåll text lagras som egenskap textjcr:content/data/master

  • Metadata och tillhörande innehåll lagras nedan jcr:content/metadata
    Förutom rubriken och beskrivningen, som inte betraktas som traditionella metadata och lagras på
    jcr:content

Resursplats

Precis som med standardresurser finns ett innehållsavdrag under:

/content/dam

Tillgångsbehörigheter

Mer information finns i Innehållsfragment - Ta bort överväganden.

Funktionsintegrering

Integrera med Assets Core:

  • Funktionen Content Fragment Management (CFM) bygger på Assets core.

  • CFM tillhandahåller egna implementeringar för objekt i vyerna kort/kolumn/lista. dessa plugin-program i befintliga resursåtergivningsimplementationer.

  • Flera Assets-komponenter har utökats för att passa innehållsfragment.

Använda innehållsfragment på sidor

Innehållsfragment kan refereras från AEM sidor, precis som andra resurstyper. AEM tillhandahåller Kärnkomponent för innehållsfragment - en som gör att du kan ta med innehållsfragment på sidorna. Du kan även utöka den här Innehållsfragment kärnkomponent.

  • Komponenten använder fragmentPath -egenskap som refererar till det faktiska innehållsfragmentet. The fragmentPath Egenskapen hanteras på samma sätt som liknande egenskaper för andra tillgångstyper. till exempel när innehållsfragmentet flyttas till en annan plats.

  • Med komponenten kan du välja varianten som ska visas.

  • Dessutom kan ett antal stycken väljas för att begränsa utdata. Detta kan till exempel användas för utdata med flera kolumner.

  • Komponenten tillåter mellanliggande innehåll:

    • Här kan du placera andra resurser (bilder, etc.) mellan styckena i det refererade fragmentet.

    • För det mellanliggande innehållet behöver du:

      • vara medvetna om risken för instabila referenser, mellanliggande innehåll (som läggs till när en sida redigeras) har ingen fast relation till det stycke som det placeras bredvid, och infogning av ett nytt stycke (i innehållsfragmentredigeraren) innan placeringen av det mellanliggande innehållet kan förlora den relativa positionen

      • överväga ytterligare parametrar (till exempel variant- och styckefilter) för att konfigurera vad som ska återges på sidan

OBSERVERA

Content Fragment Model:

När ett innehållsfragment används på en sida refereras innehållsfragmentmodellen som det baseras på.

Det innebär att om modellen inte har publicerats när du publicerar sidan, kommer den att flaggas och läggas till i resurserna som ska publiceras med sidan.

Integrering med andra ramar

Innehållsfragment kan integreras med:

  • Översättningar

    Innehållsfragment är helt integrerade med Arbetsflöde för AEM. Arkitekturnivå innebär följande:

    • De enskilda översättningarna av ett innehållsfragment är i själva verket separata fragment. till exempel:

      • De finns under olika språkrötter. men har exakt samma relativa sökväg under den relevanta språkroten:

        /content/dam/<path>/en/<to>/<fragment>

        jämfört med

        /content/dam/<path>/de/<to>/<fragment>

    • Förutom de regelbaserade sökvägarna finns det ingen ytterligare koppling mellan de olika språkversionerna av ett innehållsfragment. De hanteras som två separata fragment, även om användargränssnittet ger möjlighet att navigera mellan språkvarianterna.

    OBSERVERA

    Det AEM arbetsflödet för översättning fungerar med /content:

    • När innehållsfragmentsmodellerna finns i /conf, ingår de inte i sådana översättningar. Du kan internationalisera gränssnittssträngarna.
  • Metadata-scheman

    • Innehållsfragment (återanvänd) metadatamodeller, som kan definieras med standardresurser.

    • CFM har ett eget specifikt schema:

      /libs/dam/content/schemaeditors/forms/contentfragment

      detta kan vid behov förlängas.

    • respektive schemaformulär är integrerat med fragmentredigeraren.

API för hantering av innehållsfragment - serversidan

Du kan använda serversidans API för att komma åt dina innehållsfragment; se:

com.adobe.cq.dam.cfm

FÖRSIKTIGHET

Vi rekommenderar att du använder serversidans API i stället för att komma åt innehållsstrukturen direkt.

Nyckelgränssnitt

Följande tre gränssnitt kan fungera som startpunkter:

  • Innehållsfragment (ContentFragment)

    Med det här gränssnittet kan du arbeta med ett innehållsfragment på ett abstrakt sätt.

    Gränssnittet ger dig möjlighet att

    • Hantera grundläggande data (till exempel get name;) get/set title/description)

    • Åtkomst till metadata

    • Åtkomstelement:

      • Listelement

      • Hämta element efter namn

      • Skapa nya element (se Caveats)

      • Åtkomst till elementdata (se ContentElement)

    • Listvarianter definierade för fragmentet

    • Skapa nya varianter globalt

    • Hantera associerat innehåll:

      • Listsamlingar
      • Lägg till samlingar
      • Ta bort samlingar
    • Åtkomst till fragmentets modell

    Gränssnitt som representerar de primära elementen i ett fragment är:

    • Innehållselement (ContentElement)

      • Hämta grundläggande data (namn, titel, beskrivning)

      • Hämta/ange innehåll

      • Få åtkomst till varianter av ett element:

        • Listvarianter
        • Hämta varianter efter namn
        • Skapa nya varianter (se Caveats)
        • Ta bort variationer (se Caveats)
        • Åtkomst till variantdata (se ContentVariation)
      • Kortkommando för att matcha variationer (tillämpa ytterligare, implementeringsspecifik reservlogik om den angivna varianten inte är tillgänglig för ett element)

    • Innehållsvariation (ContentVariation)

      • Hämta grundläggande data (namn, titel, beskrivning)
      • Hämta/ange innehåll
      • Enkel synkronisering, baserat på den senast ändrade informationen

    Alla tre gränssnitten ( ContentFragment, ContentElement, ContentVariation) utöka Versionable gränssnitt, som lägger till versionsfunktioner, som krävs för innehållsfragment:

    • Skapa en ny version av elementet
    • Lista versioner av elementet
    • Hämta innehållet i en specifik version av det versionshanterade elementet

Adapting - Using customito()

Följande kan anpassas:

  • ContentFragment kan anpassas till

    • Resource - den underliggande Sling-resursen, uppdatera underliggande Resource kräver ombyggnad av ContentFragment -objekt.

    • Asset - DAM Asset abstraktion som representerar innehållsfragmentet, uppdatera Asset kräver ombyggnad av ContentFragment -objekt.

  • ContentElement kan anpassas till

  • FragmentTemplate

  • Resource kan anpassas till

    • ContentFragment

Caveats

Det bör noteras att

  • Hela API:t är utformat för not Bevara ändringarna automatiskt (om inget annat anges i API JavaDoc). Därför måste du alltid implementera resurslösaren för respektive begäran (eller den lösare som du använder).

  • Uppgifter som kan kräva ytterligare arbete:

    • Vi rekommenderar starkt att du skapar nya varianter av ContentFragment. Detta garanterar att alla element delar den här variationen och att lämpliga globala datastrukturer uppdateras efter behov för att återspegla den nyligen skapade variationen i innehållsstrukturen.

    • Ta bort befintliga variationer genom ett element med ContentElement.removeVariation(), kommer inte att uppdatera de globala datastrukturer som är tilldelade varianten. Använd ContentFragment.removeVariation() som i stället tar bort en variant globalt.

API:t för hantering av innehållsfragment - klientsidan

FÖRSIKTIGHET

Klientsidans API är internt.

Ytterligare information

Se följande:

  • filter.xml

    The filter.xml för hantering av innehållsfragment konfigureras så att den inte överlappar det centrala resurspaketet.

Redigera sessioner

FÖRSIKTIGHET

Ta hänsyn till den här bakgrundsinformationen. Du ska inte ändra någonting här (eftersom det är markerat som en privat område i databasen), men det kan i vissa fall hjälpa dig att förstå hur saker och ting fungerar under huven.

Att redigera ett innehållsfragment, som kan sträcka sig över flera vyer (= HTML-sidor), är atomiskt. Eftersom sådana atomiska redigeringsfunktioner för flera vyer inte är ett vanligt AEM, används det som kallas för ett innehållsfragment redigeringssession.

En redigeringssession startas när användaren öppnar ett innehållsfragment i redigeraren. Redigeringssessionen är slut när användaren lämnar redigeraren genom att välja antingen Spara eller Avbryt.

Tekniskt sett utförs alla redigeringar på live innehåll, precis som med all annan AEM redigering. När redigeringssessionen startas skapas en version av den aktuella, oredigerade statusen. Om en användare avbryter en redigering återställs den versionen. Om användaren klickar på Spara, inget specifikt görs eftersom all redigering kördes på live därför bevaras alla ändringar redan. Klicka även på Spara kommer att utlösa viss bakgrundsbearbetning (till exempel att skapa fullständig textsökningsinformation och/eller hantera blandade medieresurser).

Det finns vissa säkerhetsåtgärder för kantfall. Om användaren till exempel försöker lämna redigeraren utan att spara eller avbryta redigeringssessionen. Det går även att spara data med jämna mellanrum för att förhindra dataförlust.
Observera att två användare kan redigera samma innehållsfragment samtidigt och därför skriva över varandras ändringar. För att förhindra detta måste innehållsfragmentet låsas genom att tillämpa DAM-administrationens Utcheckning åtgärd på fragmentet.

Exempel

Exempel: Åtkomst till ett befintligt innehållsfragment

För att uppnå detta kan du anpassa resursen som representerar API:t till:

com.adobe.cq.dam.cfm.ContentFragment

Till exempel:

// 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
}

Exempel: Skapa ett nytt innehållsfragment

Om du vill skapa ett nytt innehållsfragment programmatiskt måste du använda en
FragmentTemplate anpassas från en modellresurs.

Till exempel:

Resource modelRsc = resourceResolver.getResource("...");
FragmentTemplate tpl = modelRsc.adaptTo(FragmentTemplate.class);
ContentFragment newFragment = tpl.createFragment(parentRsc, "A fragment name", "A fragment description.");

Exempel: Ange intervall för autosparande

The autosparintervall (mätt i sekunder) kan definieras med konfigurationshanteraren (ConfMgr):

  • Nod: <conf-root>/settings/dam/cfm/jcr:content

  • Egenskapsnamn: autoSaveInterval

  • Typ: Long

  • Standard: 600 (10 minuter); detta definieras på /libs/settings/dam/cfm/jcr:content

Om du vill ange ett intervall för automatiskt sparande på 5 minuter måste du definiera egenskapen på din nod; till exempel:

  • Nod: /conf/global/settings/dam/cfm/jcr:content

  • Egenskapsnamn: autoSaveInterval

  • Typ: Long

  • Värde: 300 (5 minuter motsvarar 300 sekunder)

Komponenter för sidredigering

Mer information finns i

På denna sida