이 내용을 찾아보았지만 아무것도 찾을 수 없었습니다 - 공유 팝업에서 게시글 작성 시간을 초 단위까지 표시하는 가장 간단한 방법은 무엇일까요?
각 게시글에는 이미 HTML에 정확한 타임스탬프가 포함되어 있어 이 정보는 분명히 존재하지만, 이 텍스트(안타깝게도 포맷된 날짜가 아닌 하드코딩된 값으로 보입니다)에 초를 추가하기 위해 업데이트하는 가장 좋은 방법이 무엇인지 100% 확신하지는 못하겠습니다. 저는 주로 CSS를 다루며 JavaScript에는 익숙하지 않습니다(잘 읽고 이해는 하지만, 이 문제를 해결하기 위해 어떻게 시작해야 할지 ‘적절한’ 방법을 알 만큼 숙련되지는 않았습니다 [대부분의 코딩 경험은 임베디드 분야에 있습니다]). 그래서 테마나 유사한 가벼운 추가 플러그인에 쉽게 추가할 수 있는 맥락에서 어디서부터 접근해야 할지 정말로 막막합니다.
Don
3월 28, 2024, 9:15오후
2
안녕하세요
다음 형식을 사용합니다.
/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
참고: 이 날짜 형식이 사용되는 사이트의 모든 위치에서 변경됩니다.
좋은 답변을 주신 Don님의 답변을 보완하자면, 이 공유-토픽 모달에서만 표시하고 싶다면 이 컴포넌트를 시도해 볼 수 있습니다:
Contribute to Arkshine/discourse-share-topic-date development by creating an account on GitHub.
설정:
결과:
음, 이건 정말 놀랍네요
그런데
설치를 시도하면 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 관련 기능들이 실제로 무엇을 하는지 파악하려면 어디를 봐야 할까요?