Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
quarto-dev
GitHub Repository: quarto-dev/quarto-cli
Path: blob/main/src/resources/projects/website/listing/item-default.ejs.md
12923 views

<% // Fields const fields = listing.fields;

// Image properties const imageAlign = listing['image-align'] || 'left'; const imageHeight = listing['image-height'];

// Fields that don't have a known place to be displayed in this template const otherFields = fields.filter(field => { return !["title", "image", "image-alt", "date", "author", "subtitle", "description", "reading-time", "categories"].includes(field); });

// Capture the item number for utility functions that need it const itemNumber = listing.utilities.itemNumber();

// Writes a metadata value const outputMetadata = (item, field) => {

const readField = (item, field) => { let value = item[field]; if (field.includes(".") && !field.endsWith(".") && !field.startsWith(".")) { const fields = field.split("."); value = item; for (const deref of fields) { value = value[deref]; } } return value; }

let value = readField(item, field); if (value !== undefined) { print(<div class="metadata-value listing-${field}">${listing.utilities.outputLink(item, field, value)}</div>); } } %>

::: {.quarto-post .image-<%= imageAlign %> <%= listing.utilities.metadataAttrs(item) %>}

<% if (fields.includes('image')) { %>

<div class="thumbnail"><a href="<%- item.path %>" class="no-external"> <% if (item.image) { %> <%= listing.utilities.img(itemNumber, item.image, "thumbnail-image", item['image-alt'], item['image-lazy-loading'] ?? listing['image-lazy-loading']) %> <% } else { %> <%= listing.utilities.imgPlaceholder(listing.id, itemNumber, item.outputHref, item['image-lazy-loading'] ?? listing['image-lazy-loading']) %> <% } %> </a></div>

<% } %>

::: {.body}

<% if (fields.includes('title')) { %>

<%= item.title %>

<% if (fields.includes('subtitle')) { %> <% } %> <% } %>

<% if (fields.includes('categories') && item.categories) { %>

<div class="listing-categories"> <% for (const category of item.categories) { %> <div class="listing-category" onclick="window.quartoListingCategory('<%= utils.b64encode(category) %>'); return false;"><%= category %></div> <% } %> </div>

<% } %>

<% if (fields.includes('description')) { %>

<div class="delink listing-description"><a href="<%- item.path %>" class="no-external">

<%= item.description %>

</a></div>

<% } %>

:::

::: {.metadata}

<a href="<%- item.path %>" class="no-external">

<% if (fields.includes('date') && item.date) { %>

<%= item.date %>
<% } %>

<% if (fields.includes('author') && item.author) { %>

<%= item.author %>
<% } %>

<% if (fields.includes('reading-time') && item['reading-time']) { %>

<div class="listing-reading-time"><%= item['reading-time'] %></div>

<% } %>

<% for (const field of otherFields) { %> <% outputMetadata(item, field) %> <% } %>

</a>

:::

:::