Structured resources
Resources store repeated structured data outside articles. They suit products, collections, shops, people, locations, and similar records that need consistent fields and presentation.
Each resource remains an ordinary YAML file:
sites/example.com/
resources/
products/
training-glove.yml
collections/
beginner-gloves.yml
The plural folder defines the resource type. The filename defines its stable ID.
title: Training Glove
description: A general-purpose glove for regular practice.
url: https://merchant.example/training-glove
collections:
- beginner-gloves
Render resources
Ionport derives singular and plural tags from resource folders:
<product id="training-glove" />
<products limit="6" />
<collection id="beginner-gloves" />
<collections />
Tags are resolved during the build. Published output contains ordinary static HTML and does not need a database or client-side application.
Generated pages
Resources receive public pages automatically:
resources/products/training-glove.yml
→ /products/training-glove/
Resource cards link to those internal pages. An external url remains available
for an action such as viewing the product at a merchant.
Use page: false for a record that should remain internal. A resource can select
a theme template with template; otherwise Ionport uses resource.html when
available and falls back to page.html.
Product collections
Products own collection membership:
collections:
- beginner-gloves
- general-training
Collections contain their own title and description, not duplicated product lists. Ionport gathers products that reference the collection ID. This makes adding a product to several collections a one-file change.
Validation
The normal checker validates resource YAML, relationships, generated routes, templates, links, and assets:
python3 -m ionport check example.com
Resource pages are included in the sitemap and in the same atomic static build as authored Markdown pages.