# Как получить доступ к пользовательским полям категорий в плагинах

**URL:** https://meta.discourse.org/t/how-to-access-category-custom-fields-in-plugins/196374
**Category:** Development
**Created:** [07.Июль.2021 23:01:31 UTC](https://meta.discourse.org/t/how-to-access-category-custom-fields-in-plugins/196374 "2021-07-07T23:01:31Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![Connor\_Parrish](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/connor_parrish/32/225463_2.png) [@Connor\_Parrish](https://meta.discourse.org/u/Connor_Parrish)
#### Post date: [07.Июль.2021 23:01:31 UTC](https://meta.discourse.org/t/how-to-access-category-custom-fields-in-plugins/196374/1 "2021-07-07T23:01:31Z")

</div>

Предварительно отмечу, что это для плагина, которому нужно знать `custom_fields` категории для создания кнопки в плагин- outlet `before-create-topic`. Мне также нужно использовать это в коннекторе `after-topic-footer-main-buttons`.

Скорее всего, я упускаю здесь что-то невероятно простое…

В инициализаторе я могу использовать следующее, чтобы получить класс категории… вроде бы:

```plaintext
const controller = api.container.lookup("controller:navigation/category");

```

Когда я вывожу это, я вижу различные свойства. В консоли разработчика я вижу `category: (...)`. При клике на `(..)` я вижу `custom_fields` и нужное мне поле. Как получить к этому доступ через API плагинов??

Я пробовал различные способы «получения» свойства, но все возвращают undefined.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [08.Июль.2021 00:42:05 UTC](https://meta.discourse.org/t/how-to-access-category-custom-fields-in-plugins/196374/2 "2021-07-08T00:42:05Z")

</div>

Возможно, стоит отступить и объяснить, что именно вы пытаетесь сделать. В большинстве случаев необходимые данные уже доступны. Если это не так, вы можете использовать Ajax для их получения в теме или добавить их в сериализатор в плагине.

---

<div class="post-metadata">

### Author: ![Connor\_Parrish](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/connor_parrish/32/225463_2.png) [@Connor\_Parrish](https://meta.discourse.org/u/Connor_Parrish)
#### Post date: [08.Июль.2021 15:49:50 UTC](https://meta.discourse.org/t/how-to-access-category-custom-fields-in-plugins/196374/3 "2021-07-08T15:49:50Z")

</div>

Я пытаюсь получить пользовательское поле из своей категории. Извините, раньше я не был достаточно ясен. Я обновил исходный пост, добавив больше информации.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [08.Июль.2021 19:07:15 UTC](https://meta.discourse.org/t/how-to-access-category-custom-fields-in-plugins/196374/4 "2021-07-08T19:07:15Z")

</div>

Это больше информации, чем я понимал ранее… . . . Что-то вроде этого в `plugin.rb`:

```plaintext
  add_to_serializer(:category, :your_plugin) do
    some_stuff
  end

```

Однако, я думаю, что вам стоит поискать другие плагины, которые, вероятно, добавляют что-то в сериализатор. Я считаю, что [Topic Ratings Plugin](https://meta.discourse.org/t/topic-ratings-plugin/39578) или [Topic List Previews (legacy)](https://meta.discourse.org/t/topic-list-previews/101646) — хорошие примеры для изучения, и надеюсь, что всё станет «очевидным» (но только после того, как вы проведёте часы, делая кучу других «очевидных» вещей, если вы, как и я).

---

<div class="post-metadata">

### Author: ![Connor\_Parrish](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/connor_parrish/32/225463_2.png) [@Connor\_Parrish](https://meta.discourse.org/u/Connor_Parrish)
#### Post date: [08.Июль.2021 19:12:01 UTC](https://meta.discourse.org/t/how-to-access-category-custom-fields-in-plugins/196374/5 "2021-07-08T19:12:01Z")

</div>

Переменная уже добавлена в сериализатор. Я пытаюсь получить к ним доступ из JS. Я думал, что получу их из переменной `controller`, о которой я упоминал в оригинальном посте, но не понимаю, как к ним обратиться.
