DiscoTOC - tabla de contenidos automática

:discourse2: Resumen DiscoTOC te permitirá generar una tabla de contenidos interactiva para tus temas con un solo clic.
:eyeglasses: Vista previa Vista previa en Discourse Theme Creator
:hammer_and_wrench: Enlace al repositorio https://github.com/discourse/DiscoTOC
:open_book: ¿Nuevo en los temas de Discourse? Guía para principiantes sobre el uso de temas de Discourse

Instalar este componente de tema

Ejemplos

Escritorio

Móvil

Características

toc = tabla de contenidos

  • Genera automáticamente toda la tabla de contenidos mediante un botón en el menú de engranaje del editor

  • La tabla de contenidos siempre estará en pantalla: se desplazará con el contenido como el widget de progreso del tema

  • A medida que te desplazas por las secciones del tema, el elemento activo en la tabla de contenidos se marcará como activo (resaltado en azul)

  • Añade atributos id a los encabezados (puedes enlazar a una sección específica desde otro tema o publicación)

  • Al hacer clic en cualquier enlace de la tabla de contenidos, el navegador navegará a la sección correspondiente (desplazamiento suave)

  • Añade un enlace copiable junto a cada encabezado (si deseas enlazar a él)

  • Soporte para RTL (de derecha a izquierda)

  • Los colores se basan en tu paleta de colores activa actual

¿Cómo funciona?

En pocas palabras, busca encabezados en los temas que estén marcados para tener una tabla de contenidos (mediante el botón del editor) y, si resulta que el tema actual está marcado, toma todos los encabezados y los coloca en la tabla de contenidos (anidados según el nivel de los encabezados). Esto significa que tu markdown debe ser sintácticamente correcto.

# encabezado 1
## encabezado 2
### encabezado 3
#### encabezado 4
##### encabezado 5
###### encabezado 6

Puedes alternar libremente entre niveles de encabezados, pero el orden debe ser correcto.

# encabezado 2 
## encabezado 3
## encabezado 3
### encabezado 4
## encabezado 3
# encabezado 2

etc...

Para que los enlaces de la tabla de contenidos funcionen, los encabezados deben tener atributos id. El componente verificará si los encabezados ya tienen ids y, si es así, se respetarán. Esto es útil si alguna vez creaste manualmente una tabla de contenidos.

Si los encabezados no tienen ids, generará un id para cada encabezado basado en su texto (los caracteres no deseados se eliminan).

Una vez que todo esto se haya completado, también añadirá un enlace junto a cada botón que enlaza directamente a esa sección:

Configuración

Nombre Descripción
nivel de confianza mínimo para crear TOC El nivel de confianza mínimo que debe tener un usuario para ver el botón TOC en el editor
texto toc del editor Texto que aparece en la parte superior del panel de vista previa del editor para indicar que el tema tendrá una tabla de contenidos
categorías automáticas TOC Habilitar automáticamente TOC en temas de estas categorías
etiquetas automáticas TOC Habilitar automáticamente TOC en temas con estas etiquetas
encabezado mínimo TOC Número mínimo de encabezados en un tema para que se muestre la tabla de contenidos

Traducciones

Traducción Predeterminado
table_of_contents tabla de contenidos
insert_table_of_contents Insertar tabla de contenidos
jump_bottom Saltar al final
toggle_toc.show_timeline Cronología
toggle_toc.show_toc Contenido

El tema incluye tres cadenas que puedes traducir o modificar.

table_of_contents: "tabla de contenidos"

Esto se usa para el botón que abre la tabla de contenidos en móviles.

insert_table_of_contents: "Insertar tabla de contenidos"

Esto se usa como texto para el botón TOC en el menú de engranaje del editor.

topic_will_contain_a_table_of_contents: "Este tema contendrá una tabla de contenidos"

Este es el texto que aparece en la vista previa del editor para indicar que se generará una tabla de contenidos para el tema.

