TryGhost / Ghost

Independent technology for modern publishing, memberships, subscriptions and newsletters.
https://ghost.org
MIT License
46.19k stars 10.11k forks source link

Handlebars special partial "@partial-block" gets reported as unknown global #19930

Open miko007 opened 3 months ago

miko007 commented 3 months ago

Issue Summary

The handlebars template engine provides an internal, special partial called @partial-block, that can be used when calling a partial in "block style".

Instead of calling the partial regularly like {{> my-partial}}, it can be called in block form like

{{#> my-partial}}
  some fallback text
{{}/my-partial}

Inside the partial, the content passed inside the block can then be accessed using the special partial {{@partial-block}}. The feature itself works like expected inside of a ghost theme, the usage gets however reported as a theme error, specifically as "{{@partial-block}} is not a known global". This should not be the case.

image

Steps to Reproduce

  1. put a partial with the content

    <div>
    fancy partial
      {{#if @partial-block}}
    <article>
        {{> @partial-block}}
    </article>
      {{/if}}
    </div>

    in a theme.

  2. call it like

    {{#> my-partial}}
    this is a fallback text
    {{/my-partial}}
  3. check backend for theme errors

Ghost Version

5.75.1

Node.js Version

18.19.0

How did you install Ghost?

docker

Database type

MySQL 5.7

Browser & OS version

No response

Relevant log / error output

No response

Code of Conduct

daniellockyer commented 3 months ago

Hey there, thank you so much for the detailed bug report.

That does look like something that shouldn't happen! A PR to fix this issue would be very welcome 🙂