게시물 타임스탬프에 초까지 표시하려면 어떻게 해야 하나요?

이 내용을 찾아보았지만 아무것도 찾을 수 없었습니다 - 공유 팝업에서 게시글 작성 시간을 초 단위까지 표시하는 가장 간단한 방법은 무엇일까요?

각 게시글에는 이미 HTML에 정확한 타임스탬프가 포함되어 있어 이 정보는 분명히 존재하지만, 이 텍스트(안타깝게도 포맷된 날짜가 아닌 하드코딩된 값으로 보입니다)에 초를 추가하기 위해 업데이트하는 가장 좋은 방법이 무엇인지 100% 확신하지는 못하겠습니다. 저는 주로 CSS를 다루며 JavaScript에는 익숙하지 않습니다(잘 읽고 이해는 하지만, 이 문제를 해결하기 위해 어떻게 시작해야 할지 ‘적절한’ 방법을 알 만큼 숙련되지는 않았습니다 [대부분의 코딩 경험은 임베디드 분야에 있습니다]). 그래서 테마나 유사한 가벼운 추가 플러그인에 쉽게 추가할 수 있는 맥락에서 어디서부터 접근해야 할지 정말로 막막합니다.

안녕하세요 :wave:

다음 형식을 사용합니다.


/admin/customize/site_texts에서 변경할 수 있습니다.

다음 두 문자열을 검색하세요.

dates.long_date_with_year
dates.long_date_without_year


dates.long_date_with_year

기본값
MMM D, YYYY LT

다음으로 변경하세요.
MMM D, YYYY LTS


dates.long_date_without_year

기본값
MMM D, LT

다음으로 변경하세요.
MMM D, LTS


:warning: 참고: 이 날짜 형식이 사용되는 사이트의 모든 위치에서 변경됩니다.

좋은 답변을 주신 Don님의 답변을 보완하자면, 이 공유-토픽 모달에서만 표시하고 싶다면 이 컴포넌트를 시도해 볼 수 있습니다:

설정:

결과:

:+1:

음, 이건 정말 놀랍네요

그런데

설치를 시도하면 500 Internal Server Error가 발생해요

저자로서, 이 문제를 해결하기 위해 무엇을 찾아봐야 할지 조언해 주실 수 있을까요?

제 추측은 우리가 1년 전의 안정 버전(stable-branch)의 Discourse를 사용하고 있어서, 아마도 저분이 하신 작업이 그 버전과 잘 맞지 않는 것 같다는 겁니다(적어도 라이브 빌드에서는 잘 동작한다고 가정할 때요). 이 모든 것에 저보다 훨씬 익숙해 보이시니, 어떤 차이점을 찾아봐야 할지 대략적인 방향만이라도 알려주시면, 제가 리포지토리를 포크해서 직접 백포트 작업을 해보겠습니다. 저를 위해 계속 작업해 주시는 것보다는 그렇게 하는 편이 더 나을 것 같아요.

확인해 보니 API가 다르게 작동하는 것 같습니다.

이 원래 코드를 가져와서

import { apiInitializer } from "discourse/lib/api";
import discourseComputed from "discourse-common/utils/decorators";

function longDateNoYearWithSeconds(dt) {
  if (!dt) {
    return;
  }

  if (new Date().getFullYear() !== dt.getFullYear()) {
    return moment(dt).format(settings.share_topic_date_with_year_format);
  } else {
    return moment(dt).format(settings.share_topic_date_without_year_format);
  }
}

export default apiInitializer("1.8.0", (api) => {
  api.modifyClass("component:modal/share-topic", {
    pluginId: "share-topic",
    @discourseComputed("post.created_at", "post.wiki", "post.last_wiki_edit")
    displayDate(createdAt, wiki, lastWikiEdit) {
      const date = wiki && lastWikiEdit ? lastWikiEdit : createdAt;
      return longDateNoYearWithSeconds(new Date(date));
    },
  });
});

다음과 같이 업데이트했습니다:

import { withPluginApi } from "discourse/lib/plugin-api";
import discourseComputed, { on } from "discourse-common/utils/decorators";

function longDateNoYearWithSeconds(dt) {
  if (!dt) {
    return;
  }

  if (new Date().getFullYear() !== dt.getFullYear()) {
    return moment(dt).format(settings.share_topic_date_with_year_format);
  } else {
    return moment(dt).format(settings.share_topic_date_without_year_format);
  }
}

export default {
  name: "post-timestamp-mod",
  initialize(container) {
    withPluginApi("0.10.0", (api) => {
      api.modifyClass("component:modal/share-topic", {
        pluginId: "share-topic",
        @discourseComputed("post.created_at", "post.wiki", "post.last_wiki_edit")
        displayDate(createdAt, wiki, lastWikiEdit) {
          const date = wiki && lastWikiEdit ? lastWikiEdit : createdAt;
          return longDateNoYearWithSeconds(new Date(date));
        },
      });
    });
  }
}

이렇게 변경한 이유는 우리가 가진 다른 테마 컴포넌트에서 확인한 내용 때문입니다.

아직 작동하지는 않지만, 언젠가 해결할 수 있을까요? 이 API 관련 기능들이 실제로 무엇을 하는지 파악하려면 어디를 봐야 할까요?