¿Cómo creo una tabla de contenidos?

  1. Escribe un tema con encabezados sintácticamente correctos.
  2. Haz clic en el botón TOC en el menú de engranaje (solo aparece al crear un tema regular; las respuestas y los mensajes privados se ignoran).
  3. ¡Listo!

¿Qué sucede con el widget de progreso del tema cuando un tema tiene una tabla de contenidos?

Como probablemente adivines, no hay espacio para mostrar ambos al mismo tiempo, por lo que la forma en que funciona este componente es la siguiente:

En un tema con una tabla de contenidos, el widget de progreso del tema se oculta mientras el primer mensaje está en pantalla, y en su lugar ves la tabla de contenidos.

Una vez que te desplazas más allá del primer mensaje, la tabla de contenidos ya no se desplazará contigo y el progreso del tema se mostrará mientras lees cualquier respuesta.

Por lo tanto, los primeros mensajes obtienen la tabla de contenidos, y los mensajes subsiguientes obtienen el widget regular de progreso del tema.

Esto ocurre tanto en escritorio como en móviles.

¿Hay alguna desventaja al usar este componente?

Nada que yo sepa; todos los cambios se realizan en el lado del cliente. Por lo tanto, puedes eliminar fácilmente el componente y tus mensajes volverán a estar como estaban antes de instalarlo.

Limitaciones

Este componente asume la estructura estándar de los temas. Por lo tanto, no funcionará con temas que modifiquen esa estructura, como el tema Vincent. El soporte para temas populares que modifican la estructura llegará en una etapa posterior en forma de configuraciones del componente.

Créditos

Comencé con la biblioteca tocify.js de Greg Franko. Sin embargo, parece que no se ha actualizado en un tiempo, por lo que esto es esencialmente un fork duro que elimina muchas características innecesarias, integra y estila el resto para Discourse.

Por lo tanto, no hay solicitudes externas y el tamaño total es de aproximadamente 4 kb gzip.

Muchas gracias a @erlend_sh por su valiosa retroalimentación y a @david por su ayuda con las traducciones.

:discourse2: ¿Alojado por nosotros? Los componentes de tema están disponibles para usar en nuestros planes Pro, Business y Enterprise.

182 Me gusta
Automatic Table of Contents generation
Creative Uses of Discourse
Wiki improvement – Split content into multiple sections?
:cn: DiscoTOC 自动内容表格
Big Header - Little Header
How To Add Marker To Table Of Contents Feature?
What are the different ways to customize content inside a post (custom attributes and such)
Tagged topic progress bar - feasible or not?
Reader Mode
How can i show a floating sticky 300x250 Adsense Ad on right side bar of topic page above the fold?
How do you create a table of content like this one?
Timeline with labelled step by step sections - how is this achieved?
How to get topic navigation menu
Is anyone working on a Discourse Wiki?
Traditional multi level hierarchy vs flat discourse hierarchy
Theme Components - Can Discourse hosted sites install them?
How to add table of content sidebar beside a topic?
How do I add a table of contents sidebar to a topic?
Cannot deep link to anchor in text
How can I compare arbitrary revisions of a post?
Understanding Discourse for new users
Problem with DiscoTOC: TypeError: _offsetCalculator.headerOffset is not a function
How to create an In-app Knowledge Base with Discourse Docs?
OP Contents on Progress Bar
How to get topic sidebar
Customizing your site with existing theme components
Link to headers (anchor links)
Outline Enable
What is essential content for a new community?
Tools for creating image-heavy articles
Adding DiscoTOC to Published Pages
Customize Your Site Branding
Discourse Doc Categories
Gif icon not displaying and showing error
Must have plugins and components for Discourse?
I created a bookmarklet to create the table of content for forum posts
Could a List of Recommended Topics Be Added to the Top Menu?
Living with corrupted SVGs for almost a year. Need Help!
Something recently changed, can't increase `--topic-body-width`
How to enable side navigation?
Displaying "full topic" text on category page + access to subcategory from menu bar
Improve iPad screen real estate
Missing anchor links in certain TOC topics?
DiscoTOC not showing in composer after latest component update
Missing anchor links in certain TOC topics?
How to create a documentation theme used by discourse
Where's Jump to end?
Handling anchors in posts created with markdown
Reader Mode
Hidden Timeline button
Horizon Theme
Collections
Bulk Export of Raw Post Sources with Markup
AI summary in topic header
Contents button and Timeline button floating unexpectedly
:cn: Discourse Post Formatting Guide 加点格式,让帖子多姿多彩
Wiki table of contents on pro plan
Auto-Linkify Words
Missing strings (DiscoTOC)
?page=n URLs have high CLS hence bad SEO
Require users to "Reply as Linked Topic"
Links not working
Using Posts as a Wiki?
Using Posts as a Wiki?
Is anyone working on a Discourse Wiki?
Using Posts as a Wiki?
Using Posts as a Wiki?
DiscoTOC & Brand Header - using together
Docs: Add link to top menu
Layouts Plugin
More than two levels of [details]
Category page with fixed organization of topics
Blog Post Styling
Inlink the topics within the same article
Navigating to local URL fragment doesn't modify browser history
Relating to Profile Picture Scroll Functionality
Copy pasting nested lists from Word into a post
Need to include PGN (chess game notation) in a post
How can I get a table of contents for my docs?
Linking to a heading within a post
Topic list on the right side
Set up Slack notifications using the discourse-chat-integration plugin
Wrong title in the history popup (firefox)
Possible to insert post in a topic
I created a bookmarklet to create the table of content for forum posts

