Inhoud modelleren voor WYSIWYG Authoring met Edge Delivery Services Projecten content-modeling
Leer hoe contentmodellering werkt voor WYSIWYG Authoring met Edge Delivery Services projecten en hoe u uw eigen inhoud kunt modelleren.
Vereisten prerequisites
De projecten die WYSIWYG Authoring met Edge Delivery Services gebruiken erven de meerderheid van de mechanica van een ander Edge Delivery Services-project, onafhankelijk van de inhoudsbron of auteursmethode.
Voordat u begint met het modelleren van inhoud voor uw project, moet u eerst de volgende documentatie lezen.
Het is van essentieel belang dat u deze concepten begrijpt om te komen tot een aansprekend inhoudsmodel dat op een bronagnostische manier werkt. Dit document bevat informatie over de mechanismen die specifiek zijn geïmplementeerd voor WYSIWYG-authoring.
Standaardinhoud default-content
Standaard inhoud is inhoud een auteur intuïtief op een pagina zou zetten zonder extra semantiek toe te voegen. Dit omvat tekst, koppen, koppelingen en afbeeldingen. Deze inhoud spreekt voor zich in zijn functie en doel.
In AEM, wordt deze inhoud uitgevoerd als componenten met zeer eenvoudige, vooraf bepaalde modellen, die alles omvatten die in Prijsvermindering en HTML kan in series worden vervaardigd.
- Tekst: Rijke tekst (met inbegrip van lijstelementen en sterke of cursieve tekst)
- Titel: Tekst, type (h1-h6)
- Beeld: Source, beschrijving
- Knoop: Tekst, titel, url, type (gebrek, primair, secundair)
Het model van deze componenten maakt deel uit van Boilerplate voor WYSIWYG creatie met Edge Delivery Services.
Blokken blocks
Blokken worden gebruikt om rijkere inhoud met specifieke stijlen en functionaliteit te maken. In tegenstelling tot de standaardinhoud, vereisen de blokken extra semantiek.
Blokken zijn in wezen stukken inhoud die door JavaScript zijn versierd en met een stijlblad zijn opgemaakt.
Blokmodeldefinitie model-definition
Wanneer u WYSIWYG-authoring met Edge Delivery Services gebruikt, moet de inhoud van blokken expliciet worden gemodelleerd om de auteur de interface te bieden voor het maken van inhoud. In principe moet u een model maken, zodat de ontwerpgebruikersinterface weet welke opties op basis van het blok aan de auteur moeten worden voorgesteld.
Het component-models.json
dossier bepaalt het model van blokken. De velden die in het componentmodel worden gedefinieerd, blijven behouden als eigenschappen in AEM en worden weergegeven als cellen in de tabel waaruit een blok bestaat.
{
"id": "hero",
"fields": [
{
"component": "reference",
"valueType": "string",
"name": "image",
"label": "Image",
"multi": false
},
{
"component": "text-input",
"valueType": "string",
"name": "imageAlt",
"label": "Alt",
"value": ""
},
{
"component": "text-area",
"name": "text",
"value": "",
"label": "Text",
"valueType": "string"
}
]
}
Merk op dat niet elk blok een model moet hebben. Sommige blokken zijn eenvoudig containersvoor een lijst van kinderen, waar elk kind zijn eigen model heeft.
Het is ook nodig om te bepalen welke blokken bestaan en aan een pagina kunnen worden toegevoegd gebruikend de Universele Redacteur. Het component-definitions.json
dossier maakt een lijst van de componenten aangezien zij door de Universele Redacteur ter beschikking worden gesteld.
{
"title": "Hero",
"id": "hero",
"plugins": {
"xwalk": {
"page": {
"resourceType": "core/franklin/components/block/v1/block",
"template": {
"name": "Hero",
"model": "hero"
}
}
}
}
}
Het is mogelijk om één model voor vele blokken te gebruiken. Sommige blokken kunnen bijvoorbeeld een model delen dat een tekst en afbeelding definieert.
Voor elk blok:
- Moet het
core/franklin/components/block/v1/block
middeltype, de generische implementatie van de bloklogica in AEM gebruiken. - U moet de bloknaam definiëren. Deze wordt weergegeven in de tabelkoptekst van het blok.
- De bloknaam wordt gebruikt om de juiste stijl en het script op te halen om het blok te versieren.
- Kan a modelidentiteitskaart bepalen.
- De model-id is een verwijzing naar het model van de component, dat de velden definieert die beschikbaar zijn voor de auteur in het deelvenster Eigenschappen.
- Kan a filteridentiteitskaart bepalen.
- De filterID is een verwijzing naar het filter van de component, dat toestaat om het auteursgedrag te veranderen, bijvoorbeeld door te beperken welke kinderen aan het blok of de sectie kunnen worden toegevoegd, of welke eigenschappen RTE worden toegelaten.
Al deze informatie wordt opgeslagen in AEM wanneer een blok aan een pagina wordt toegevoegd. Als het middeltype of de bloknaam ontbreken, zal het blok niet op de pagina teruggeven.
Blokstructuur block-structure
De eigenschappen van blokken worden bepaald in de componentenmodellenen als dusdanig voortgeduurd in AEM. Eigenschappen worden als cellen gerenderd in de tabelachtige structuur van het blok.
Eenvoudige blokken simple
In de eenvoudigste vorm geeft een blok elke eigenschap weer in één rij/kolom in de volgorde waarin de eigenschappen in het model zijn gedefinieerd.
In het volgende voorbeeld wordt de afbeelding eerst in het model gedefinieerd en vervolgens de tekst. Ze worden dus eerst met de afbeelding en vervolgens met de tekst gerenderd.
code language-json |
---|
|
code language-html |
---|
|
code language-text |
---|
|
Het kan opvallen dat bepaalde typen waarden het afleiden van semantiek in de opmaak toestaan en dat eigenschappen in één cel worden gecombineerd. Dit gedrag wordt beschreven in de sectie Inferentie van het Type.
Key-Value-blok key-value
In veel gevallen is het raadzaam de gerenderde semantische opmaakcode te decoreren, CSS-klassennamen toe te voegen, nieuwe knooppunten toe te voegen of deze in de DOM te verplaatsen en stijlen toe te passen.
In andere gevallen echter, wordt het blok gelezen als sleutel-waarde paar-als configuratie.
Een voorbeeld van dit is de sectiemetagegevens. In dit gebruiksgeval, kan het blok worden gevormd om als sleutel-waarde paarlijst terug te geven. Gelieve te zien de sectie Secties en Metagegevens van de Sectievoor meer informatie.
code language-json |
---|
|
code language-html |
---|
|
code language-text |
---|
|
Containerblokken container
Beide structuren hebben één dimensie: de lijst met eigenschappen. Met behulp van containerblokken kunnen onderliggende elementen worden toegevoegd (meestal van hetzelfde type of model) en zijn deze dus tweedimensionaal. Deze blokken ondersteunen nog steeds hun eigen eigenschappen die worden gerenderd als rijen met eerst één kolom. Maar zij staan ook toe toevoegend kinderen, waarvoor elk punt als rij en elk bezit als kolom binnen die rij wordt teruggegeven.
In het volgende voorbeeld accepteert een blok een lijst met gekoppelde pictogrammen als onderliggende pictogrammen, waarbij elk gekoppeld pictogram een afbeelding en een koppeling heeft. Merk filteridentiteitskaartop die in de gegevens van het blok wordt geplaatst om de filterconfiguratie van verwijzingen te voorzien.
code language-json |
---|
|
code language-html |
---|
|
code language-text |
---|
|
Semantische inhoudsmodellen maken voor blokken creating-content-models
Met de mechanica van verklaarde blokstructuur,is het mogelijk om een inhoudsmodel tot stand te brengen dat inhoud in AEM één-aan-één aan de leveringsrij voortzette in kaart brengt.
Vroeg in elk project, moet een inhoudsmodel zorgvuldig worden overwogen voor elk blok. De functie moet niet op de hoogte zijn van de inhoudsbron en de ervaring die u hebt opgedaan om auteurs de mogelijkheid te geven om te schakelen of te combineren terwijl ze blokimplementaties en -stijlen opnieuw gebruiken. Meer details en algemene begeleiding kunnen in het Model van David worden gevonden (neem 2). Specifieker, bevat de blokinzamelingeen uitgebreide reeks inhoudsmodellen voor specifieke gebruiksgevallen van gemeenschappelijke gebruikersinterfacepatronen.
Voor WYSIWYG-authoring met Edge Delivery Services roept dit de vraag op hoe een aansprekend semantisch inhoudsmodel kan worden gebruikt wanneer de informatie wordt geschreven met formulieren die uit meerdere velden bestaan, in plaats van semantische opmaak in context te bewerken, zoals RTF-tekst.
U kunt dit probleem oplossen door drie methoden te gebruiken waarmee u een aansprekend inhoudsmodel kunt maken:
Type-gevolgtrekking type-inference
Voor sommige waarden kunnen we de semantische betekenis afleiden van de waarden zelf. Deze waarden zijn onder meer:
- Beelden - als een verwijzing naar een middel in AEM een activa met een type MIME is dat met
image/
begint, wordt de verwijzing teruggegeven als<picture><img src="${reference}"></picture>
. - Verbindingen - als een verwijzing in AEM bestaat en geen beeld is, of als de waarde met
https?://
of#
begint, wordt de verwijzing teruggegeven als<a href="${reference}">${reference}</a>
. - Rijke Tekst - als een in orde gemaakte waarde met een paragraaf (
p
,ul
,ol
,h1
-h6
, enz.) begint, wordt de waarde teruggegeven als rijke tekst. - Namen van de Klasse - het
classes
bezit wordt behandeld als blokoptiesen in de lijstkopbal voor eenvoudige blokken,of als waardelijst voor punten in a containerblok teruggegeven. Het is nuttig als u wenst om een blok verschillend te stileren,maar te hoeven om geen volledig nieuw blok tot stand te brengen. - Lijsten van de Waarde - als een waarde een multi-waardebezit is en de eerste waarde geen van het vorige is, worden alle waarden samengevoegd als komma-gescheiden lijst.
Alle andere elementen worden weergegeven als onbewerkte tekst.
Veld samenvouwen field-collapse
Veld samenvouwen is het mechanisme voor het combineren van meerdere veldwaarden in één semantisch element op basis van een naamgevingsconventie met de achtervoegsels Title
, Type
, MimeType
, Alt
en Text
(allemaal hoofdlettergevoelig). Een eigenschap die eindigt met een van deze achtervoegsels wordt niet als een waarde beschouwd, maar als een kenmerk van een andere eigenschap.
Afbeeldingen image-collapse
code language-json |
---|
|
code language-html |
---|
|
code language-text |
---|
|
Koppelingen en knoppen links-buttons-collapse
code language-json |
---|
|
Geen linkType
of linkType=default
code language-html |
---|
|
linkType=primary
code language-html |
---|
|
linkType=secondary
code language-html |
---|
|
code language-text |
---|
|
Koppen headings-collapse
code language-json |
---|
|
code language-html |
---|
|
code language-text |
---|
|
Elementgroepering element-grouping
Terwijl het gebied samenvouwtover het combineren van veelvoudige eigenschappen in één enkel semantisch element is, element groepering over het aaneenschakelen van veelvoudige semantische elementen in één enkele cel. Dit is met name handig in gevallen waarin de auteur moet worden beperkt in het type en het aantal elementen dat hij kan maken.
Met een teaser-component kan de auteur bijvoorbeeld alleen een ondertitel, titel en een enkele alinealijn maken, gecombineerd met maximaal twee actieknoppen. Als u deze elementen groepeert, levert dit een semantische opmaak op die zonder verdere actie kan worden opgemaakt.
Bij elementgroepering wordt een naamgevingsconventie gebruikt, waarbij de groepsnaam van elke eigenschap in de groep wordt gescheiden door een onderstrepingsteken. Veldsamenvouwen van de eigenschappen in een groep werkt zoals eerder beschreven.
code language-json |
---|
|
code language-html |
---|
|
code language-text |
---|
|
Secties en sectiemetagegevens sections-metadata
De zelfde manier een ontwikkelaar kan veelvoudige blokken bepalen en modelleren,zij kunnen verschillende secties bepalen.
Het inhoudsmodel van Edge Delivery Services staat opzettelijk slechts één enkel niveau van het nesten toe, dat om het even welke standaardinhoud of een blok bevat door een sectie is. Dit betekent dat, om complexere visuele componenten te hebben die andere componenten kunnen bevatten, zij als secties moeten worden gemodelleerd en samen moeten worden gecombineerd gebruikend auto-blokkerende cliëntkant. Typische voorbeelden hiervan zijn tabbladen en inklapbare secties zoals accordeons.
Een sectie kan op dezelfde manier als een blok worden gedefinieerd, maar met het middeltype van core/franklin/components/section/v1/section
. De secties kunnen een naam en a filteridentiteitskaart hebben,die door de Universele Redacteurslechts wordt gebruikt, evenals a modelidentiteitskaart,die wordt gebruikt om de sectiemetagegevens terug te geven. Het model is op deze manier het model van het blok met sectiemetagegevens, dat automatisch aan een sectie als sleutel-waardeblok zal worden toegevoegd als het niet leeg is.
modelidentiteitskaarten filteridentiteitskaartvan de standaardsectie is section
. Deze kan worden gebruikt om het gedrag van de standaardsectie te wijzigen. In het volgende voorbeeld worden enkele stijlen en een achtergrondafbeelding toegevoegd aan het metagegevensmodel van de sectie.
{
"id": "section",
"fields": [
{
"component": "multiselect",
"name": "style",
"value": "",
"label": "Style",
"valueType": "string",
"options": [
{
"name": "Fade in Background",
"value": "fade-in"
},
{
"name": "Highlight",
"value": "highlight"
}
]
},
{
"component": "reference",
"valueType": "string",
"name": "background",
"label": "Image",
"multi": false
}
]
}
In het volgende voorbeeld wordt een tabsectie gedefinieerd die kan worden gebruikt om een tabblok te maken door opeenvolgende secties te combineren met een kenmerk voor tabtitelgegevens in een tabblok tijdens automatische blokkering.
{
"title": "Tab",
"id": "tab",
"plugins": {
"xwalk": {
"page": {
"resourceType": "core/franklin/components/section/v1/section",
"template": {
"name": "Tab",
"model": "tab",
"filter": "section"
}
}
}
}
}
Metagegevens pagina page-metadata
Documenten kunnen een pagina meta-gegevensblok hebben,dat wordt gebruikt om te bepalen welke <meta>
elementen in <head>
van een pagina worden teruggegeven. De pagina-eigenschappen van pagina's in AEM as a Cloud Service worden toegewezen aan de pagina-eigenschappen die buiten het vak beschikbaar zijn voor Edge Delivery Services, zoals title
, description
, keywords
, enz.
Lees eerst de volgende documenten voordat u gaat onderzoeken hoe u uw eigen metagegevens kunt definiëren. Op deze manier krijgt u meer inzicht in het begrip metagegevens van pagina's.
Het is ook mogelijk om aanvullende metagegevens voor pagina's op twee manieren te definiëren.
Metagegevensspreadsheets metadata-spreadsheets
Het is mogelijk metagegevens per pad of per padpatroonbasis op een tabelachtige manier te definiëren in AEM as a Cloud Service. Er is een ontwerpgebruikersinterface voor tabelachtige gegevens beschikbaar die vergelijkbaar is met Excel- of Google-bladen.
Voor verdere details, te zien gelieve het document Gebruikend Spreadsheets om Gegevens in Tabel te beherenvoor meer informatie.
Pagina-eigenschappen page-properties
Veel van de standaardpagina-eigenschappen die beschikbaar zijn in AEM, worden toegewezen aan de desbetreffende pagina-metagegevens in een document. Dit geldt bijvoorbeeld voor title
, description
, robots
, canonical url
of keywords
. Er zijn ook enkele AEM-specifieke eigenschappen beschikbaar:
cq:lastModified
alsmodified-time
in de ISO8601-indeling- De tijd waarop het document voor het laatst is gepubliceerd als
published-time
in de ISO8601-indeling cq:tags
alscq-tags
als een door komma's gescheiden lijst met de tag-id's.
Het is ook mogelijk om een componentenmodel voor meta-gegevens van de douanepagina te bepalen, die aan de auteur in de Universele Redacteur ter beschikking zullen worden gesteld.
Hiertoe maakt u een componentmodel met de id page-metadata
.
{
"id": "page-metadata",
"fields": [
{
"component": "text",
"name": "theme",
"label": "Theme"
}
]
}
Volgende stappen next-steps
Nu u weet hoe te om inhoud te modelleren, kunt u blokken voor uw eigen Edge Delivery Services met het auteursproject van WYSIWYG tot stand brengen.
Zie het document Creërend Blokken Instrumented voor gebruik met de Universele Redacteurom te leren hoe te tot blokken die voor gebruik met de Universele Redacteur in WYSIWYG authoring met de projecten van Edge Delivery Services tot stand brengen.
Als u reeds vertrouwd met het creëren van blokken bent, te zien gelieve de document Begonnen Gids van de Ontwikkelaar Begonnen voor het auteursrecht van WYSIWYG met Edge Delivery Servicesom u aan de slag te krijgen met een nieuwe plaats van Adobe Experience Manager gebruikend Edge Delivery Services en de Universele Redacteur voor inhoud authoring.