Wie man die Post-Daten von relativen Daten in absolute Daten ändert

Hallo Team,
ich möchte das Format der Postdaten auf JJJJ-MM-TT HH:mm ändern.
Die Änderung im Frontend-JavaScript scheint nicht sinnvoll.

  1. Kann ich ein Theme verwenden, um diese Zeit zu überschreiben?
  2. Wie kann ich dies auch in der E-Mail ändern (jetzt wird nur das Datum angezeigt)?
1 „Gefällt mir“

Alle Datumsformate können zusammen mit anderem Text angepasst werden. Sehen Sie sich diese Anleitung an:

5 „Gefällt mir“

Danke für deine Antwort, David.
Ich habe diese benutzerdefinierte Einstellung gesehen, aber es scheint, dass ich sie hier nicht finden kann.
Ich möchte das Zeitformat aller Beiträge als absolute Zeit anzeigen. Zum Beispiel wird der aktuelle Beitrag meines Themas „3h“ als „12. Mai 17:33“ angezeigt.


Weißt du, wie ich alle Postdaten im Format YYYY-MM-DD HH:mm ändern kann, auch wenn sie vor einigen Minuten gepostet wurden?

1 „Gefällt mir“

Ah, verstehe!

In diesem Fall könnten Sie versuchen, die Website-Einstellung „relative date duration“ zu ändern.

relative_date_duration: Anzahl der Tage nach der Veröffentlichung, an denen Beitragstermine relativ (7 Tage) anstelle von absolut (20. Feb.) angezeigt werden.

Ich denke also, für Ihren Fall würden Sie ihn auf 0 setzen.

2 „Gefällt mir“

ja,
Ich habe es auf 0 gesetzt, aber es tritt jetzt immer noch nicht in Kraft. Braucht es etwas Zeit oder muss ich rake posts:rebake ausführen, wie wir es nach einer Domainänderung tun?

Es sollte nur eine Seitenaktualisierung erforderlich sein, damit es wirksam wird. Hat es überhaupt einen Unterschied gemacht? Wie sehen jetzt deine Beitragsdaten aus?

2 „Gefällt mir“

Ich habe die Seite komplett neu geladen, es wird immer noch „36“ angezeigt

und die Einstellung ist 0

1 „Gefällt mir“

Hmm, es scheint, dass Daten, die weniger als 23,5 Stunden zurückliegen, immer relativ angezeigt werden, unabhängig von dieser Einstellung:

Ihre Änderung an der Einstellung wird also für Beiträge angewendet, die älter als 1 Tag sind. Aber es sieht nicht so aus, als hätten wir derzeit eine Möglichkeit, das Verhalten von Dingen zu ändern, die jünger als ein Tag sind.

2 „Gefällt mir“

Ich sehe diese Datei
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>

Ist das die richtige Vorlage, kann ich sie mit einer Theme-Komponente ändern?

Nein, Sie können .gjs Vorlagen leider nicht überschreiben (zielt darauf ab, die Stabilität von Überschreibungen zu verbessern und zu fördern)

1 „Gefällt mir“

Willkommen zurück. @aksoforever!

Wie kommst du mit dem hier voran? Kannst du uns mehr über deinen Anwendungsfall erzählen?

Warum möchtest du so lange, absolute Daten für deine Mitglieder festlegen? Die “vor so langer Zeit”-Angaben sind ziemlich freundlich fürs Auge und vermitteln die Information, wie alt ein Beitrag ist. Wenn man mit der Maus darüber fährt, zeigt es den genauen Zeitstempel an.

1 „Gefällt mir“

Vielen Dank für Ihre Aufmerksamkeit @tobiaseigen

Ja, die Anzeige von Discourse ist jetzt sehr modern und benutzerfreundlich und besser für die meisten Menschen geeignet.

Nur für eine kleine Anzahl von Nutzern, die es häufig verwenden, erscheint die Verwendung der absoluten Zeit schneller und direkter.

Bezüglich der Uhrzeit in der E-Mail zeigt sie jetzt nur noch den Monat und den Tag an.
Es ist nicht benutzerfreundlich, Informationen per E-Mail zu betrachten. Es wird kein Jahr angezeigt, insbesondere wenn man Informationen aus vielen Jahren in der Vergangenheit überprüft.

1 „Gefällt mir“

Derzeit verwende ich eine downgraded Version von Discourse und schreibe den Front-End-Code mit Komponenten um.

Im Plugin wird short_date unten in der E-Mail verwendet. Kann ich short_date aus einer Theme-Komponente modifizieren?

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