mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
90da7664bf
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
182 lines
5.8 KiB
Go
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)
|
|
}
|