Sto ricostruendo il sito corrente della mia azienda in Jekyll e sto tentando di impostare la struttura attorno a un modello di contenuto utilizzando oggetti (file in una raccolta) che hanno attributi (coppie chiave/valore in YAML front-matter). Semplici elementi concettuali progettati per dimostrare la modellazione del contenuto efficace al mio team.Ottenere un oggetto specifico da una raccolta in Jekyll
Qualsiasi cosa sul sito che viene riutilizzato diventa un oggetto, con il tipo di oggetto definito dalla raccolta specifica che contiene il suo file. Quindi, ho una collezione "servizi" per i servizi offerti dalla società, una collezione "clienti" e una collezione "persone" con un file per ogni persona.
Il problema che sto avendo è fare riferimento a un elemento specifico in una raccolta. Ad esempio, voglio che i miei post abbiano autori. Ho trovato un sacco di soluzioni per questo utilizzo di _data, ma voglio che i miei autori abbiano pagine e raccolte che generano automaticamente una pagina per ogni persona. Sono stato in grado di ottenere _data per generare pagine, ma non ho il controllo sull'ordine in cui sono elencati gli articoli, mentre con una collezione ci sono molti modi per controllare l'ordine.
La mia attuale soluzione sembra hacky. Sto dando ad ogni persona un id che è uguale a "firstname-lastname", quindi nel frontespizio YAML si direbbe id: steve-hickey
. Quindi io uso il seguente codice per fare il giro di tutte le persone sul sito e restituire quelle che corrispondono all'ID autore specificato nel post.
Il modello post layout:
---
layout: default
---
<header class="intro post-header">
<h1>{{ page.title }}</h1>
{% assign people = site.people | where:"id", page.author-id %}
{% for person in people %}
<p>Written by <a href="/about/{{ page.author-id }}/">{{ person.first-name }} {{ person.last-name }}</a> on <p>{{ page.date | date: '%B %d, %Y' }}</p></p>
{% endfor %}
</header>
<div class="post-body">
{{ content }}
</div>
di un palo-materia:
---
title: User Offboarding
layout: post
nav-area: blog
author-id: steve-hickey
---
Un file persona dalla collezione di persone:
---
id: steve-hickey
first-name: Steve
last-name: Hickey
job: User Experience Strategist & AUX Director
layout: person
nav-area: about
portrait-url:
---
Sembra che ci dovrebbe essere un modo per identificare un file o un oggetto specifico sulla base di un attributo unico che già possiede, ad esempio s nome o url. In questo modo posso solo puntare a un oggetto specifico invece di valutarli tutti per una proprietà unica che devo scrivere. Ma dopo 3 giorni di ricerche non riesco a trovare una buona risposta a questo.
Grazie! Ho finito per trovare questa soluzione da qualche parte. Sintassi leggermente diversa dalla tua, ma la stessa idea esatta. La tua è meno verbosa, quindi penso che mi cambierò. '{% assegna autore = sito.people | dove: 'id', page.author-id%} {% assign author = author [0]%} ' –