Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow shortcode content to be processed by Blackfriday etc. #4695

Closed
bep opened this issue May 4, 2018 · 10 comments

Comments

@bep
Copy link
Member

commented May 4, 2018

I think the hardest part about this issue is to create an API that is both simple and not in conflict with what people use in the wild.

Currently, we have:

  1. {{% myshortcode %}} which renders the inner content as markdown. This is the orignal Hugo syntax.
  2. {{< myshortcode >}} Hugo does nothing to the inner content. This is the most useful, as shortcodes are built for creating inline HTML snippets, and Blackfriday have a tendency to do odd thing to those.

The common thing with the above is that Blackfriday (or Asciidoctor etc.) will never see the rendered shortcode content. We create temporary shortcode placeholders that plays nicely with Blackfriday. This is almost always what you (or I) want, as you can use any HTML constructs and not have to worry about it getting trapped in Blackfriday's smartypants filter etc. In the first versions of Hugo we did it the "other way", and people had all sorts of trouble.

But there are obvious use cases where you want your shortcodes to be part of the markdown files as rendered by Blackfriday. The most obvious is the inclusion of raw markdown data (e.g. from a page: (Site.GetPage ...).RawContent). What you would do today is typically to use .Content (already rendered) or readFile "somefile" | markdownify, but that content will not participate in the "global context" with table of contents numbering etc.

I think this will be even more useful once we get time set aside to do the Blackfriday v2, where one of the planned benefits is to provide a proper data structure for the ToC for you to present in any way you want (and get rid of the hard-to-style HTML we have today).

So,

  • In my head it should not be too hard to implement.
  • But we need a way to "mark a shortcode" to behave "like this". This should probably be in the shortcode definition? As opposed to when you use it?
  • So, if we give this thing the keyword name "foo" then we could do ... {{< myshortcode h-foo "other params" >}} or maybe layouts/shortcodes/myshortcode.foo.html...

Not pretty ... I don't want to add another delimiter for this unless I really have to.

@bep bep added the Proposal label May 4, 2018

@bep bep added this to the v0.41 milestone May 4, 2018

@bep

This comment has been minimized.

Copy link
Member Author

commented May 4, 2018

@moorereason

This comment has been minimized.

Copy link
Contributor

commented May 4, 2018

I know you said you don't want to, but the most intuitive option to me is to use a different action/behavior modifier.

