Cómo cambiar los datos de la publicación de datos relativos a absolutos

Hola equipo:
Quiero modificar el formato de fecha de las publicaciones a YYYY-MM-DD HH:mm.
Modificarlo en JavaScript del frontend no parece razonable.

  1. ¿Puedo usar un tema para anular esta hora?
  2. ¿Cómo puedo modificar esto también en el correo electrónico (ahora solo muestra la fecha)?
1 me gusta

Todos los formatos de fecha están disponibles para personalizar junto con otro texto. Consulte esta guía:

5 Me gusta

Gracias por tu respuesta, David.
Vi esta configuración personalizada, pero parece que no la encuentro aquí.
Quiero mostrar el formato de hora de todas las publicaciones como hora absoluta. Por ejemplo, mi publicación de tema actual ‘3h’ se muestra como ‘12 de mayo 17:33’.


¿Sabes cuál es la mejor manera para que cambie todos los datos de las publicaciones al formato YYYY-MM-DD HH:mm, incluso si se publican en algunos minutos?

1 me gusta

¡Ah, ya veo!

En ese caso, podrías intentar cambiar la configuración del sitio “duración de fecha relativa”.

relative_date_duration: Número de días después de la publicación en que las fechas de las publicaciones se mostrarán como relativas (7d) en lugar de absolutas (20 de feb).

Así que creo que para tu caso, lo establecerías en 0.

2 Me gusta

sí,
Lo he puesto a 0, pero todavía no tiene efecto ahora. ¿Requiere algún tiempo o necesito hacer rake posts:rebake como hacemos después de cambiar el dominio?

Solo debería ser necesario actualizar la página para que surta efecto. ¿Ha hecho alguna diferencia? ¿Cómo se ven ahora tus fechas de publicación?

2 Me gusta

Tengo una actualización completa de la página, todavía muestra ‘36’

y la configuración es 0

1 me gusta

Hmm, parece que las fechas que tienen menos de 23,5 horas de antigüedad siempre se muestran como relativas, independientemente de esa configuración:

Por lo tanto, tu cambio en la configuración se habrá aplicado a las publicaciones de más de 1 día de antigüedad. Pero no parece que actualmente tengamos una forma de cambiar el comportamiento de las cosas que tienen menos de un día de antigüedad.

2 Me gusta

Veo este archivo
discourse-main/app/assets/javascripts/discourse/app/components/post/meta-data/date.gjs

<template>
    <div class="post-info post-date">
      <a
        class={{concatClass
          "post-date"
          (if (and @post.wiki @post.last_wiki_edit) "last-wiki-edit")
        }}
        href={{@post.shareUrl}}
        title={{i18n "post.sr_date"}}
        {{on "click" this.showShareModal}}
      >
        <RelativeDate @date={{this.date}} />
      </a>
    </div>
  </template>

¿Es esta la plantilla correcta? ¿Puedo cambiarla con un componente temático?

No, lamentablemente no puedes sobrescribir las plantillas .gjs (destinado a mejorar y fomentar la estabilidad de las sobrescripciones)

1 me gusta

Bienvenido de nuevo, @aksoforever!

¿Cómo te está yendo con esto? ¿Puedes contarnos más sobre tu caso de uso?

¿por qué querrías imponer fechas tan largas y absolutas a tus miembros? Las fechas de “hace tiempo” son bastante amigables a la vista y transmiten la información que necesitas para saber qué tan viejo es un mensaje. Al pasar el ratón sobre ellas, se muestra la marca de tiempo explícita.

1 me gusta

Gracias por su atención @tobiaseigen

Sí, ahora la visualización de Discourse es muy moderna y amigable, y más adecuada para la mayoría de las personas.

Solo para un pequeño número de personas que lo usan con frecuencia, usar el tiempo absoluto se siente más rápido y directo.

Con respecto a la hora en el correo electrónico, ahora solo muestra el mes y el día.
No es fácil de usar para consultar información por correo electrónico. No muestra el año, especialmente cuando se revisa información de hace muchos años.

1 me gusta

Actualmente estoy usando una versión downgrade de Discourse y reescribiendo el código del frontend usando componentes

El correo electrónico utiliza lo siguiente en un plugin, ¿puedo modificar short_date desde un componente de tema?

after_initialize do
  if SiteSetting.custom_email_date_format_enabled
    module ::EmailHelper
      def short_date(datetime)
        china_time = datetime.in_time_zone("Asia/Shanghai")
        china_time.strftime("%Y-%m-%d %H:%M")
      end
    end
  end
end