El componente incluye algunos bloques que puedes mostrar en la barra lateral:
popular-tags
top-contributors
recent-replies
category-topics
custom-html
category-list
subcategory-list
upcoming-events-list*
minimal-gamification-leaderboard**
El directorio de usuarios debe estar habilitado para que se complete la lista de Principales Contribuidores. Si tu lista está en blanco, busca enable user directory en la configuración de tu administrador para asegurarte de que esté habilitada.
* Solo disponible cuando se usa con el plugin Calendario.
** Solo disponible cuando se usa con el plugin Gamificación.
También puedes usar otros componentes Ember como bloques, solo necesitas usar el nombre correcto. Por ejemplo, el núcleo incluye un componente Ember signup-cta, y puedes usarlo en la barra lateral tal cual. Ten en cuenta que no puedes usar componentes que esperan un conjunto de parámetros, pero puedes crear tu propio componente Ember en un tema separado y referenciarlo solo por su nombre en la configuración blocks de la barra lateral.
Puedes controlar algunas características de los bloques proporcionados a través de parámetros.
nombre
descripción
predeterminado
valor
disponible para
count
limita el número de resultados
varía
número
todos excepto custom-html
excerptLimit
limita la longitud de cada extracto de respuesta
150
número
recent-replies
id
id de categoría
id de categoría (category-list usa separado por comas)
category-topics, category-list
content
contenido a mostrar
html
custom-html
scopeToCategory
solo muestra en la categoría o subcategoría X
id de categoría
popular-tags
excludedTags
lista de etiquetas excluidas
nombres de etiquetas
popular-tags
displayInSpecificCategories
lista de categorías para mostrar el widget
todas
números separados por comas
popular-tags
id
id de la tabla de clasificación
número
minimal-gamification-leaderboard
tag
qué etiqueta mostrar
id de etiqueta
tag-topics
period
período de tiempo de los temas principales
weekly
all, yearly, quarterly, monthly, weekly, daily
top-topics
title
título del bloque
varía
string
tag-topics, category-list, top-contributors
excludedGroupNames
Excluye grupos especificados
Nombres de grupos
top-contributors
order
Ordena a los contribuidores
String (likes_received o likes_given)
top-contributors
period
Período de tiempo para los principales contribuidores
Solo para usuarios avanzados: limita la barra lateral a las rutas seleccionadas. Ejemplos: discovery.latest, discovery.unread, discovery.new, discovery.top, tag.show, “c/category-slug” (para categorías), “tag/sample-tag” (para etiquetas). Cuando está vacío, la barra lateral se muestra en todas las rutas de lista.
blocks: elige los bloques a mostrar y ajusta su orden
show_in_routes: decide en qué rutas de lista de temas mostrar la barra lateral. Por defecto, se mostrará en todas las rutas de descubrimiento excepto en /categories.
Ten en cuenta que el componente viene con un estilo muy básico, la suposición es que los administradores que usan el componente agregarán su propio estilo en su propio tema.
Interacciones
Cuando se usa junto con el plugin Discourse Calendar, puedes agregar un bloque de barra lateral para tus próximos eventos. El nombre del bloque es upcoming-events-list, y el formato de fecha se puede personalizar siguiendo esta sintaxis (por ejemplo, MMMM D, YYYY).
¡Genial ver esto como un componente temático #oficial! Ciertamente abre un nuevo mundo de personalizaciones.
Tengo 2 preguntas:
En la barra lateral, quiero mostrar la lista de temas /latest de manera similar a como lo hace category-topics. ¿Es esto posible? recent-replies casi lo logra (especialmente si el extracto está oculto), pero realmente quiero incluir temas sin respuestas.
¿Es posible mostrar los bloques laterales solo en ciertas categorías? Lo que quiero decir es que la única ruta que se muestra es la Lista de Temas de Categoría, y solo para las categorías que especifico.
Disculpas, la documentación para esto es escasa (la actualizaré ahora). El nombre del parámetro para custom-html es content.
No tenemos nada prefabricado para la lista completa de /latest, pero puedes crear la tuya y agregarla a la configuración usando su nombre. Debería ser muy similar a las listas de categorías/etiquetas, solo que sin un filtro.
Actualmente no, no puedes mostrarlo solo en categorías específicas. Sin embargo, puedes usar discovery.category en la configuración show in routes, que solo mostrará la barra lateral en las rutas de categorías (pero en todas ellas, no en un subconjunto).
Acabo de notar una limitación del componente, especialmente en lo que respecta a los bloques category-topics y subcategory-list, y es que al agregar varios bloques de cualquiera de estos tipos con diferentes id, siempre resultaba en que mostraran temas/subcategorías del bloque superior en el editor de lanzamiento (supongo).
Un error que tengo ahora mismo es que, después de jugar con el bloque subcategory-list unas 10-12 veces, dejó de mostrarse por completo en nuestro sitio de staging (ver video a continuación).
El bloque subcategory-list no acepta ningún parámetro. Cuando se usa, mostrará las subcategorías de la categoría actual basándose en a qué categoría actual hayas navegado… por lo que no tiene sentido usar ese bloque más de una vez.
Por eso tampoco se muestra subcategory-list en tu video. Si estás en una ruta que no es de categoría, ese bloque no se muestra.
Para category-topics, en tu video veo el mismo ID usado dos veces: 7. Hice una prueba local y con diferentes IDs obtengo diferentes temas mostrados (es decir, no puedo reproducir el error reportado).
Actualmente no, no existe esta opción. Tiene sentido añadirla, aunque me imagino que debería admitir varios IDs para que puedas mostrar el bloque para una lista de categorías (A, B y C, por ejemplo). Estaré encantado de revisar las PRs en el repositorio, si vuestros desarrolladores creen que pueden añadir esto, sería genial. (De lo contrario, puedo añadirlo a una lista de “cosas deseables” en el componente del tema).
¿Te refieres a a) obtener los resultados y almacenarlos en caché durante una semana o b) obtener los principales contribuidores de la última semana en cada carga? Lo último debería ser fácil de añadir, el almacenamiento en caché es un poco más complicado.
El componente intencionadamente tiene muy poco estilo para que los consumidores puedan añadir sus propios estilos en sus propios temas/componentes de tema.
¡Gracias, esa PR es genial y ya está fusionada!
También trabajaré en breve en añadir la configurabilidad al bloque de los principales contribuidores (o si alguien es más rápido, estaré encantado de revisar una PR).
No estoy seguro de dónde encontrar el código para eso. ¿Podrías indicarme? Me gustaría ver cómo modificar los temas de categorías para que, al no tener ID, te dé todas las categorías (y, por lo tanto, efectivamente la lista /latest).
Hola! No estoy seguro de si este componente está causando errores. Pero una vez deshabilitado, ya no se ven errores. ¿Podría alguien echar un vistazo a esto para ayudarme a resolver el problema? Lo agradecería mucho.
Con él habilitado, al visitar un tema específico en el escritorio, al hacer clic en el logotipo del sitio en la barra superior en un intento de volver a la página de inicio, me llevaba a una pantalla de carga que nunca desaparecía y arrojaba errores en la consola del navegador (como se muestra a continuación). No se vieron registros de error relacionados en la ruta mysite/logs.
d6ca234baf8d2d5e65f414f31e198fe956d9a939.js?__ws=www.bfsu.cafe:98 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'findFiltered')
at new CategoryTopics (d6ca234baf8d2d5e65f414f31e198fe956d9a939.js?__ws=www.bfsu.cafe:98:18)
at h.createComponent (base-component-manager.js:37:1)
at h.createComponent (ember-component-manager.js:54:1)
at C.create (manager.js:558:1)
at Object.evaluate (runtime.js:3301:1)
at Object.evaluate (runtime.js:1312:1)
at Dt.evaluateSyscall (runtime.js:5232:1)
at Dt.evaluateInner (runtime.js:5188:1)
at Dt.evaluateOuter (runtime.js:5180:1)
at Wt.next (runtime.js:6191:1)
at Wt._execute (runtime.js:6175:1)
at Wt.execute (runtime.js:6166:1)
at qt.handleException (runtime.js:5369:1)
at Kt.handleException (runtime.js:5605:1)
at Lt.throw (runtime.js:5302:1)
at Be.evaluate (runtime.js:2580:1)
at Lt._execute (runtime.js:5285:1)
at Lt.execute (runtime.js:5266:1)
at Ht.rerender (runtime.js:5634:1)
at Er.render (index.js:7578:1)
at index.js:7896:1
at It (runtime.js:5074:1)
at Rr._renderRoots (index.js:7876:1)
at Rr._renderRootsTransaction (index.js:7928:1)
at Rr._revalidate (index.js:7970:1)
at invoke (backburner.js:351:1)
at p.flush (backburner.js:241:1)
at h.flush (backburner.js:447:1)
at q._end (backburner.js:999:1)
at _boundAutorunEnd (backburner.js:648:1)
CategoryTopics @ d6ca234baf8d2d5e65f414f31e198fe956d9a939.js?__ws=www.bfsu.cafe:98
createComponent @ base-component-manager.js:37
createComponent @ ember-component-manager.js:54
create @ manager.js:558
(anonymous) @ runtime.js:3301
evaluate @ runtime.js:1312
evaluateSyscall @ runtime.js:5232
evaluateInner @ runtime.js:5188
evaluateOuter @ runtime.js:5180
next @ runtime.js:6191
_execute @ runtime.js:6175
execute @ runtime.js:6166
handleException @ runtime.js:5369
handleException @ runtime.js:5605
throw @ runtime.js:5302
evaluate @ runtime.js:2580
_execute @ runtime.js:5285
execute @ runtime.js:5266
rerender @ runtime.js:5634
render @ index.js:7578
(anonymous) @ index.js:7896
It @ runtime.js:5074
_renderRoots @ index.js:7876
_renderRootsTransaction @ index.js:7928
_revalidate @ index.js:7970
invoke @ backburner.js:351
flush @ backburner.js:241
flush @ backburner.js:447
_end @ backburner.js:999
_boundAutorunEnd @ backburner.js:648
Promise.then (async)
n @ backburner.js:28
flush @ index.js:46
_scheduleAutorun @ backburner.js:1218
_end @ backburner.js:1009
_boundAutorunEnd @ backburner.js:648
Promise.then (async)
n @ backburner.js:28
flush @ index.js:46
_scheduleAutorun @ backburner.js:1218
_end @ backburner.js:1009
_boundAutorunEnd @ backburner.js:648
Promise.then (async)
n @ backburner.js:28
flush @ index.js:46
_scheduleAutorun @ backburner.js:1218
_end @ backburner.js:1009
_boundAutorunEnd @ backburner.js:648
Promise.then (async)
n @ backburner.js:28
flush @ index.js:46
_scheduleAutorun @ backburner.js:1218
_ensureInstance @ backburner.js:1206
scheduleOnce @ backburner.js:845
k @ index.js:522
queueRerender @ mount-widget.js:124
scheduleRerender @ widget.js:319
rerenderResult @ widget.js:365
F @ hooks.js:207
(anonymous) @ hooks.js:247
dispatch @ jquery.js:5430
_.handle @ jquery.js:5234
frame:251 Dismissaste la señal, pero las cookies de terceros están deshabilitadas en tu navegador, por lo que la señal volverá la próxima vez que visites la página.
Veo información sobre este componente en el archivo js mencionado en la primera línea del registro de error anterior.
Noté que mi encabezado y pie de página completos desaparecen globalmente cuando tengo esto habilitado (todo en mi header.html y footer.html). ¿Fue esto intencional? Pero para solucionar esto, tengo que usar PluginAPI para agregar manualmente un encabezado/pie de página.