Questions about category custom fields

AI-generated summary

Flower_Child is working on a plugin to assign a Font Awesome icon to a category, which will display if no image is set. They’ve successfully added a custom field to the category settings panel but are struggling to display the icon on the categories list page. Despite trying various approaches, they’re unable to access the custom field in templates using {{category.fa_icon}} or {{category.custom_fields.fa_icon}}. Flower_Child is seeking help and guidance, as they find the lack of documentation on using custom fields in plugins to be a significant challenge.

hello!

i’m working on creating a simple plugin that allows a category to be assigned a font awesome icon. The icon will display instead of an image if one is not set.

I’m not really interested in doing it with a theme-specific hack like :before CSS because I’d like it to be something settable in the category settings panel - indeed I’ve already got that part working. Here’s my code so far:

plugin.rb

# name: category-icons
# about: Allows fa-icons to be used as category graphics.
# version: 0.1
# authors: Flower_Child
# url: https://github.com/tipsypastels/category-icons

after_initialize do
  Category.register_custom_field_type('fa_icon', :string)

  add_to_serializer(:basic_category, :fa_icon) do
    object.custom_fields['fa_icon']
  end
end

assets/javascripts/discourse/connectors/category-custom-settings/fa-icon-settings.js.es6

export default {
  setupComponent(args, component) {
    const category = args.category;

    if (!category.custom_fields) {
      category.custom_fields = {};
    }

    if (typeof args.category.custom_fields['fa_icon'] !== 'string') {
      args.category.custom_fields['fa_icon'] = '';
    }
  }
}

assets/javascripts/discourse/connectors/category-custom-settings/fa-icon-settings.hbs

<section class="field">
  <label>
    {{i18n 'fa_icon_categories.fa_icon'}}
    {{input type="text" value=category.custom_fields.fa_icon}}
  </label>
</section>

Those are all the files I have so far - I’ve tried adding more based on things I’ve seen in other plugins but haven’t made any headway. This bit works in the sense of adding a custom field to the category settings, and the value I enter into it persists, but I can’t actually make it display on the categories list page. Using {{category.fa_icon}} or {{category.custom_fields.fa_icon}} in a theme-specific customization to categories-only.hbs or other templates is just blank.

Does it take more than this to be able to use custom fields in a template? I’m not sure what I’m missing. Is there any resource for how to use these in detail?

:frowning: :frowning: :frowning:
no one have any ideas? i havent made much progress. idk how the people who do make plugins are figuring stuff like this out when there’s no documentation on it.