mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-26 22:04:32 +02:00
Make Page an interface
The main motivation of this commit is to add a `page.Page` interface to replace the very file-oriented `hugolib.Page` struct. This is all a preparation step for issue #5074, "pages from other data sources". But this also fixes a set of annoying limitations, especially related to custom output formats, and shortcodes. Most notable changes: * The inner content of shortcodes using the `{{%` as the outer-most delimiter will now be sent to the content renderer, e.g. Blackfriday. This means that any markdown will partake in the global ToC and footnote context etc. * The Custom Output formats are now "fully virtualized". This removes many of the current limitations. * The taxonomy list type now has a reference to the `Page` object. This improves the taxonomy template `.Title` situation and make common template constructs much simpler. See #5074 Fixes #5763 Fixes #5758 Fixes #5090 Fixes #5204 Fixes #4695 Fixes #5607 Fixes #5707 Fixes #5719 Fixes #3113 Fixes #5706 Fixes #5767 Fixes #5723 Fixes #5769 Fixes #5770 Fixes #5771 Fixes #5759 Fixes #5776 Fixes #5777 Fixes #5778
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-present The Hugo Authors. All rights reserved.
|
||||
// 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.
|
||||
@@ -69,17 +69,27 @@ type Format struct {
|
||||
// Note that we use the term "alternative" and not "alternate" here, as it
|
||||
// does not necessarily replace the other format, it is an alternative representation.
|
||||
NotAlternative bool `json:"notAlternative"`
|
||||
|
||||
// Setting this will make this output format control the value of
|
||||
// .Permalink and .RelPermalink for a rendered Page.
|
||||
// If not set, these values will point to the main (first) output format
|
||||
// configured. That is probably the behaviour you want in most situations,
|
||||
// as you probably don't want to link back to the RSS version of a page, as an
|
||||
// example. AMP would, however, be a good example of an output format where this
|
||||
// behaviour is wanted.
|
||||
Permalinkable bool
|
||||
}
|
||||
|
||||
// An ordered list of built-in output formats.
|
||||
var (
|
||||
AMPFormat = Format{
|
||||
Name: "AMP",
|
||||
MediaType: media.HTMLType,
|
||||
BaseName: "index",
|
||||
Path: "amp",
|
||||
Rel: "amphtml",
|
||||
IsHTML: true,
|
||||
Name: "AMP",
|
||||
MediaType: media.HTMLType,
|
||||
BaseName: "index",
|
||||
Path: "amp",
|
||||
Rel: "amphtml",
|
||||
IsHTML: true,
|
||||
Permalinkable: true,
|
||||
// See https://www.ampproject.org/learn/overview/
|
||||
}
|
||||
|
||||
@@ -109,11 +119,12 @@ var (
|
||||
}
|
||||
|
||||
HTMLFormat = Format{
|
||||
Name: "HTML",
|
||||
MediaType: media.HTMLType,
|
||||
BaseName: "index",
|
||||
Rel: "canonical",
|
||||
IsHTML: true,
|
||||
Name: "HTML",
|
||||
MediaType: media.HTMLType,
|
||||
BaseName: "index",
|
||||
Rel: "canonical",
|
||||
IsHTML: true,
|
||||
Permalinkable: true,
|
||||
}
|
||||
|
||||
JSONFormat = Format{
|
||||
|
Reference in New Issue
Block a user