Allow custom filters in Liquid partials in strictVariables mode #3213
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes #3206.
The issue here is that in partials rendered using
{% render %}
, thepage
andeleventy
variables do not exist, since the{% render %}
tag is introducing a "new" scope that does not inherit the variables from the page it was called from. InstrictVariables
mode (this is an option you can pass to.setLiquidOptions()
), this causes an error when you use any custom filter in such a partial, because Eleventy is trying to retrieve the value of thepage
andeleventy
globals for use in the filter's definition.This PR essentially turns the properties
page
andeleventy
into getters; meaning that they are not retrieved until the user specifically uses them. This prevents filters that do not use these properties from causing errors in{% render %}
-style partials.My other PR, #3212, is related, and if the
page
andeleventy
variables are intended to be accessible from{% render %}
partials, then this PR may be dismissed.