Going further

Packs

Add features to your site, like questions and answers, a gallery or opening hours. Packs carry no code, so adding one can't put your site at risk.

Prefer to watch? The packs tutorial adds a questions and answers section from start to finish, in three minutes.

On WordPress, features come from plugins. On HotDog, they come from packs. A pack is a set of ready-made sections, page layouts and styles. Adding one copies its files into your site, where they're yours: reviewed, versioned and published like everything else.

Why no code

WordPress plugins run with your whole site's rights, and that's where most WordPress break-ins start. A pack can't hold JavaScript or anything else that runs: its templates go through the same escaping, checks and security policy as your own. And nothing updates behind your back: a new version is a change you see before it's published.

The packs that come with HotDog

Pack What it adds
calendar Events, an upcoming-events section and a calendar feed people can subscribe to. See Events.
docs A documentation section with a sidebar, part pages and previous and next links.
downloads Files to download, with their type and size.
faq Questions that open to show their answers.
gallery A grid of pictures that open full size.
jobs Job openings with closing dates. Closed ones leave the list by themselves.
location-and-hours Your address, a map link, phone, email and opening hours.
menu-and-prices A price list in groups, and plans side by side.
payment-links Buy, book and donate buttons that open your payment provider's own checkout: Stripe, PayPal, Square, Ko-fi, Liberapay and others.
podcast Episodes with a player, and the feed podcast apps subscribe to.
portfolio Projects with a cover, details and pictures.
recipes Ingredients, steps, times and servings.
related-posts At the end of an article, the ones that share the most tags with it.
share-links Plain share links for Mastodon, Bluesky, LinkedIn and email, with no tracking.
shop A product catalog with a page per product. Each Buy button opens your payment provider's checkout.
table-of-contents A long page's headings, linked, at its top.
team A page per person, and a list of everyone.
testimonials Quotes from customers, with a name and a role.

A few of them on the same site:

The location-and-hours pack: an address with a map link and the opening hours, with the gallery pack below it

The team pack: three people, each with a photo or their initial, a name and a role

The menu-and-prices pack: a bakery's price list in groups

The recipes pack: a recipe page with its picture, times and servings

Each pack's notes, shown when you add it, say how to use it. Every pack also has a README in HotDog's packs folder.

Search engines. The faq, location-and-hours, team, recipes, jobs and shop packs also tell search engines what the page is (questions and answers, a business, a person, a recipe, a job, a product), so they can show richer results. You don't have to do anything for that.

Add one

In your site's folder:

hotdog-cms pack add faq

hotdog-cms pack add faq: it installed two files, and printed how to use the section

Then put its section on a page, in the editor's section library or in the page's front matter, as its notes say. Commit the new files and the change to site.yaml, ideally through a review.

Command What it does
hotdog-cms pack list The packs in your site, and the ones that come with HotDog.
hotdog-cms pack add faq Add a pack that comes with HotDog.
hotdog-cms pack add ../notice-pack Add one from a folder.
hotdog-cms pack add https://git.example.org/packs/[email protected] Add one from a git repository, at a version.
hotdog-cms pack remove faq Take a pack's files out.
hotdog-cms pack check ../notice-pack What a pack would install, or what's wrong with it.
  • Running add again with a newer version upgrades it.
  • A file already in your site is never overwritten, unless you add -force.
  • In the editor, a pack's sections appear in the section library, marked with the pack's name.

Started your site before HotDog CMS 0.2? For the search engine data, add this line to partials/schema.html:

{{ range pageData . }}<script type="application/ld+json">{{ . }}</script>{{ end }}

Make your own

A section you've built for one site can become a pack for all of them. Make your own pack goes through it step by step.