{{# myshortcode #}}
@bep

This comment has been minimized.

Copy link
Member Author

commented May 4, 2018

@moorereason for this fundamental case you are probably right ... Why the "#"?

@moorereason

This comment has been minimized.

Copy link
Contributor

commented May 5, 2018

I made it up. Makes me think of Markdown titles.

@regisphilibert

This comment has been minimized.

Copy link

commented May 5, 2018

I just realized the difference between the existing delimiters...

I'd like to stress the facts that the "editors", very much unfamiliar with Hugo templating and shortcode limitations, may already have a hard time remembering the difference in usage of both delimiters.

I suspect (but I may be wrong) that only the programmer will need to be aware of this third variation. So I would suggest we leave the editors out of it and don't add a third delimiter.

I would push for the use the template file naming suggested by @bep (myshortcode.foo.html) but since #3434 we already use the file naming for Output Formats, woudn't this lead to potential conflicts?

@bep

This comment has been minimized.

Copy link
Member Author

commented May 5, 2018

I would push for the use the template file naming suggested by @bep (myshortcode.foo.html) but since #3434 we already use the file naming for Output Formats, woudn't this lead to potential conflicts?

I tend to agree. Yes, the example is conflicting, but there may be other options. We could namespace them into folders ... Maybe. As I said, this is hard ...

@moorereason

This comment has been minimized.

Copy link
Contributor

commented May 7, 2018

@bep,
I took another look at this today. I may be backing off of my previous suggestion, but I need some clarification on this proposal.

Here's what I take your proposal to be:

  1. The HTML-shortcodes ({{< >}}) are out of scope for this proposal.
  2. The markdown-shortcodes ({{% %}}) are in scope for this proposal.
  3. Allow shortcode output to effect the BF Table of Contents.
  4. Allow the full, after-shortcode-rendering Markdown be visible in .RawContent.

Shortcode

## mysection - {{ .Get 0 }}

Content

# Title 1

{{% section "Section A" %}}

Expected .RawContent

# Title 1

## mysection - Section A

So, am I incorrect on any of this?

I haven't looked at the shortcode rendering pipeline, but would it make sense to not render the shortcode with BF (only do text/template rendering) if the parent template is also Markdown? Just merge the shortcode output into the parent and render once on final?

(Not sure I'm finished with my thought here, but I gotta run.)

@bep

This comment has been minimized.

Copy link
Member Author

commented May 9, 2018

@moorereason I read your post and started a reply about "I don't think that would work ..." But I deleted my comment. Thinking harder about it, I think you are spot on.

There are some challenges here (output formats, mainly), but it is the obvious best solution.

if the parent template is also Markdown

I think the important part here is that if the root shortcode is markdown then send it as part of the surrounding content to Blackfriday.

  • We render shortcodes inside out, so you will have support for nested HTML shortcodes if you want
  • The nested HTML shortcodes are included in what is sent to the MD processor today, so there should not be any change there.

@bep bep added the Enhancement label May 9, 2018

@bep bep modified the milestones: v0.41, v0.42 May 25, 2018

@bep bep modified the milestones: v0.42, v0.43 Jun 5, 2018

@maiki

This comment has been minimized.

Copy link

commented Jun 19, 2018

There are some old issues here and threads in the forums about the TOC not picking up headings from shortcodes. Am I understanding correctly the outcome of this issue will solve the TOC thing? If so I can just link to here as reference.

@bep

This comment has been minimized.

Copy link
Member Author

commented Jun 19, 2018

Am I understanding correctly the outcome of this issue will solve the TOC thing?

Yes

@bep bep added Keep and removed Proposal labels Jun 19, 2018

@bep bep modified the milestones: v0.43, v0.44 Jun 30, 2018

@bep bep modified the milestones: v0.44, v0.45, v0.46 Jul 10, 2018

@bep bep modified the milestones: v0.46, v0.47, v0.48 Aug 3, 2018

@bep bep self-assigned this Mar 15, 2019

bep added a commit to bep/hugo that referenced this issue Mar 16, 2019
Add a Page interface
The main motivation of this commit is to add a `page.Page` interface to replace the old very file-oriented `hugolib.Page` struct to prepare for gohugoio#5074, "pages from other data sources".

But this also fixes a set of annoying limiations, especially related to custom output formats, and shortcodes. And it's faster.

See gohugoio#5074
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5704
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
bep added a commit to bep/hugo that referenced this issue Mar 16, 2019
Add a Page interface
The main motivation of this commit is to add a `page.Page` interface to replace the old very file-oriented `hugolib.Page` struct to prepare for gohugoio#5074, "pages from other data sources".

But this also fixes a set of annoying limiations, especially related to custom output formats, and shortcodes. And it's faster.

See gohugoio#5074
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5704
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
bep added a commit to bep/hugo that referenced this issue Mar 16, 2019
Add a Page interface
The main motivation of this commit is to add a `page.Page` interface to replace the old very file-oriented `hugolib.Page` struct to prepare for gohugoio#5074, "pages from other data sources".

But this also fixes a set of annoying limiations, especially related to custom output formats, and shortcodes. And it's faster.

See gohugoio#5074
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5704
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
bep added a commit to bep/hugo that referenced this issue Mar 17, 2019
Add a Page interface
The main motivation of this commit is to add a `page.Page` interface to replace the old very file-oriented `hugolib.Page` struct to prepare for gohugoio#5074, "pages from other data sources".

But this also fixes a set of annoying limiations, especially related to custom output formats, and shortcodes. And it's faster.

See gohugoio#5074
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5704
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
bep added a commit to bep/hugo that referenced this issue Mar 17, 2019
Add a Page interface
The main motivation of this commit is to add a `page.Page` interface to replace the old very file-oriented `hugolib.Page` struct to prepare for gohugoio#5074, "pages from other data sources".

But this also fixes a set of annoying limiations, especially related to custom output formats, and shortcodes. And it's faster.

See gohugoio#5074
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5704
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
bep added a commit to bep/hugo that referenced this issue Mar 17, 2019
Add a Page interface
The main motivation of this commit is to add a `page.Page` interface to replace the old very file-oriented `hugolib.Page` struct to prepare for gohugoio#5074, "pages from other data sources".

But this also fixes a set of annoying limiations, especially related to custom output formats, and shortcodes. And it's faster.

See gohugoio#5074
Fixes gohugoio#5759
Fixes gohugoio#5758
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5704
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
bep added a commit to bep/hugo that referenced this issue Mar 17, 2019
Add a Page interface
The main motivation of this commit is to add a `page.Page` interface to replace the old very file-oriented `hugolib.Page` struct to prepare for gohugoio#5074, "pages from other data sources".

But this also fixes a set of annoying limiations, especially related to custom output formats, and shortcodes. And it's faster.

See gohugoio#5074
Fixes gohugoio#5758
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5704
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
bep added a commit to bep/hugo that referenced this issue Mar 18, 2019
Add a Page interface
The main motivation of this commit is to add a `page.Page` interface to replace the old very file-oriented `hugolib.Page` struct to prepare for gohugoio#5074, "pages from other data sources".

But this also fixes a set of annoying limiations, especially related to custom output formats, and shortcodes. And it's faster.

See gohugoio#5074
Fixes gohugoio#5763
Fixes gohugoio#5758
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5704
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
bep added a commit to bep/hugo that referenced this issue Mar 19, 2019
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  gohugoio#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 rendered, 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.

And it's faster.

See gohugoio#5074
Fixes gohugoio#5763
Fixes gohugoio#5758
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
bep added a commit to bep/hugo that referenced this issue Mar 19, 2019
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  gohugoio#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 rendered, 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.

And it's faster.

See gohugoio#5074
Fixes gohugoio#5763
Fixes gohugoio#5758
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
bep added a commit to bep/hugo that referenced this issue Mar 19, 2019
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  gohugoio#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.

And it's faster.

See gohugoio#5074
Fixes gohugoio#5763
Fixes gohugoio#5758
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
bep added a commit to bep/hugo that referenced this issue Mar 19, 2019
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  gohugoio#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.

And it's faster.

See gohugoio#5074
Fixes gohugoio#5763
Fixes gohugoio#5758
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
bep added a commit to bep/hugo that referenced this issue Mar 19, 2019
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  gohugoio#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.

And it's faster.

See gohugoio#5074
Fixes gohugoio#5763
Fixes gohugoio#5758
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
Fixes gohugoio#5767
bep added a commit to bep/hugo that referenced this issue Mar 20, 2019
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  gohugoio#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.

And it's faster.

See gohugoio#5074
Fixes gohugoio#5763
Fixes gohugoio#5758
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
Fixes gohugoio#5767
Fixes gohugoio#5723
bep added a commit to bep/hugo that referenced this issue Mar 20, 2019
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  gohugoio#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.

And it's faster.

See gohugoio#5074
Fixes gohugoio#5763
Fixes gohugoio#5758
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
Fixes gohugoio#5767
Fixes gohugoio#5723
Fixes gohugoio#5769
Fixes gohugoio#5770
bep added a commit to bep/hugo that referenced this issue Mar 21, 2019
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  gohugoio#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.

And it's faster.

See gohugoio#5074
Fixes gohugoio#5763
Fixes gohugoio#5758
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
Fixes gohugoio#5767
Fixes gohugoio#5723
Fixes gohugoio#5769
Fixes gohugoio#5770
Fixes gohugoio#5771
bep added a commit to bep/hugo that referenced this issue Mar 21, 2019
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  gohugoio#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.

And it's faster.

See gohugoio#5074
Fixes gohugoio#5763
Fixes gohugoio#5758
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
Fixes gohugoio#5767
Fixes gohugoio#5723
Fixes gohugoio#5769
Fixes gohugoio#5770
Fixes gohugoio#5771
Fixes gohugoio#5759
bep added a commit to bep/hugo that referenced this issue Mar 22, 2019
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  gohugoio#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.

And it's faster.

See gohugoio#5074
Fixes gohugoio#5763
Fixes gohugoio#5758
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
Fixes gohugoio#5767
Fixes gohugoio#5723
Fixes gohugoio#5769
Fixes gohugoio#5770
Fixes gohugoio#5771
Fixes gohugoio#5759
Fixes gohugoio#5776
bep added a commit to bep/hugo that referenced this issue Mar 23, 2019
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  gohugoio#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.

And it's faster.

See gohugoio#5074
Fixes gohugoio#5763
Fixes gohugoio#5758
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
Fixes gohugoio#5767
Fixes gohugoio#5723
Fixes gohugoio#5769
Fixes gohugoio#5770
Fixes gohugoio#5771
Fixes gohugoio#5759
Fixes gohugoio#5776
Fixes gohugoio#5777
bep added a commit to bep/hugo that referenced this issue Mar 23, 2019
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  gohugoio#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.

And it's faster.

See gohugoio#5074
Fixes gohugoio#5763
Fixes gohugoio#5758
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
Fixes gohugoio#5767
Fixes gohugoio#5723
Fixes gohugoio#5769
Fixes gohugoio#5770
Fixes gohugoio#5771
Fixes gohugoio#5759
Fixes gohugoio#5776
Fixes gohugoio#5777
Fixes gohugoio#5778
bep added a commit to bep/hugo that referenced this issue Mar 23, 2019
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  gohugoio#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.

And it's faster.

See gohugoio#5074
Fixes gohugoio#5763
Fixes gohugoio#5758
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
Fixes gohugoio#5767
Fixes gohugoio#5723
Fixes gohugoio#5769
Fixes gohugoio#5770
Fixes gohugoio#5771
Fixes gohugoio#5759
Fixes gohugoio#5776
Fixes gohugoio#5777
Fixes gohugoio#5778
bep added a commit to bep/hugo that referenced this issue Mar 23, 2019
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  gohugoio#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.

And it's faster.

See gohugoio#5074
Fixes gohugoio#5763
Fixes gohugoio#5758
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
Fixes gohugoio#5767
Fixes gohugoio#5723
Fixes gohugoio#5769
Fixes gohugoio#5770
Fixes gohugoio#5771
Fixes gohugoio#5759
Fixes gohugoio#5776
Fixes gohugoio#5777
Fixes gohugoio#5778
bep added a commit to bep/hugo that referenced this issue Mar 23, 2019
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  gohugoio#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 gohugoio#5074
Fixes gohugoio#5763
Fixes gohugoio#5758
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
Fixes gohugoio#5767
Fixes gohugoio#5723
Fixes gohugoio#5769
Fixes gohugoio#5770
Fixes gohugoio#5771
Fixes gohugoio#5759
Fixes gohugoio#5776
Fixes gohugoio#5777
Fixes gohugoio#5778
bep added a commit to bep/hugo that referenced this issue Mar 23, 2019
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  gohugoio#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 gohugoio#5074
Fixes gohugoio#5763
Fixes gohugoio#5758
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
Fixes gohugoio#5767
Fixes gohugoio#5723
Fixes gohugoio#5769
Fixes gohugoio#5770
Fixes gohugoio#5771
Fixes gohugoio#5759
Fixes gohugoio#5776
Fixes gohugoio#5777
Fixes gohugoio#5778

@bep bep closed this in 597e418 Mar 23, 2019

nguyenvanduocit added a commit to 12bitvn/hugo that referenced this issue Apr 5, 2019
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  gohugoio#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 gohugoio#5074
Fixes gohugoio#5763
Fixes gohugoio#5758
Fixes gohugoio#5090
Fixes gohugoio#5204
Fixes gohugoio#4695
Fixes gohugoio#5607
Fixes gohugoio#5707
Fixes gohugoio#5719
Fixes gohugoio#3113
Fixes gohugoio#5706
Fixes gohugoio#5767
Fixes gohugoio#5723
Fixes gohugoio#5769
Fixes gohugoio#5770
Fixes gohugoio#5771
Fixes gohugoio#5759
Fixes gohugoio#5776
Fixes gohugoio#5777
Fixes gohugoio#5778
@RCJacH RCJacH referenced this issue Aug 12, 2019
6 of 10 tasks complete
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants
You can’t perform that action at this time.