hugo/resources/page/page_marshaljson.autogen.go
Bjørn Erik Pedersen 90da7664bf Add page fragments support to Related
The main topic of this commit is that you can now index fragments (content heading identifiers) when calling `.Related`.

You can do this by:

* Configure one or more indices with type `fragments`
* The name of those index configurations maps to an (optional) front matter slice with fragment references. This allows you to link
page<->fragment and page<->page.
* This also will index all the fragments (heading identifiers) of the pages.

It's also possible to use type `fragments` indices in shortcode, e.g.:

```
{{ $related := site.RegularPages.Related .Page }}
```

But, and this is important, you need to include the shortcode using the `{{<` delimiter. Not doing so will create infinite loops and timeouts.

This commit also:

* Adds two new methods to Page: Fragments (can also be used to build ToC) and HeadingsFiltered (this is only used in Related Content with
index type `fragments` and `enableFilter` set to true.
* Consolidates all `.Related*` methods into one, which takes either a `Page` or an options map as its only argument.
* Add `context.Context` to all of the content related Page API. Turns out it wasn't strictly needed for this particular feature, but it will
soon become usefil, e.g. in #9339.

Closes #10711
Updates #9339
Updates #10725
2023-02-21 17:56:41 +01:00

182 lines
5.8 KiB
Go

// Copyright 2019 The Hugo Authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// This file is autogenerated.
package page
import (
"encoding/json"
"github.com/gohugoio/hugo/common/maps"
"github.com/gohugoio/hugo/config"
"github.com/gohugoio/hugo/hugofs/files"
"github.com/gohugoio/hugo/identity"
"github.com/gohugoio/hugo/langs"
"github.com/gohugoio/hugo/media"
"github.com/gohugoio/hugo/navigation"
"github.com/gohugoio/hugo/source"
"time"
)
func MarshalPageToJSON(p Page) ([]byte, error) {
rawContent := p.RawContent()
resourceType := p.ResourceType()
mediaType := p.MediaType()
permalink := p.Permalink()
relPermalink := p.RelPermalink()
name := p.Name()
title := p.Title()
params := p.Params()
data := p.Data()
date := p.Date()
lastmod := p.Lastmod()
publishDate := p.PublishDate()
expiryDate := p.ExpiryDate()
aliases := p.Aliases()
bundleType := p.BundleType()
description := p.Description()
draft := p.Draft()
isHome := p.IsHome()
keywords := p.Keywords()
kind := p.Kind()
layout := p.Layout()
linkTitle := p.LinkTitle()
isNode := p.IsNode()
isPage := p.IsPage()
path := p.Path()
pathc := p.Pathc()
slug := p.Slug()
lang := p.Lang()
isSection := p.IsSection()
section := p.Section()
sectionsEntries := p.SectionsEntries()
sectionsPath := p.SectionsPath()
sitemap := p.Sitemap()
typ := p.Type()
weight := p.Weight()
language := p.Language()
file := p.File()
gitInfo := p.GitInfo()
codeOwners := p.CodeOwners()
outputFormats := p.OutputFormats()
alternativeOutputFormats := p.AlternativeOutputFormats()
menus := p.Menus()
translationKey := p.TranslationKey()
isTranslated := p.IsTranslated()
allTranslations := p.AllTranslations()
translations := p.Translations()
store := p.Store()
getIdentity := p.GetIdentity()
s := struct {
RawContent string
ResourceType string
MediaType media.Type
Permalink string
RelPermalink string
Name string
Title string
Params maps.Params
Data interface{}
Date time.Time
Lastmod time.Time
PublishDate time.Time
ExpiryDate time.Time
Aliases []string
BundleType files.ContentClass
Description string
Draft bool
IsHome bool
Keywords []string
Kind string
Layout string
LinkTitle string
IsNode bool
IsPage bool
Path string
Pathc string
Slug string
Lang string
IsSection bool
Section string
SectionsEntries []string
SectionsPath string
Sitemap config.Sitemap
Type string
Weight int
Language *langs.Language
File source.File
GitInfo source.GitInfo
CodeOwners []string
OutputFormats OutputFormats
AlternativeOutputFormats OutputFormats
Menus navigation.PageMenus
TranslationKey string
IsTranslated bool
AllTranslations Pages
Translations Pages
Store *maps.Scratch
GetIdentity identity.Identity
}{
RawContent: rawContent,
ResourceType: resourceType,
MediaType: mediaType,
Permalink: permalink,
RelPermalink: relPermalink,
Name: name,
Title: title,
Params: params,
Data: data,
Date: date,
Lastmod: lastmod,
PublishDate: publishDate,
ExpiryDate: expiryDate,
Aliases: aliases,
BundleType: bundleType,
Description: description,
Draft: draft,
IsHome: isHome,
Keywords: keywords,
Kind: kind,
Layout: layout,
LinkTitle: linkTitle,
IsNode: isNode,
IsPage: isPage,
Path: path,
Pathc: pathc,
Slug: slug,
Lang: lang,
IsSection: isSection,
Section: section,
SectionsEntries: sectionsEntries,
SectionsPath: sectionsPath,
Sitemap: sitemap,
Type: typ,
Weight: weight,
Language: language,
File: file,
GitInfo: gitInfo,
CodeOwners: codeOwners,
OutputFormats: outputFormats,
AlternativeOutputFormats: alternativeOutputFormats,
Menus: menus,
TranslationKey: translationKey,
IsTranslated: isTranslated,
AllTranslations: allTranslations,
Translations: translations,
Store: store,
GetIdentity: getIdentity,
}
return json.Marshal(&s)
}