Instalaciones múltiples de la cartera del usuario

¡Hola! Tengo la intención de usar mi instancia de Discourse para un juego de rol. El componente temático de portafolio de usuario sería perfecto para mostrar las cosas que los usuarios han enviado. Específicamente, quiero poder ver una lista de los personajes de un usuario, envíos de lore y escenas de juegos de rol en el perfil.

El único problema es que este componente temático solo admite una categoría a la vez. Intenté configurar la categoría en 0 para todas las categorías y luego agregar varias etiquetas, pero esto hizo que la página del portafolio apareciera en blanco. Por lo tanto, me gustaría editar e instalar múltiples instancias de este componente temático para tener múltiples páginas de portafolio para estos elementos separados.

Intenté descargar el componente temático y editar los archivos (es decir, cambiar instancias de portafolio a portafolio_2) y luego instalé la nueva copia además de la original, pero ninguna de ellas está funcionando.

Cuando ambos están habilitados…

  1. Solo se muestra una instancia del botón de portafolio en la tarjeta de usuario (portafolio_2)
  2. Solo se muestra una instancia del botón de portafolio en el perfil del usuario (portafolio_2)
  3. La página portafolio_2 está en blanco en el perfil del usuario.

¿Es posible hacer que esto funcione, o debería rendirme?

Esta función se originó en Topic List Previews. También podrías probar eso.

En TLP también puedes especificar la inclusión de portafolios por etiqueta.

lo que te permitiría seleccionar temas en varias categorías.

1 me gusta

Gracias, este es un gran lugar para buscar. Creo que prefiero que el botón de portafolio esté en el menú horizontal del perfil (junto a resumen, actividad, etc.), pero el problema mayor que tengo es que si hay varias etiquetas, quiero poder filtrar por etiqueta, es decir, los usuarios harían clic en botones para ver solo “personajes” o “escenas” en el portafolio a la vez.

Puede que termine intentando unir algo para este propósito de ambos componentes temáticos, pero voy a investigar un poco más primero. Si alguien tiene ideas adicionales, ¡por favor compártalas!

1 me gusta

Está bien, pero lógicamente está en el mejor lugar para el caso general: es un filtro de toda la actividad al igual que los otros ‘cortes’.

Pero claro, ¡mira la fuente y haz tu peor intento! :computer: :rocket:

Estoy 100% de acuerdo en que este es un buen lugar para un caso de uso general. Mi caso de uso particular es para una comunidad centrada en el juego de rol donde los usuarios buscarían esta información con regularidad, por lo que quiero que los botones de seguimiento de personajes y escenas sean accesibles con la menor cantidad de clics posible y muy visibles. ¡No quiero criticar tu solución en absoluto!

1 me gusta

No te preocupes. No lo tomé de esa manera.

Sí, veo la utilidad en tu caso. ¡Es hora de una solución a medida!

1 me gusta

De acuerdo, tomé una dirección diferente a la de intentar usar los plugins de portafolio. No estoy seguro de si debería publicar esto aquí o en un nuevo hilo; si es así, ¡por favor házmelo saber!

¿Alguien puede echar un vistazo a esto y decirme qué estoy haciendo mal (y, con suerte, por qué / cómo solucionarlo)? He pasado horas y horas leyendo tutoriales, escribiendo y editando esto, pero soy muy principiante y he llegado a un punto en el que no sé qué intentar a continuación.

El objetivo: mostrar una lista de temas de una categoría específica en la página de resumen de un usuario.
En este caso de uso, es para un foro de RPG donde los usuarios crearán personajes para publicar historias. Quiero que este plugin muestre qué personajes ha creado un usuario para que nadie tenga que buscar demasiado. Todas las hojas de personaje se almacenarán en el mismo foro. Por lo tanto, creo que solo tengo que crear una lista de temas que obtenga temas del usuario y el foro correctos.

He estado usando lo siguiente como referencia:

https://meta.discourse.org/t/add-a-featured-topic-list-to-your-discourse-homepage/132949

Aquí está mi intento. Hasta ahora, el encabezado de la lista de temas (tema/respuestas/actividad) se muestra en el lugar correcto, pero no se está poblando con temas.

<script type="text/discourse-plugin" version="0.8">
  const ajax = require('discourse/lib/ajax').ajax;
  const Topic = require('discourse/models/topic').default;
  const User = require('discourse/models/user').default;
  // Se necesita ajax, Topic y User

  api.registerConnectorClass('above-user-summary-stats', 'character-list', {
    // above-user-summary-stats es el outlet del plugin, character-list es el nombre del componente personalizado

    setupComponents(args, component) {

        const store = getOwner(this).lookup("service:store");

        return ajax(userPath(`/topics/created-by/${this.username_lower}.json`)).then(function (result) {
        // líneas tomadas de summary() en el modelo user.js; intentando encontrar el nombre de usuario del perfil del usuario que estamos viendo para poder acceder al json de los temas que han creado

            let characterList = [];
            // array vacío para agregar temas

            result.topic_list.topics.forEach.category_id(4)(function(topic){
            // temas solo de la categoría específica que queremos

            // por aquí el tutorial de kris tenía algunas líneas para asociar usuarios con el tema. Lo ignoré porque no necesito que se muestren usuarios aparte del creador original con el tema. ¿Es esto importante?
            //topic.posters.forEach(function(poster){
                //poster.user = $.grep(featuredUsers, function(e){ return e.id == poster.user_id; })[0];
              //});

                characterList.push(Topic.create(topic));
                // agregar temas a la lista de temas

            });

            component.set('characterList', characterList);
            // Configurar nuestro componente con los temas del array

        }); // fin ajax


    } // fin setupComponents

  });
</script>

<script type="text/x-handlebars" data-template-name="/connectors/above-user-summary-stats/character-list">

      <div class="custom-character-list-wrapper">
        {{topic-list topics=characterList showPosters=false}}
      </div>

</script>