No se puede montar el "post-avatar" en la salida del plugin "topic-above-post-stream"

Después de revisar esta guía " Guía para principiantes para desarrollar temas de Discourse ", intenté montar el widget post-avatar en el outlet de plugin “topic-above-post-stream” en la página de la publicación y no apareció en la página.

A continuación, se muestra el código que agregué.

<script type="text/x-handlebars" data-template-name="/connectors/topic-above-post-stream/post-page">
    <div class="post-detail">
      {{mount-widget widget="post-avatar"}}
    </div>
</script>

¿Me falta algo?

1 me gusta

Es probable que te falten atributos que el widget requiere para mostrar… por ejemplo, ¿cómo sabe para qué usuario quieres mostrar el avatar en este contexto?

Mirando el widget original aquí:

espera:

  • template
  • username
  • name
  • url

Así que tendrías que obtener los datos que quieres en tu plugin outlet, luego pasarlos al widget… algo como

{{mount-widget widget="post-avatar" args=(hash username=this.username)}}

dicho esto… ¿qué intentas lograr más específicamente? si solo quieres mostrar un avatar, usar el helper de avatar podría ser una mejor manera de hacerlo… eso se vería así:

{{avatar user imageSize="large"}}

en este caso, todavía necesitarías asegurarte de que user esté presente, porque así es como sabe qué usuario mostrar.

3 Me gusta

Hola @awesomerobot

Gracias por tu respuesta.

Tengo la intención de mostrar el avatar del usuario encima del texto de cada publicación en la página de publicación. Sin embargo, no he podido obtener los datos de usuario que necesito en el “topic-above-post-stream” plugin outlet. Por lo tanto, después de agregar el código a continuación en el archivo common/head_tag.html, se muestra un icono de basura en el “topic-above-post-stream” plugin outlet.

<script type="text/x-handlebars" data-template-name="/connectors/topic-above-post-stream/custom-post-page">
    <div class="post-detail header">
      {{mount-widget widget="post-avatar" args=(hash username=this.username)}}
    </div>
</script>