Hilfe zur Weiterleitung von Benutzern zu gesperrten Inhalten

Diskussion fortgesetzt von Gated Topics in Category:

Ich habe versucht, die Gated-Komponente so zu modifizieren, dass der Benutzer stattdessen auf eine bestimmte Seite weitergeleitet wird, anstatt ein Gate anzuzeigen.

  1. Ich habe DiscourseURL.routeTo('/t/table-builder-test-2/1667') im Theme Creator ausprobiert. Es funktioniert, dauert aber eine Weile und löst beim Laden Fehler aus, obwohl die Seite erfolgreich geladen wird.

  1. Ich habe es auch mit setDefaultHomepage('/t/table-builder-test-2/1667'); und
      const container = Discourse.__container__;
      const router = container.lookup("router:main");

      let topicId = router.currentRoute.parent.params.id

      PreloadStore.remove(`topic/${topicId}`);

Es leitet erst um, nachdem die Gated-Seite geladen wurde, und dann klickt man auf den Zurück-Button.

  1. location.href = '/t/table-builder-test-2/1667'

Es funktioniert, aber die Gated-Seiten werden auch für ein paar Sekunden geladen, im Gegensatz zu 1, wo es reibungslos funktioniert.

Was ist der beste Weg, dies zu erreichen?

Mein benutzerdefinierter Homepage Theme ändert die Homepage. Der Trick ist, dass einige Dinge vorab geladen werden und man etwas tun muss, damit sie verschwinden.

Hoffentlich findest du das Beispiel im Code, denn das ist das Beste, was ich von meinem Handy aus erklären kann. :person_shrugging:

1 „Gefällt mir“

Ich habe es mit

let topicId = router.currentRoute.parent.params.id
PreloadStore.remove(`topic/${topicId}`);

versucht, aber es funktioniert nicht. Haben wir ein Dokument darüber, wie die Methode PreloadStore.remove funktioniert?