Soy consciente de que todos estos siempre son visibles para los administradores por defecto. Pero digamos que no quiero verlos en mi sitio personal que estoy construyendo en Discourse, ni siquiera como administrador.
¿Cómo podría ocultar todos estos temas en todas las categorías?
Creo que probaría el enfoque de ‘etiquetarlos a todos y silenciar la etiqueta’, ya que parece el que requiere menos esfuerzo. (Pero deslistarlos para el beneficio de todos los demás)
Por curiosidad, ¿por qué quieres ocultarlos de ti mismo?
Por curiosidad, ¿por qué quieres ocultarlos de ti mismo?
¿Sinceramente? Simplemente no me gusta verlos. Si voy a mi blog… también quiero ver mi blog
Encontré una solución. Obviamente, esta no es una solución escalable, y puede que ni siquiera sea técnicamente óptima (no estoy seguro de cómo se manejaría esto en sitios más grandes con muchas cargas de página, etc.), pero es una que funciona para mí ya que solo tengo una categoría para mi blog:
ChatGPT me dio esto y funcionó al primer intento. Simplemente apuntando a este ID de tema muy específico y ocultándolo:
<script>
document.addEventListener("DOMContentLoaded", function() {
var element = document.querySelector('[data-topic-id="10"]'); // reemplaza 10 con tu ID de tema
if (element) {
element.style.display = 'none';
}
});
</script>
Si tienes curiosidad sobre la perspectiva empresarial (porque sé que publiqué/respondiste sobre esto hace mucho tiempo), es solo una experiencia administrativa inconsistente tener un tema de Discourse utilizado como configuración de categoría, mientras que ninguna otra configuración de categoría se representa como un tema de Discourse. Está muy desconectado (¡aunque sigue siendo muy inteligente!). También veo que estos temas “Acerca de” se renradian, se utilizan como guías de inicio (yo mismo lo hago, aunque solo porque me veo obligado a mantenerlo), etc.
Entiendo por qué y el valor inicial de utilizar un tema como un lugar existente para albergar la descripción del tema. También veo el potencial en la misma capacidad, como el texto del componente temático discourse-category-sidebars que se alberga en un tema.
Pero desde una perspectiva de UX y administrativa, esperaría que todas mis configuraciones de categoría estuvieran simplemente en un solo lugar. Discourse ya almacena texto como una configuración dentro de la categoría, con markdown y todo, para la plantilla de categoría. Sería genial ver consistencia en la categoría de esta manera.
¡Espero que esto ofrezca un poco más de información!
EDITAR: Si me falta valor en algún lugar que no he visto, ¡señálamelo!
Mala suerte. Parece que el script que enlacé anteriormente solo funciona la primera vez que se carga la página web en el navegador. Si navegas por el sitio y vuelves, esos elementos regresan. Con mi conocimiento limitado (léase: absolutamente nulo) de desarrollo web, supongo que es porque DOMContentLoaded no se ejecuta de nuevo después de que el sitio se carga.
Creo que si buscas ocultar solo un tema, probablemente puedas hacerlo con CSS. Mi CSS es pobre, pero puedo ver el data-topic-id ahí, así que probablemente se pueda apuntar.
¡Ah, ahí hay un inconveniente! Si lo reutilizas, ese no aparece en algunas listas de temas ni dispara notificaciones cuando la gente responde, etc. Creo que lo mejor que se puede hacer con ellos, tal como están, es dejarlos como descripciones de categoría y cerrarlos (y deslistarlos si no quieres que sean visibles para la mayoría de la gente). Dejando de lado los ajustes de desarrollo, obviamente, si puedes conseguirlo.
El almacenamiento de la descripción de la categoría en los temas ha surgido como una discusión interna, así como la forma en que manejamos los Términos de Servicio y las Directrices, etc. No hay planes inmediatos para cambiar el formato, pero creo que definitivamente hay una conversación que tener al respecto.
Esta es una actualización que funciona perfectamente para mi caso de uso.
Si desea ocultar un tema en particular a través de CSS, al cargar la página y en adelante, esto lo hará. Simplemente agregue sus IDs de tema a la lista de IDs de tema:
<script>
document.addEventListener("DOMContentLoaded", function() {
var topicIdsToHide = ["10", "20", "30"]; // Agregue sus IDs de tema aquí
function hideElementsByDataTopicIds() {
topicIdsToHide.forEach(function(id) {
var element = document.querySelector('[data-topic-id="' + id + '"]');
if (element) {
element.style.display = 'none';
}
});
}
// Ejecutar la función inicialmente
hideElementsByDataTopicIds();
// Crear un observador de mutaciones para monitorear los cambios en el DOM
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
hideElementsByDataTopicIds();
});
});
// Observar todo el documento
observer.observe(document.body, { childList: true, subtree: true });
});
</script>