+++
title = "Custom Homepage"
description = "Hide the blog and specify how content is shown."
categories = ["customizing"]
tags = ["layout", "templating", "style", "metadata", "semantics", "robots"]
features = ["code highlighter", "snippets", "related content"]
[[copyright]]
  owner = "Josh Habdas"
  date = "2019"
  license = "agpl-3.0-or-later"
+++

After Dark provides a configurable way to customize the content shown on your homepage without the need for creating a [Custom Layout](../custom-layouts). Use it to hide the blog and display recent content from various sections of your site.

{{< hackcss-alert >}}
{{< figure
  src="/images/screenshots/feature-homepage-fs8.png"
>}}
{{< /hackcss-alert >}}

{{< hackcss-card header="Quick Example" >}}
{{< highlight toml "linenos=inline" >}}
[params.layout.home]
  hide_blog = true

[[params.layout.home.section]]
  type = "about"
  weight = 1

[[params.layout.home.section]]
  type = "code" # Required, name of section to show on homepage
  limit = 4 # Optional, set number of items to show from section
  weight = 2 # Optional, choose layout order for section
  thumbs = ["fill", "400x400"] # Optional, thumbnail image processing

[[params.layout.home.section]]
  type = "site"
  limit = 2
  weight = 3

[[params.layout.home.section]]
  type = "post"
  limit = 3
  weight = 4
{{< /highlight >}}
{{< /hackcss-card >}}

Start by adding a section to display:

```toml
[[params.layout.home.section]]
  type = "post"
```

Limit the number of items shown:

```toml
[[params.layout.home.section]]
  type = "post"
  limit = 3
```

Then hide the blog if you like:

```toml
[params.layout.home]
  hide_blog = true
```

And use the space to add more sections:

```toml
[[params.layout.home.section]]
  type = "post"

[[params.layout.home.section]]
  type = "podcast"
```

Or add stand-alone pages too:

```toml
[[params.layout.home.section]]
  type = "about"
```

And display them in order by weight:

```toml
[[params.layout.home.section]]
  type = "about"
  weight = 1

[[params.layout.home.section]]
  type = "podcast"
  weight = 2
```

With each section containing generic [Structured Data](../structured-data):

```
Homepage
├── Thing
└── ItemList
    ├── Thing
    ├── Thing
    └── Thing
```

Which may be enhanced using front matter:

```
├── archetypes
├── content
│   └── about.md
│   └── podcast
│       ├── _index.md
│       ├── secrets-of-silicon-valley
│       ├── the-5g-dragnet
│       └── language-is-a-weapon
├── layouts
```

```toml
title = "About"
description = "Information about the site."
[schema]
  type = "AboutPage" # inside about.md
```

```toml
title = "Podcasts"
description = "Live on the Web. Fresh to your head."
[schema]
  type = "Audiobook" # inside _index.md
```

Resulting in machine-readable structure:

```
Homepage
├── AboutPage
└── ItemList
    ├── Audiobook
    ├── Audiobook
    └── Audiobook
```

Including `name` and `description` properties consistent between what's shown to users and what will appear in <abbr title="Search Engine Results Page">SERP</abbr>s.

Item lists may include thumbnail images generated automatically for any `ItemList` element using a [Post Images](../post-images)-formatted resource bundle and containing `thumbnail` in the name:

```toml
[[resources]]
  src = "**hyperdrive-logo.png"
  name = "header thumbnail"
```

Images include high-performance defaults and may be modified using {{< external "https://gohugo.io/content-management/image-processing/#readout" "Hugo Image Processing" />}} via config using the `thumbs` property in site config:

```toml
[[params.layout.home.section]]
  type = "code"
  thumbs = ["fill", "400x400"]
```

Valid image processing options are `fit`, `resize` and `fill`, and image dimensions may be omitted for a 4x3 aspect ratio thumbnail.