4 publicaciones se dividieron en un nuevo tema: ¿Cómo mover el TOC al lado izquierdo de la publicación?

No sé cómo se implementa este componente ni mucho sobre la estructura frontend de Discourse, así que solo puedo hacer una suposición.

¿No se podría mostrar la barra de progreso solo a) si hay más de 1 publicación en el tema y b) ajustar su inicio para que sea desde la segunda publicación (en lugar de la tercera), pero también c) añadir un margen inferior/superior cómodo a uno de los dos elementos para asegurarse de que el otro permanezca lo suficientemente alejado (por ejemplo, 1vh) como para no tener un aspecto extraño?

En otras palabras, en lugar de usar toda la segunda publicación como espacio, usar CSS para permitir algo de espacio entre ellos (si hay más de 1 publicación).

De nuevo, esto podría no tener ningún sentido ya que no sé mucho sobre cómo funciona esto en este momento.

3 Me gusta

¡Hola! Recientemente instalamos DiscoTOC para nuestros foros y nos preguntábamos si es posible hacer que el componente lea el texto alternativo (alt text) en las imágenes. Hemos usado imágenes para algunos encabezados de notas de parche…

así:
Rendimiento y Estabilidad

Y desafortunadamente, el sistema TOC no parece poder analizar una imagen como encabezado, creando una entrada en blanco en la lista y generando un enlace que te lleva a una página en blanco. ¿Hay alguna solución alternativa para esto aparte de “no usar imágenes”? ¡Gracias! Por lo demás, nos encanta el sistema.

1 me gusta

Mi suposición es que la solución es no usar imágenes como encabezados, pero es posible que haya una manera de lograr que funcione agregando algo de código a su sitio que se conecte con el código de DiscoTOC. Si vale la pena investigarlo o no, dependerá de cuán importante sea para usted usar imágenes en los encabezados de las publicaciones.

3 Me gusta

Hemos estado utilizando imágenes como encabezados en nuestras notas de parche de manera consistente durante bastante tiempo, y es parte de nuestra marca y presentación; no solo en los foros, sino también en Steam y otros lugares. Nos gustaría tener la capacidad de seguir utilizando imágenes como encabezados mientras usamos DiscoTOC para mantener la coherencia.

DiscoTOC ha sido excelente para otras cosas, como resúmenes de AMA, una megapublicación sobre nuestra aplicación de servidor dedicado, guías para nuevos jugadores, etc. Nos gusta mucho el sistema, pero nos encantaría tener un poco de funcionalidad adicional para la forma en que presentamos las notas de parche.

