كيفية جعل أوقات النشر تعرض الثواني؟

بحثت عن هذا ولم أجد شيئًا - ما هي أبسط طريقة لعرض الوقت الذي تم فيه إنشاء المنشور حتى الثانية في نافذة المشاركة المنبثقة؟

كل منشور لديه بالفعل الطابع الزمني الدقيق المتاح في 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: ملاحظة: سيؤدي هذا إلى تغيير كل مكان في موقعك حيث يتم استخدام تنسيق التاريخ هذا.

9 إعجابات

لإكمال إجابة Don الرائعة، إذا كنت تريد فقط في نافذة مشاركة الموضوع هذه، يمكنك تجربة هذا المكون:

الإعدادات:

النتيجة:

:+1:

6 إعجابات

حسنًا، يبدو هذا مذهلاً

ولكن

نحصل على خطأ خادم داخلي 500 عند محاولة تثبيته

هل لديك، بصفتك المؤلف، أي نصائح حول ما يجب أن أبحث عنه لحل هذه المشكلة؟

افترضي هو أننا نقوم بتشغيل إصدار قديم بسنة من فرع الاستقرار لـ 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)؟