5 min read

My wishlist to Ghost

My wishlist to Ghost
Outlining my wishlist for the Ghost team to maybe someday address and/or act upon. A person can dream!

Overview

Making this theme was a blast. Generally, I am continuously amazed by the stuff that the Ghost team puts out, and being an advocate for owning (and ideally self-hosting) your data, I find the very existence of Ghost a great boon to the space.

With that said, developing a theme for it was no small undertaking and certainly an exercise in jumping the hoops. I won't go too deep into the details of my perils, but will leave a small wishlist of things, and status thereof, if I made the request, that I'd love to see added to ghost.

Things I'd love to see in Ghost

Allow us to ship custom helpers with themes

This is by far the biggest one. Being able to ship custom helpers with themes would be monumental, it would unlock a tremendous amount of flexibility and reusability by theme builders, especially serial ones supporting many themes at a time.

Per-post customisation variables

As a theme developer, I'm limited to 20 custom configuration options - it's the things like Post preview layout or Show attribution that can be controlled from the Settings:

Whilst that's all great and works wonders I feel like per-post and per-page customisation is sorely missing, and I had to jump through some hoops to make this exact theme work.

Imagine being able to toggle, per individual post, whether it should show comments? Outline? Or maybe, if it can be made more than Boolean values, even assign.. a chapter name, or order?

Doing it that way instead of relying on internal tags would be a godsend in terms of UX.

Add built-in SSO support

Absence of the feature is still baffling to me. Naturally, a "Magic Link" approach where a person can become a Member is convenient, but it's not anywhere close to being as convenient as the SSO with Google, Facebook or Apple.

I'd love to have a simple, worry-free way to add an Integration to Ghost instead of having to build and host a standalone 3rd party SSO service just to improve the changes of people engaging with my content.

This has been requested five years ago and apparently was even in Beta but never took off the ground?

Third party Single Sign On (SSO)
Do we have any plan to support SSO features in Ghost blog using third party application like keycloak. I wonder if this feature already exist and I am missing it.

Improve the {{has}} helper to accept visiblity attribute

Currently the only helper that accepts a visiblity attribute is {{foreach}}, as described in Ghost Help. This leads to silly cases where if I need to check if a certain tag, say, #chapter-outline-show is assigned to a post I have to iterate over all tags of the post. And if I want to check the opposite, i.e. if a certain Post does not have a certain tag, my options are more limited still.

As used in the code, {{has}} already accepts a visiblity parameter but it checks the attribute of the context, so if a Post has Visibility set to Members or Paid, but not capable of doing the same for tags.

{{#foreach tags visibility="internal" as |current-tag|}}
    {{#match current-tag.slug "hash-chapter-outline-show"}}
        {{> chapter/outline}}
    {{/match}}
{{/foreach}}

This is the code I have to write to output the outline in case there's an internal #chapter-outline-show tag present.

{{#has tag="hash-chapter-outline-show" visibility="internal"}}
    {{> chapter/outline}}
{{/has}

This is how I'd like to check it - but it's not possible, since the visibility attribute is processed differently in this context.

Lift the restrictions off of {{get}} helper parent context access

One of the major issues I ran into was the way Ghost restricts Handlebars from utilising parent contexts in {{get}} requests. I know, rather technical, but you can read more in my post I made on the developer forum:

Escape {{get}} context in Handlebars to reference the post context
I’m working on a theme and want to add advanced tag relevancy functionality with custom ordering using internal tags. I am sadly up against a wall now - either from lack of experience of via the Ghost arbitrary restrictuions. Initially I wanted to create the following {{#get}} expression: {{#get “posts” filter=“tags:{{tags[1].slug}}” include=“tags” order=”{{tags[2].slug}} asc” as |related-posts|}} {{#foreach related-posts}} {{> post-line}} {{/foreach}} {{/get}} This would retu…

Big thanks to Cathy from Spectral Web Services, that wrote this excellent blog post addressing the issue and offering a workaround using partials and helpers. Wild stuff though.

Allow expressions in the order attribute for {{get}} helper

Following on from the previous ask, being able to actually construct meaningful queries inside of the order attribute would allow me to sidestep a lot of workarounds and just order the results of the posts using said posts second tag, which would be the #chapter-order-XXXX one:

{{#get "posts" filter="tags:{{tags[1].slug}}" include="tags" order="{{tags[2].slug}} asc" as |related-posts|}}
    {{#foreach related-posts}}
        {{> post-line}}
    {{/foreach}}
{{/get}}

The pseudocode above now has to be replaced with 10 times the lines of code and numerous files.

Settings for this Post

To help you with your Chapters journey I have attached this post's settings below so you could troubleshoot your configuration.