Add Page.RenderShortcodes

A layouts/shortcodes/include.html shortcode may look like this:

```html
{{ $p := site.GetPage (.Get 0) }}
{{ $p.RenderShortcodes }}
```

Fixes #7297
This commit is contained in:
Bjørn Erik Pedersen
2023-08-01 18:12:36 +02:00
parent 8fa8ce3e48
commit ade7ec8187
14 changed files with 434 additions and 89 deletions

View File

@@ -114,6 +114,10 @@ func (pa pageSiteAdapter) GetPage(ref string) (page.Page, error) {
}
type pageState struct {
// Incremented for each new page created.
// Note that this will change between builds for a given Page.
id int
// This slice will be of same length as the number of global slice of output
// formats (for all sites).
pageOutputs []*pageOutput
@@ -772,7 +776,7 @@ Loop:
currShortcode.pos = it.Pos()
currShortcode.length = iter.Current().Pos() - it.Pos()
if currShortcode.placeholder == "" {
currShortcode.placeholder = createShortcodePlaceholder("s", currShortcode.ordinal)
currShortcode.placeholder = createShortcodePlaceholder("s", p.id, currShortcode.ordinal)
}
if currShortcode.name != "" {
@@ -784,7 +788,7 @@ Loop:
currShortcode.params = s
}
currShortcode.placeholder = createShortcodePlaceholder("s", ordinal)
currShortcode.placeholder = createShortcodePlaceholder("s", p.id, ordinal)
ordinal++
s.shortcodes = append(s.shortcodes, currShortcode)