# Как получить список тегов для текущей открытой темы?

**URL:** <https://meta.discourse.org/t/how-can-i-pull-the-currently-open-topics-list-of-tags/246608>\
**Category:** Development\
**Created:** [24.Ноябрь.2022 03:49:38 UTC](https://meta.discourse.org/t/how-can-i-pull-the-currently-open-topics-list-of-tags/246608 "2022-11-24T03:49:38Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![hyphalos](https://avatars.discourse-cdn.com/v4/letter/h/3ab097/32.png) [@hyphalos](https://meta.discourse.org/u/hyphalos)\
**Post date:** [24.Ноябрь.2022 03:49:38 UTC](https://meta.discourse.org/t/how-can-i-pull-the-currently-open-topics-list-of-tags/246608/1 "2022-11-24T03:49:38Z")

</div>

Привет!

Я пытаюсь создать компонент темы, который добавляет пользовательскую кнопку к темам с определёнными тегами. Например: темы с тегом `event-tag` должны иметь кнопку рядом с категорией под названием «Event», которая ведёт на страницу событий.

Я выяснил, куда нужно добавить кнопку (через плагин-выход `topic-category`), следуя этому руководству: [Developing Discourse Themes & Theme Components](https://meta.discourse.org/t/beginners-guide-to-developing-discourse-themes/93648)

И сейчас у меня есть следующее:

```plaintext
<script type="text/x-handlebars" data-template-name="/connectors/topic-category/foobar2">
    <div style="height: 25px; width: 25px;background: red">
      <a href="<events_URL>" target="_blank">Ссылка</a>
    </div>
  </script>

```

Итак, мой вопрос: как можно проверить список тегов темы, чтобы определить, нужно ли добавлять кнопку в скрипте выше?

---

<div class="post-metadata">

**Author:** ![hyphalos](https://avatars.discourse-cdn.com/v4/letter/h/3ab097/32.png) [@hyphalos](https://meta.discourse.org/u/hyphalos)\
**Post date:** [24.Ноябрь.2022 22:31:58 UTC](https://meta.discourse.org/t/how-can-i-pull-the-currently-open-topics-list-of-tags/246608/2 "2022-11-24T22:31:58Z")

</div>

Хорошо, есть небольшой прогресс:

Я обнаружил, что если использовать `modifyClass` следующим образом:

```plaintext
<script type="text/discourse-plugin" version="0.8">
    api.modifyClass("component:topic-category", {
      didInsertElement: function() {
        this._super();
        console.log("Добро пожаловать на страницу тем!")
      }
    });
    </script>

```

Я могу перейти на страницу темы и получить сообщение «Добро пожаловать», но я всё ещё не уверен, как получить _текущие_ теги страницы, чтобы решить, нужно ли отображать кнопку или нет.

---

<div class="post-metadata">

**Author:** ![hyphalos](https://avatars.discourse-cdn.com/v4/letter/h/3ab097/32.png) [@hyphalos](https://meta.discourse.org/u/hyphalos)\
**Post date:** [25.Ноябрь.2022 02:18:45 UTC](https://meta.discourse.org/t/how-can-i-pull-the-currently-open-topics-list-of-tags/246608/3 "2022-11-25T02:18:45Z")

</div>

Ах, я нашёл решение.

Я снова и снова перечитывал это: [Developing Discourse Themes & Theme Components](https://meta.discourse.org/t/beginners-guide-to-developing-discourse-themes/93648)

и обнаружил, что если просто выполнить `console.log(this)`, то можно вывести все данные на странице, включая теги. Думаю, теперь я смогу двигаться дальше, извлекая данные о тегах со страницы и проверяя, есть ли они в настройках или нет. Как только я доведу это до ума и сочту готовым для публикации, размещу материал в категории компонентов тем. Просто хотел поделиться своими находками на случай, если кто-то ещё учится создавать компоненты тем!

---

<div class="post-metadata">

**Author:** ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)\
**Post date:** [25.Ноябрь.2022 11:25:24 UTC](https://meta.discourse.org/t/how-can-i-pull-the-currently-open-topics-list-of-tags/246608/4 "2022-11-25T11:25:24Z")

</div>

Только для информации: код для получения списка тегов в данном контексте будет следующим:

```js
<script type="text/discourse-plugin" version="1.4.0">
    api.modifyClass("component:topic-category", {
      pluginId: "returnTags",
      didInsertElement: function() {
        this._super();
        console.log(this.topic.tags)
      }
    });
</script>

```

Результат:

 ![image](https://global.discourse-cdn.com/meta/original/4X/2/5/6/256653f1caf97eb8b887758c39de80b83dc6befc.png)

ℹ (`pluginId` обязателен для избежания предупреждения)
