Error al hacer clic en el logo de la página principal

Hola.
Te lo mostraré con imágenes.
Estaba recibiendo este error antes de la última actualización.
Después de instalar la actualización, sigo recibiendo este error.

(Güncel - Actual)
Ekran görüntüsü 2024-05-03 153512

Y quité todo el código del sitio y lo intenté de nuevo, todavía obtengo el error.

Traducir

Error
Algo salió mal.

¿Esto también sucede en modo seguro? ¿Podrías también revisar la consola del navegador en busca de errores cuando haces clic en él, además de mirar en /logs para ver si hay más detalles?

1 me gusta

El modo seguro está activo y no se ve ningún error en la página de registros. Quizás no entiendo.

Últimos registros.
Ekran görüntüsü 2024-05-03 154929

Intenté desactivar el modo seguro. Todavía obtengo el mismo error.

Por cierto, cuando hago clic por segunda vez, el error desaparece y aparece la página de inicio.

Veo algunos errores cuando se cargan los componentes del tema y se descargan los complementos.

Es posible que quieras revisar tus personalizaciones recientes.

1 me gusta

Gracias por tu interés.

Último plugin: GIF

Todos los plugins

¿Tienes alguna personalización de JS fuera de los componentes remotos?

Intentaría deshabilitar todos los componentes y habilitarlos uno por uno hasta que ocurra el error.

<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>

Estos códigos causan este error.
No sé cómo arreglarlo.
Necesito estos códigos :frowning:

Estás moviendo elementos que contienen componentes de Emberjs (aquí está la lista de etiquetas), lo que creo que probablemente interrumpe el ciclo de vida del componente.

Tu mejor opción aquí es usar la API.

En tu caso, puedes:

  • Usar los plugin outlets como te mostré en tu último tema. Sin embargo, dado que no existe para los últimos temas en la página de la categoría, necesitarás solicitarlo.

  • Sobrescribir la plantilla. Esta no es una buena solución por razones de compatibilidad, pero puede ser una alternativa inmediata.

1 me gusta

Encontré estos códigos.

Esto no es lo que quería, pero servirá por ahora.

 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 alguien puede ayudar, estoy esperando. Gracias :pray:

Recomiendo encarecidamente que no sigas ese camino. Es como aplicar una tirita a un efecto secundario en lugar de solucionar la causa raíz del problema. Crearás más problemas con ello (como tu último tema debido al código anterior)

Puedes hacer tu JS un poco más amigable con Discourse (la mejor manera sigue siendo usar el outlet de plugin cuando puedas).
Aquí tienes un ejemplo. Utiliza la API al cambiar de página, ejecuta código en una ruta específica y copia el HTML antes del enlace (para que puedas hacer clic en la etiqueta):

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 Me gusta

Hola @Arkshine
Cambiar el enlace del logo no ayudó, borré estos códigos.

Pero no hay otra manera. Necesito posicionar las etiquetas así.
https://pvpfarm.com

Si le pago a alguien, ¿puede escribir códigos decentes que funcionen?

¿Y dónde encuentras estos códigos? (JS) ¿Desde GitHub - discourse/discourse: A platform for community discussion. Free, open, simple.?

Puedes crear un tema en Marketplace si necesitas/quieres ayuda pagada. :+1:

1 me gusta

Di el código para eso en #11.

Hola de nuevo @Arkshine
Agregué los códigos que me diste después de eliminar estos códigos, pero no funcionan. ¿Estoy cometiendo un error?

Me está funcionando:

Asegúrate de mantener \u003cscript type=\"text/discourse-plugin\" version=\"0.8\"\u003e. , de lo contrario no funcionará.

¡Sí, está funcionando!
Solo hay un pequeño error.
Cuando hago clic en el logo, el número de etiquetas aumenta.

He actualizado mi código anterior.

2 Me gusta

No sé cómo agradecerte. ¡Muchas gracias! :pray: :heart:

@Arkshine Disculpa por reabrir el tema de nuevo.
Gracias de nuevo. Encontré un error en los códigos que me diste.
¿Puedes ayudarme por favor?
Intenté corregir los códigos pero no pude.

En la sección de Últimos, solo aparece la etiqueta en el tema etiquetado abierto más recientemente.


Y cuando entras en una categoría, las etiquetas no aparecen.

@ogulcan1787 He actualizado el código de arriba.

1 me gusta