SuCoS for Hugo Users

Already using Hugo? This guide maps Hugo concepts directly to their SuCoS equivalents so you can get up to speed quickly.

Configuration file

Hugo SuCoS
hugo.yaml, config.yaml, config.toml, config.json sucos.yaml
Supports YAML, TOML, JSON YAML only

The keys themselves are similar. Rename the file and you're most of the way there.

Hugo:

# hugo.yaml
title: My Blog
baseURL: https://example.com
theme: my-theme

SuCoS:

# sucos.yaml
Title: My Blog
BaseURL: https://example.com
Theme: my-theme

Front matter

Both use YAML front matter. The main differences:

Hugo SuCoS
Lowercase or camelCase keys (title, date) PascalCase keys (Title, Date)
TOML front matter (+++) supported YAML only (---)
lastmod Lastmod
expiryDate ExpiryDate
publishDate PublishDate

Hugo:

---
title: My Post
date: 2026-01-15
tags: [tutorial]
---

SuCoS:

---
Title: My Post
Date: 2026-01-15
Tags:
  - tutorial
---

Templates

This is the most significant difference. Hugo uses Go's text/template; SuCoS uses Liquid.

Hugo SuCoS
{{ .Title }} {{ page.Title }}
{{ .Site.Title }} {{ site.Title }}
{{ .Permalink }} {{ page.Permalink }}
{{ .RelPermalink }} {{ page.RelPermalink }}
{{ .Content }} {{ page.Content }}
{{ .Date.Format "2006-01-02" }} {{ page.Date \| date: '%Y-%m-%d' }}
{{ range .Pages }} {% for p in page.Pages %}
{{ end }} {% endfor %}
{{ partial "header.html" . }} {% render 'partials/header.html' %}
{{ where .Site.RegularPages "Section" "blog" }} {{ site.RegularPages \| where: 'Section', 'blog' }}

Template file names

Template lookup follows the same principle in both tools:

Hugo SuCoS
layouts/_default/single.html _default/single.html
layouts/_default/list.html _default/list.html
layouts/_default/baseof.html _default/baseof.html
layouts/blog/single.html blog/single.html
layouts/partials/header.html partials/header.html

SuCoS templates live directly in the theme directory without a layouts/ prefix.

Shortcodes

Hugo shortcodes don't have a direct SuCoS equivalent. Most shortcode use cases can be handled with Liquid {% render %} partials or Markdown extensions.

Multilingual

Hugo has built-in i18n support. SuCoS does not yet support multilingual sites.

Image processing

Hugo has a powerful image processing pipeline. SuCoS does not yet include image processing.

Data files

Hugo supports data/ directory with JSON/YAML/TOML/CSV data files. SuCoS does not yet support data files; use site.Params for custom data instead.

Pagination

Both support paginated list pages. SuCoS uses a Liquid filter:

Hugo:

{{ $paginator := .Paginate (where .Site.RegularPages "Section" "blog") 10 }}
{{ range $paginator.Pages }}
    {{ .Title }}
{{ end }}

SuCoS:

{% assign posts = site.RegularPages | where: 'Section', 'blog' %}
{% assign pager = posts | paginate: 10 %}
{% for post in pager.PageItems %}
    {{ post.Title }}
{% endfor %}
{% render 'partials/pagination.html', pager: pager %}

Feature comparison table

For a full list of Hugo page and site variables and their SuCoS status, see the Feature Comparison.