1 me gusta

La funcionalidad de anclaje de encabezado en este componente entra ligeramente en conflicto con la funcionalidad de Enlaces automáticos de encabezado añadida en 2.7.0beta6, ya que los encabezados obtienen dos iconos al pasar el ratón por encima, uno de Discourse y otro de DiscoTOC. ¿Hay alguna forma de evitar esto?

1 me gusta

Hola,

Puedes ocultar el ancla de Automatic header links con

.anchor {
  display: none;
}

Hola dodesz,

Hice el ancho de la publicación mucho más grande que el predeterminado, y después de instalar este componente se ve algo mal, ¿podrías decirme cómo solucionar este problema?

:heart: ¡gracias!

Selection_839

1 me gusta

En un foro que ejecuta Discourse 2.8.0.beta4 (90232af778), incluir el componente DiscoTOC provoca un mensaje de error:

oops

El componente se había activado antes y también había generado un problema con la versión de Discourse instalada anteriormente, aunque no puedo decir cuál era esa versión.

¿Puede encontrar algún mensaje de error relacionado con el problema en los registros de errores de su sitio?

Ese mensaje de error es un error de backend, mientras que DiscoTOC es un componente temático de frontend, por lo que es difícil que estén relacionados. ¿Tiene algún complemento instalado?

1 me gusta

Desafortunadamente, no pude encontrar nada útil en /logs.

Sí, aquí está el fragmento relevante de app.yml:

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-openid-connect.git
          - git clone https://github.com/discourse/discourse-checklist.git
          - git clone https://github.com/discourse/discourse-push-notifications.git
          - git clone https://github.com/discourse/discourse-characters-required.git
          - git clone https://github.com/angusmcleod/discourse-news.git
          - git clone https://github.com/discourse/discourse-data-explorer.git
          - git clone https://github.com/DNOeV/discourse-watch-category.git
          - git clone https://github.com/discourse/discourse-footnote.git
          - git clone https://github.com/discourse/discourse-knowledge-explorer.git
1 me gusta

Cuando un encabezado está dentro de una cita, el encabezado no aparece en la Tabla de Contenidos (TOC). ¿Se podría cambiar este comportamiento?

Este encabezado no aparecerá en la TOC

Contenido citado

Este encabezado SÍ aparece en la TOC

Contenido citado

No sé cómo está planeado que funcione, pero normalmente no, porque es parte de la cita, no un encabezado de ese texto.

2 Me gusta

¿Podrías intentar usar el <blockquote> de HTML en su lugar? Eso permitiría que el encabezado # estuviera al comienzo de una línea.

Ejemplo:

<blockquote>

### Encabezado de Ancla

</blockquote>

Encabezado de Ancla

No lo he probado en una Tabla de Contenidos (TOC), pero parece funcionar con los encabezados con ancla automática en una publicación normal.

¿Por qué quieres que los encabezados dentro de las comillas aparezcan en la tabla de contenido? ¿Cuál es tu caso de uso?

Gracias por la idea. Sin embargo, no me funcionó.

Aquí hay un ejemplo de cuándo uso citas para estructurar visualmente el contenido que comienza bajo Área de Problema: Edad

3 Me gusta

¿Por qué estás usando la cita de esa manera? Decir la fuente es suficiente. Además, gramaticalmente eso está mal, incluso en inglés.

¿Es esto un error o solo otro usuario, pero… ¿cómo debo cerrar la Tabla de Contenidos (TOC)? Estaba buscando instrucciones básicas sobre cómo un usuario final debe usar los mensajes privados y, por supuesto, fui a la documentación para nuevos usuarios y abrí la TOC para ver si había alguna información.

Estaba usando un iPad y DiscourseHub.

Obtuve esto:

kuva

La TOC está bien. Pero está superponiendo texto y no pude hacer que se ocultara de nuevo. Así que, ¿qué demonios hice mal, o no hice nada en absoluto? :pleading_face: