Lista de categorías con banners

This component adds optional banners to the default category page styles Categories Only and Categories With Featured Topics:

You can add banners in the component settings by defining the category right below the banner, a banner color and the heading text. There’s also an option to hide the default colored borders:

Screenshot from 2021-08-21 15-41-36

To add styles you can select the general class, as well as specific banners by category-id:

.category list .category-list-banner {
  &.category-5 { [style a specific banner] }
  &:after { [style the headings]}
}

For example you could color-code your categories:

Or add background images:

:warning: This component only adds layout elements to the category page. So you can’t refer to these headings anywhere else on your site. Another caution: There’s no default page style Categories Only on mobile. It will always show featured topics as well.

:+1: Credits: The component was inspired by the look of the Cfx.re Community and by @godgutten’s original solution to achieve that look as shared in How do I add category banners?

27 Me gusta

Thank Nolo Very cool! Your component has improved our community

1 me gusta

Nolo, I found another problem with switching the forum style to night mode. If you can fix it, it will be perfect!

That looks like expected behavior… The color slot takes any value that you can use as background-color in CSS. So when you give a hex value, it will stay the same color in different modes and themes.

If you actually don’t want a background color, you should state none or transparent.

If you want a background color that changes with modes, you’d need to state it with a CSS custom property: you could use one of Discourse’s pre-defined ones like var(--secondary-high). Or define some yourself, as explained in

3 Me gusta

Nolo, thanks, that helped!

2 Me gusta

Hola, me encanta ver lo que has logrado crear. Pero, ¿se me permite darme crédito también y no solo aprovecharme y usar parte de mi trabajo…?

¡Me alegra que te guste el componente! No estoy seguro de por qué me acusas de robarte tu trabajo…

Hacer este componente se inspiró en este tema:

Me referí al OP a tu solución, pero luego me interesó cómo resolver esto sin codificar las plantillas y deconstruyendo valores de una lista de configuraciones dentro de scss. Así que el código del componente trata esencialmente sobre esta solución:
https://meta.discourse.org/t/how-to-add-settings-to-your-discourse-theme/82557/52?u=nolo

Pero en cualquier caso: si sientes que usé parte de tu trabajo y me olvidé de dar crédito, por favor házmelo saber y actualizaré la primera publicación :ok_hand:

1 me gusta

Sí, por favor, me encantaría recibir al menos algún tipo de crédito. Pero depende de ti. Aparte de eso, se ve bien y recomendaré este componente temático en mi publicación, ya que esto facilita las cosas a los nuevos usuarios.

2 Me gusta

@ Nolo
¿Hay alguna forma en el TC, o con CSS en el tema, de alinear a la izquierda el texto del encabezado, al igual que tu segundo ejemplo).

¿También hay alguna forma (si no se usa una imagen de banner) de cambiar el tamaño del encabezado al grosor de una línea de texto?
Y si es así, ¿puedes cambiar el tamaño del texto para que no sea tan grande?

2 Me gusta

Claro, puedes estilizar los banners usando estas clases:

Si quieres sobrescribir declaraciones existentes en la clase general, necesitarás usar la propiedad !important. Por ejemplo, para los estilos que mencionaste:

.category-list .category-list-banner {
    justify-content: flex-start !important;
    min-height: unset !important;
    &:after {
        font-size: var(--font-up-3) !important;
    }
}

Eso es porque los estilos se declaran realmente en los banners específicos. Supongo que podría mejorar eso en el componente, pero por ahora necesitarías sobrescribir con important.

3 Me gusta

¡Muchas gracias por este componente! Estoy desarrollando un foro político y poder aplicar este tipo de separación es fundamental.
Si bien ya es una gran mejora para mi foro, sería un mundo de diferencia si las cabeceras pudieran ser referenciadas por URL, ya que eso permitiría crear botones en la parte superior del foro desde los cuales el usuario podría navegar fácilmente en la misma página. Sería una funcionalidad extremadamente ágil si el foro (con suerte) se vuelve mucho más grande. ¿Es esto posible actualmente?

1 me gusta

Gracias por la sugerencia @lisandro_iaffar. Aunque este componente realmente solo proporciona una solución ligera que no cambia las plantillas HTML. Si desea hacer referencia a las secciones, necesitaría usar un enfoque como el que ofrece GitHub - discourse/discourse-minimal-category-boxes.

2 Me gusta

Gracias por tu respuesta y por proporcionar orientación :slight_smile:
Y gracias de nuevo por este componente, ¡ha mejorado mucho el diseño de mi foro! :smiley:

2 Me gusta

Estoy emocionado de probar esto, ya que he creado demasiadas categorías y poder organizarlas en grupos será de gran ayuda.

Lo sabré cuando lo intente, ¿esto también podría ser una forma de dejar las categorías antiguas y menos usadas fuera de la página principal, verdad? Aún estarían disponibles a través de la nueva barra lateral.

1 me gusta

Sí, claro :+1: De hecho, casi siempre hago selecciones de categorías en diferentes elementos de la página (barra lateral, encabezado, barra de navegación, página de categoría, ..) Es como la estructura del sitio de un sitio web. Es importante que esté bien organizado, pero no es necesario que determine tu presentación de interfaz de usuario.

Hola @manuel, me gustaría saber si este maravilloso componente sigue funcionando después de las actualizaciones del discurso, lo instalé y no me funciona, gracias de antemano.

¿Cómo se agregan imágenes de fondo?

Hola, bienvenido :wave:

Puedes añadir CSS en tus temas o en un componente de tema separado:

Por ejemplo, asumiendo que quieres añadir una imagen a la categoría ID 4, harías algo como esto:

.category-list .category-list-banner {
    &.category-4 {
        background-image: url(https://images.unsplash.com/32/Mc8kW4x9Q3aRR3RkP5Im_IMG_4417.jpg);
        background-size: cover;
    }
}

Esto es solo un ejemplo. Para más información, puedes consultar las propiedades CSS de background.

Enlaces útiles también :+1: :

2 Me gusta

Se dividió una publicación en un nuevo tema: Añadir información adicional al cuadro de categoría