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

Salut.
Je vais vous montrer avec des images.
J’obtenais cette erreur avant la dernière mise à jour.
Après avoir installé la mise à jour, je continue de recevoir cette erreur.

(Actuel)
Ekran görüntüsü 2024-05-03 153512

Et j’ai supprimé tout le code du site et j’ai réessayé, j’ai toujours l’erreur.

Traduire

Erreur
Quelque chose s’est mal passé.

Est-ce que cela se produit également en mode sans échec ? Pourriez-vous également vérifier la console du navigateur pour les erreurs lorsque vous cliquez dessus, ainsi que regarder dans /logs pour voir s’il y a plus de détails.

1 « J'aime »

Le mode sans échec est actif et aucune erreur n’est visible sur la page des journaux. Peut-être que je ne comprends pas.

Derniers journaux.
Ekran görüntüsü 2024-05-03 154929

J’ai essayé de désactiver le mode sans échec. J’obtiens toujours la même erreur.

Au fait, lorsque je clique dessus pour la deuxième fois, l’erreur disparaît et la page d’accueil apparaît.

Je vois des erreurs lorsque les composants du thème sont chargés et que les plugins sont déchargés.

Vous pourriez examiner vos personnalisations récentes.

1 « J'aime »

Merci de votre intérêt.

Dernier plugin : GIF

Tous les plugins

Avez-vous des personnalisations JS en dehors des composants distants ?

J’essaierais de désactiver tous les composants et de les activer un par un jusqu’à ce que l’erreur se produise.

<script>
function moveTagsToTitle() {
    const mainLinks = document.querySelectorAll('.main-link');
    mainLinks.forEach(mainLink => {
        const discourseTags = mainLink.querySelector('.discourse-tags');
        const titleElement = mainLink.querySelector('.title');

        if (discourseTags && titleElement) {
            const tags = discourseTags.querySelectorAll('.discourse-tag');

            tags.forEach(tag => {
                const tagSpan = document.createElement('span');
                tagSpan.className = 'discourse-tag box';
                tagSpan.textContent = tag.textContent;
                tagSpan.style.fontSize = 'var(--font-down-2)';
                tagSpan.style.borderRadius = '10px';
                tagSpan.style.border = '1px solid #444460';
                tagSpan.style.backgroundColor = '#1f1f33';
                tagSpan.style.margin = '2px';
                tagSpan.style.display = 'inline-block';
                tagSpan.style.overflow = 'hidden';
                tagSpan.style.whiteSpace = 'nowrap';
                tagSpan.style.textOverflow = 'ellipsis';
                tagSpan.style.verticalAlign = 'middle';
                tagSpan.style.marginRight = '5px';
                tagSpan.style.marginLeft = '-6px';
                titleElement.insertBefore(tagSpan, titleElement.firstChild);
            });

            if (discourseTags.parentNode) {
                discourseTags.parentNode.removeChild(discourseTags);
            }
        }
    });

    const topicHeaderExtras = document.querySelectorAll('.topic-header-extra');

    topicHeaderExtras.forEach(topicHeaderExtra => {
        const discourseTags = topicHeaderExtra.querySelector('.discourse-tags');
        const tags = discourseTags.querySelectorAll('.discourse-tag');

        tags.forEach(tag => {
            tag.className = 'discourse-tag box';

            tag.style.borderRadius = '10px';
            tag.style.border = '1px solid #444460';
            tag.style.backgroundColor = '#1f1f33';
            tag.style.margin = '1px';
            tag.style.padding = '2px 8px';
            tag.style.display = 'inline-block';
            tag.style.overflow = 'hidden';
            tag.style.whiteSpace = 'nowrap';
            tag.style.textOverflow = 'ellipsis';
            tag.style.verticalAlign = 'middle';
            tag.style.marginRight = '5px';
            tag.style.marginBottom = '5px';
        });
    });
}

window.addEventListener('load', moveTagsToTitle);
const observer = new MutationObserver(moveTagsToTitle);
const targetNode = document.body;
const observerOptions = {
    childList: true,
    subtree: true
};
observer.observe(targetNode, observerOptions);

</script>

Ces codes provoquent cette erreur.
Je ne sais pas comment je peux corriger.
J’ai besoin de ces codes :frowning:

Vous déplacez des éléments contenant des composants Emberjs (voici la liste des balises), ce qui, je pense, perturbe probablement le cycle de vie du composant.

Votre meilleure option ici est d’utiliser l’API.

Dans votre cas, soit :

  • Utiliser des “plugin outlets” comme je l’ai montré dans votre dernier sujet. Cependant, comme il n’existe pas pour les derniers sujets sur la page de catégorie, vous devrez en faire la demande.

  • Écraser le template. Ce n’est pas une bonne solution pour des raisons de compatibilité, mais cela peut être une alternative immédiate.

1 « J'aime »

J’ai trouvé ces codes.

Ce n’est pas ce que je voulais, mais ça fera l’affaire pour l’instant.

 var pElement = document.getElementById('site-logo').parentNode;
                    //var pElement = document.createElement('a');
                    //pElement.innerHTML = aElement.innerHTML;
                    //aElement.replaceWith(pElement);
                    pElement.href = '#';
                    pElement.style.cursor = 'pointer';
                    pElement.onclick = function() {
                      window.location.href = '/';
                    };
                    //document.getElementById('site-logo').parentNode.href = '/';

Si quelqu’un peut m’aider, j’attends. Merci :pray:

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 »

Salut @Arkshine
Changer le lien du logo n’a pas aidé, j’ai supprimé ces codes.

Mais il n’y a pas d’autre moyen. Je dois positionner les balises comme ça.
https://pvpfarm.com

Si je paie quelqu’un, peut-il écrire des codes décents qui fonctionnent ?

Et où trouvez-vous ces codes ? (JS) Depuis GitHub - discourse/discourse: A platform for community discussion. Free, open, simple. ?

Vous pouvez créer un sujet dans Marketplace si vous avez besoin/voulez une aide rémunérée. :+1:

1 « J'aime »

J’ai donné le code pour cela dans #11.

Salut @Arkshine

J’ai ajouté les codes que vous m’avez donnés après avoir supprimé ces codes, mais ils ne fonctionnent pas. Est-ce que je fais une erreur ?

Ça fonctionne pour moi :

Assurez-vous de conserver \u003cscript type=\"text/discourse-plugin\" version=\"0.8\"\u003e. , sinon ça ne fonctionnera pas.

Oui, ça marche !
Il n’y a qu’une seule petite erreur.
Lorsque je clique sur le logo, le nombre d’étiquettes augmente.

J’ai mis à jour mon code ci-dessus.

2 « J'aime »

Je ne sais pas comment vous remercier. Merci beaucoup ! :pray: :heart:

@Arkshine Désolé de déterrer à nouveau le sujet.
Merci encore. J’ai trouvé une erreur dans les codes que vous avez donnés.
Pouvez-vous m’aider s’il vous plaît ?
J’ai essayé de corriger les codes mais je n’ai pas réussi.

Dans la section Derniers, seul le tag apparaît dans le sujet tagué le plus récemment ouvert.


Et lorsque vous entrez dans une catégorie, les tags n’apparaissent pas.

@ogulcan1787 J’ai mis à jour le code ci-dessus.

1 « J'aime »