Wie man Skripte in Theme-Komponenten erneut ausführt

Skripte in Theme-Komponenten werden nur einmal ausgeführt. Wie kann ich sie bei einem Routenwechsel (ohne vollständiges Seiten-Reload) erneut ausführen?

Zum Beispiel möchte ich, dass Skripte in einer Komponente auch nach dem Navigieren zwischen Tags ausgeführt werden.

1 „Gefällt mir“
<script type="text/discourse-plugin" version="0.8">
    api.onPageChange(() => {
        // dein Code
    });   
</script>
6 „Gefällt mir“

Wo würde das hinkommen, wenn ich eine Theme-Komponente erstelle? Das ist mein aktueller Code. Ich versuche, den Footer bei jeder Routenänderung neu zu rendern, damit die Skripte erneut ausgeführt werden.

Ich bekomme seltsame Fehlermeldungen.

Ich bin ein kompletter Anfänger und weiß nicht, ob das der richtige Weg ist.

    initialize() {
      withPluginApi("0.8", api => {
        if (settings.Show_footer_on_login_required_page) {
          api.modifyClass("controller:static", {
            @on("init")
            showFooterOnStatic() {
              this.set("application.showFooter", true);
            }
        });

        api.onPageChange(() => {
          showFooterOnStatic() {
            this.set("application.showFooter", true);
          }
        });
      }
    });
1 „Gefällt mir“

Hast du bereits nach früheren Lösungen, Arbeiten oder Code in einem ähnlichen #theme-component gesucht, um einige Einblicke zu gewinnen, wie du vorgehen kannst?

1 „Gefällt mir“

Ich habe mir einige angesehen, aber sie scheinen nicht das zu bieten, was ich erreichen möchte. Ich werde wohl noch mehr Theme-Komponenten prüfen.

1 „Gefällt mir“

Danke, @osioke, und @michaeld :raised_hands:, ich habe genau das gefunden, wonach ich gesucht habe, nachdem ich mir diese Theme-Komponente angesehen habe: Homepage Feature

https://github.com/discourse/discourse-homepage-feature-component/blob/main/javascripts/homepage-featured-topics/connectors/above-main-container/homepage-featured-topics.js.es6

4 „Gefällt mir“