Erreur lors du clic sur le logo de la page d'accueil

Je vous recommande fortement de ne pas suivre cette voie. C’est comme appliquer un pansement sur un effet secondaire au lieu de résoudre la cause profonde du problème. Vous créerez plus de problèmes avec cela (comme votre dernier sujet à cause du code ci-dessus).

Vous pouvez rendre votre JS un peu plus convivial pour Discourse (la meilleure façon est toujours d’utiliser un plugin outlet lorsque vous le pouvez).
Voici un exemple. Il utilise l’API lors du changement de page, exécute du code sur une route spécifique et copie le HTML avant le lien (pour que vous puissiez cliquer sur la balise) :

JS
<script type="text/discourse-plugin" version="0.8">
  const { next } = require("@ember/runloop");
  
  function moveTags() {
    const mainLinks = document.querySelectorAll(".main-link:not(.tags-moved)");
    
    mainLinks.forEach((mainLink) => {
      const discourseTags = mainLink.querySelector(".discourse-tags");
      const titleElement = mainLink.querySelector("a[data-topic-id]");

      if (discourseTags && titleElement) {
        titleElement.insertAdjacentHTML("beforebegin", discourseTags.outerHTML);
        mainLink.classList.add('tags-moved');
      }
    });
  }

  api.registerModelTransformer("topic", async (topics) => {
    next(() => {
      moveTags();
    })
  });

  api.onPageChange((url) => {
    if (url.startsWith("/categories")) {
      moveTags();
    }
  });
</script>
CSS
.top-row, 
.link-top-line {
    .discourse-tag {
        font-size: var(--font-down-2) !important;
        padding: 2px 8px;
        margin: 2px 5px 2px -6px;
        border-radius: 10px;
        border: 1px solid #444460;
        background-color: #1f1f33;
    }
    
    .discourse-tag::after {
        content: '' !important;
        margin-left: 0 !important;
    }
}

.bottom-row, 
.link-bottom-line {
    .discourse-tags {
        display: none;
    }
}
2 « J'aime »