Relazioni

In questa pagina

Una relazione unisce due collection e possiede i collegamenti tra le loro voci: l’autore di un post, i capitoli di una lezione, i prodotti correlati di un prodotto. Un campo reference vede una relazione da un’estremità e offre agli editor un selettore per essa.

Poiché la relazione possiede i collegamenti, entrambe le sue collection possono modificare lo stesso insieme. Lo slug, il nome di ciascun lato e il limite di quante voci ciascun lato può collegare appartengono alla relazione, così un campo su posts e un campo su authors non possono discordare sugli stessi collegamenti. EmDash memorizza i collegamenti fuori da entrambe le tabelle della collection, indicizzati per il gruppo di traduzione di ciascuna voce, così ogni traduzione di una voce condivide una selezione.

Le estremità sono il lato che collega e il lato collegato. In una relazione da posts ad authors, un campo su posts sceglie gli autori a cui un post si collega, e un campo su authors elenca i post che si collegano a esso.

Aggiungere una relazione

Entrambi i tipi di contenuto devono esistere prima di poterli unire.

  1. Apri Content Types nell’admin, poi Relations.

  2. Fai clic su New Relation, poi scegli i due tipi di contenuto. Links from è il lato che sceglie; Links to è il lato che viene scelto.

  3. Sotto Roles, nomina ciascun lato al plurale e al singolare. I nomi sono precompilati dai tipi di contenuto e possono essere modificati. Un campo di riferimento prende il nome del lato da cui sceglie.

  4. Controlla lo Slug. Segue i nomi, e i campi di riferimento lo memorizzano.

  5. Sotto How many, imposta il limite di ciascun lato: One, Any number, o At most con un Maximum che indichi. Entrambi i campi legati alla relazione condividono questi limiti.

  6. Crea la relazione.

I due tipi di contenuto e lo slug sono fissi una volta che la relazione esiste. Ogni collegamento è indicizzato dalla relazione, quindi spostare un’estremità punterebbe i collegamenti memorizzati a contenuto del tipo sbagliato. Per unire tipi di contenuto diversi, crea un’altra relazione.

I nomi e i limiti restano modificabili. Abbassare un limite lascia i collegamenti esistenti al loro posto, e salvare una voce la cui selezione supera il nuovo limite viene rifiutato finché la selezione non rientra.

La pagina propria di un tipo di contenuto elenca le relazioni di cui è un’estremità, in un pannello Relations sotto i suoi campi. Nuovo, modifica ed elimina funzionano allo stesso modo lì.

Aggiungere un campo di riferimento

  1. Apri il tipo di contenuto sotto Content Types e fai clic su Add Field.

  2. Scegli Reference.

  3. Seleziona la relazione a cui legarsi. L’ultima scelta, Create relation, apre il modulo della relazione nello stesso dialogo e torna con la nuova relazione selezionata; su un sito senza relazioni ancora è l’unica scelta.

  4. Per una relazione le cui due estremità sono lo stesso tipo di contenuto, imposta This field picks su Entries this one links to o Entries that link to this one. Altrove il tipo di contenuto proprio del campo decide l’estremità, e il campo sceglie voci dall’altro.

  5. Controlla etichetta e slug. L’etichetta proviene dal lato che il campo sceglie, e rinominare il campo in seguito rinomina quel lato della relazione.

  6. Aggiungi il campo.

Una relazione prende un campo per estremità, quindi un secondo campo sulla stessa estremità viene rifiutato: due selettori che scrivono gli stessi collegamenti non avrebbero un risultato definito. Per lasciare a entrambi i tipi di contenuto modificare un insieme di collegamenti, aggiungi un campo su ciascuna estremità della stessa relazione.

Un campo di riferimento non può essere contrassegnato come searchable o indexed, perché non memorizza una colonna propria. I filtri delle liste di contenuto e la ricerca del sito non lo coprono.

Scegliere voci nell’editor

