How to register a helper in Discourse?

I’m trying to figure out the best way to register a handlebars helper for my Discourse plugin.

I have an ajax call in my initializer that determines whether the currentUser is part of a particular group. If they are, then they get an extra nav item.

I wanted to do something like this in my hbs file for the nav:

{{#if customHelper}}
//show nav item
{{/if}}

My other theories on how to do this:

  1. Keep the logic in the initializer and use jquery to append the item to the nav.
  2. Create a component for the nav item to only be displayed given the aforementioned logic.

So do you think registering a helper is the best to go, if so how? Or are one of my other approached better.

Thanks for any help or advise!

What would customHelper do? Can’t you just do something like this instead?

in your initializer

export default {
  initialize(container) {
    const user = container.lookup('current-user:main');
    Discourse.ajax("/some-url").then(result => user.set("isPartOfParticularGroup", true));
  }
}

and in your .hbs file

{{#if currentUser.isPartOfParticularGroup}}
   // your stuff
{{/if}

Wow so simple and works perfectly!

عذراً لإحياء هذا الموضوع، لكنه يتناسب تماماً مع سؤالي.

هل من الممكن تسجيل دالة مساعدة دون إنشاء ملحق؟ مثلاً من خلال سكريبت في قسم رأس أو جسم HTML للقالب؟

شكراً مقدماً!

عادةً ما يتم ذلك باستخدام مكون السمة، نعم.