Il campo viene mostrato come un selettore nell’editor delle voci. Add reference apre una ricerca sul tipo di contenuto referenziato; un campo limitato a una voce offre Replace reference una volta che ne contiene una. Ogni voce scelta può essere aperta in una nuova scheda, rimossa oppure, su un campo che sceglie il lato collegato, spostata su e giù per impostare l’ordine in cui un template le legge. Un campo che sceglie il lato che collega elenca le voci che si collegano a questa, senza un ordine proprio.

Le selezioni si salvano con la voce, in una richiesta. Su una collection che conserva le revisioni, cambiare una selezione su una voce pubblicata la mette in bozza insieme alle altre modifiche in sospeso della voce: diventa live quando la voce viene pubblicata, ed è scartata con la bozza. Un’anteprima della voce mostra la selezione in bozza.

Vedere cosa si collega a una voce

Aggiungi un campo di riferimento sull’altra estremità della relazione. Un campo che sceglie il lato che collega elenca le voci che si collegano a questa, così un autore che modifica una pagina vede i post che vi puntano, e può cambiare quell’insieme da entrambe le estremità.

Leggere i collegamenti in un template

I campi di riferimento non fanno parte del data di una voce. Nomina i campi che una pagina renderizza nell’opzione references, e ciascuno torna come una pagina di voci:

---
import { getEmDashEntry } from "emdash";

const { entry: post } = await getEmDashEntry("posts", Astro.params.slug, {
  references: { author: true },
});

const author = post?.references?.author.entries[0];
---

<h1>{post?.data.title}</h1>
{author && <p>By {author.data.name}</p>}

Leggere i campi di riferimento copre paginazione, comportamento dell’anteprima, tipi generati e quanto costa ciascuna chiamata in query.

Dichiarare una relazione in un seed

Un file seed dichiara le relazioni in un array relations di livello superiore, e un campo di riferimento si lega a una per slug. Un campo che nomina invece una targetCollection ha una relazione creata per esso. emdash export-seed emette le relazioni di un sito, e --with-content emette i collegamenti di ciascuna voce, così le selezioni di un sito sopravvivono a un export e a una riapplicazione.

Eliminare un campo o una relazione

Eliminare un campo di riferimento offre di eliminare anche la relazione che usa, e nomina cosa porta via: la relazione, i collegamenti memorizzati sotto di essa e il campo sull’altro tipo di contenuto. Deseleziona la casella per mantenere la relazione e i suoi collegamenti, ad esempio quando il campo sull’altra estremità li usa ancora.

Eliminare una relazione rimuove sempre i suoi collegamenti e i campi legati a essa. Eliminare un tipo di contenuto rimuove ogni relazione di cui è un’estremità, insieme ai campi sugli altri tipi di contenuto che le vedono; la conferma li elenca.

Legare un campo che non ha relazione

Un campo di riferimento senza relazione tiene un ID voce in una casella di testo invece di scegliere voci. Dagli una relazione per trasformarlo in un selettore.

  1. Apri il tipo di contenuto sotto Content Types e fai clic sull’azione di modifica nella riga del campo.

  2. Scegli una Referenced collection, e imposta Allow multiple references se il campo deve tenere più di una voce.

  3. Salva il campo.

EmDash crea una relazione chiamata come il campo e il suo tipo di contenuto, copia gli ID voce che la colonna del campo tiene come collegamenti, e cancella i flag searchable e indexed del campo, così i filtri delle liste di contenuto e la ricerca del sito smettono di coprirlo. La relazione non pone limite a quante voci si collegano dall’altra parte. La colonna resta al suo posto e smette di essere scritta; modifica la relazione nella pagina Relations per rinominare i suoi lati o impostare il secondo limite.

Un sito aggiornato da una versione precedente può avere campi in questo stato. Vedi I campi di riferimento si legano alle relazioni per cosa l’aggiornamento lega e cosa lascia a te.