تحسينات مخطط منتدى النقاش

يرجى ترك عنوان URL هناك حتى لو تم حظره. يمكنك مناقشة ما إذا كان ذلك منطقيًا أم لا لحالات استخدام المنتدى الخاصة بك، ولكن حتى مع حظر الزحف، يمكن أن يساعد في إزالة الغموض.

6 إعجابات

هذا لا يزال مجرد طلب مهذب، وحتى جوجل لا تحترمه في كل مرة. على سبيل المثال، الروابط في Gmail تسمح لـ googlebot بالوصول إليها على الفور، والزيارات الكافية تؤدي إلى الفهرسة ونتائج البحث.

بالإضافة إلى ذلك… نحن/أنت لا نعرف كيف ستتغير المواقف في المستقبل. إذا تم إصلاحه الآن، فلا داعي للقلق بشأنه لاحقًا. بالتأكيد يتطلب وقت عمل، ولكنه يتطلب أيضًا استثمارًا ومناقشة بشأنه :smirking_face:

إعجاب واحد (1)

الآن السمة datePublished لـ DiscussionForumPosting في الصفحة الأولى تختلف عن datePublished في الصفحة 2+!

  • الصفحة الأولى:
    2015-07-05T22:02:58Z
  • الصفحة 2+:
    2015-07-05T22:02:57Z

لا أعتقد أن جوجل تثق في البيانات المتباينة، وبالتالي قد تقرر أن هذين الرابطين يحتويان على DiscussionForumPosting مختلفين لا يمكن دمجهما.

من الأفضل استخدام نفس مصدر البيانات في الصفحة الأولى و الصفحة 2+.
على سبيل المثال، استخدم دائمًا datePublished من الموضوع وليس من المنشور الأول؟

search.google.com/test/rich-results للصفحة الأولى
datePublished: 2015-07-05T22:02:58Z

search.google.com/test/rich-results للصفحة 2
datePublished: 2015-07-05T22:02:57Z


PR:

استخدم دائمًا datePublished من الموضوع وليس من first_post. هذا يضمن اتساق datePublished في الصفحة الأولى و الصفحة 2+.

لا حاجة لتكرار text في الصفحة 2+. خاصة لا تقم بتعيين text في الصفحة 2+ إذا كان مجرد ملخص وبالتالي ليس متسقًا بنسبة 100٪ مع text في الصفحة الأولى.
نتائج غير متوقعة في Google Search Console: احتفظ بسمة text في الصفحات اللاحقة الصفحة 2+.

3 إعجابات

إخفاء منشور “مغلق قبل x أيام” من عرض الزاحف

إذا تم إغلاق موضوع، تتم إضافة منشور خاص إليه:
على سبيل المثال، انظر Google structured data for forums and profile pages - #15

بالطبع، هذا المنشور ليس له نص سمة text فارغة. انظر validator.schema.org لـ …/t/-/286762 – انظر التعليق الأخير:

التقرير في Google Search Console

الخلاصة

لذلك، يجب استبعاد هذا النوع الخاص من منشورات النظام/الإعلانات من عرض الزاحف لأنها لا تحتوي على أي محتوى.

طلب سحب (PR)

يتم استبعاد الأنواع الخاصة من منشورات النظام/الإعلانات من عرض الزاحف لأنها لا تحتوي على أي محتوى.

المحتوى الفارغ يؤدي إلى مشكلة غير حرجة ‘حقل مفقود “text” (في “comment”)’ في Google Search Console.

هل سيكون من المنطقي تعيين بيانات التعريف لاسم المؤلف إلى حقل الملف الشخصي بالاسم الكامل عند توفره؟ على الأقل في المنتديات التي تم فيها تعطيل إعطاء الأولوية لاسم المستخدم في تجربة المستخدم (ولكنني سأجادل في كلتا الحالتين، فإن حقل عنوان URL يزيل الغموض على أي حال).

هل هناك أي شيء يمكن فعله لحل هذه المشكلة أم يتعين على فريق ديسكورس تحديث النواة؟

@rrlevering بخصوص “لا حاجة لسمة text في الصفحات اللاحقة” / فحص IsExternalContent():

لدي حالة اختبار هذه على نطاق مباشر:

يطبق Discourse DiscussionForumPosting على…

  • الصفحة الأولى - عنوان URL للصفحة: https://example.org/t/-/12345
    • سمة url: https://example.org/t/-/12345
    • سمة text: – تم التعيين –
    • سمة author: – تم التعيين –
  • page=2 - عنوان URL للصفحة: https://example.org/t/-/12345?page=2
    • سمة url: https://example.org/t/-/12345
    • سمة text: – لم يتم التعيين على الإطلاق –
    • سمة author: – تم التعيين –

النتيجة: Google Search Console (اختبار مباشر)

  • الصفحة الأولى:
    DiscussionForumPosting صالح
  • page=2:
    DiscussionForumPosting غير صالح
    • 1 مشكلة حرجةيجب تحديد "text" أو "image" أو "video"

لذلك، إما لا يوجد فحص على IsExternalContent() هنا أو يفترض الفحص أن page URL يساوي السمة url لـ

  • عنوان URL للصفحة:
    https://example.org/t/-/12345?page=2
  • السمة url:
    https://example.org/t/-/12345

لذلك، في الوقت الحالي، يتعين علينا تكرار السمة text في الصفحات اللاحقة للحصول على DiscussionForumPosting صالح في Google Search Console.

مخطط مخطط غير صالح لـ DiscussionForumPosting - عناوين URL للموضوع/المنشور المحددة فقط

المواضيع المتأثرة: المواضيع التي يزيد مجموع مشاركاتها عن 20 مشاركة
عناوين URL المتأثرة: …/t/-/NNN/7 إلى …/t/-/NNN/20

تقرير في ‘Google Rich Result Test’

URL …/t/-/NNN/11: مواضيع مختلفة بإجمالي مشاركات مختلف (انقر للفتح)

– تم ‘إغلاق’ جميع المواضيع النموذجية لضمان عدم تغيير إجمالي المشاركات. الخطأ نفسه يؤثر أيضًا على المواضيع ‘المفتوحة’! –

عناوين URL …/t/-/16968/1 إلى …/t/-/16968/38: موضوع واحد بإجمالي 38 مشاركة حاليًا (انقر للفتح)

مخطط مخطط صالح:
DiscussionForumPosting نفسه لا يزال يحتوي على سمة غير ضرورية position: 1. –

مخطط مخطط غير صالح: author/datePublished مفقود

مخطط مخطط صالح مرة أخرى: (هنا: @page > 1 هو true):

اعتبارات فنية

1. قد لا يكون `@topic_view.prev_page` هو الحل الأفضل لتحديد ما إذا كان سيتم عرض `author`/`datePublished` أم لا.

app/views/topics/show.html.erb#L53-L60

      <% if @topic_view.prev_page %>
        <meta itemprop='datePublished' content='<%= @topic_view.topic.created_at.to_formatted_s(:iso8601) %>'>
        <span itemprop='author' itemscope itemtype="http://schema.org/Person">
          <meta itemprop='name' content='<%= @topic_view.topic.user.username %>'>
          <link itemprop='url' href='<%= Discourse.base_url %>/u/<%= @topic_view.topic.user.username %>'>
        </span>
        <meta itemprop='text' content='<%= @topic_view.topic.excerpt %>'>
      <% end %>
2. قد يكون تنفيذ `@topic_view.prev_page` خاطئًا بحد ذاته.

lib/topic_view.rb#L113-L115
lib/topic_view.rb#L128-L130
lib/topic_view.rb#L193-L195

    @post_number = [@post_number.to_i, 1].max
# ---
    @page = @page.to_i > 1 ? @page.to_i : calculate_page
# ---
  def prev_page
    @page > 1 && posts.size > 0 ? @page - 1 : nil
  end

هل هناك خطأ هنا؟
lib/topic_view.rb#L751-L755

  def calculate_page
    posts_count =
      is_mega_topic? ? @post_number : unfiltered_posts.where("post_number <= ?", @post_number).count
    ((posts_count - 1) / @limit) + 1
  end
  • هل يمكن أن تعطي calculate_page نتائج غير متوقعة لأنها تستخدم @post_number الحالي وتفشل بطريقة ما للقيم من 7 إلى 20؟
  • ((posts_count - 1) / @limit) + 1 ينتج عنه شيء مثل:
    ((7 - 1) / 20) + 1 = 1.3 = 1
  • ما هو رقم الصفحة المتوقع؟ ربما يتم الحساب بقيم غير صحيحة، ثم تقريب الرقم كما هو مقصود عبر floor/ceil وتحويل النوع إلى عدد صحيح:
    (((posts_count - 1.0) / (@limit + 0.0)) + 1.0).floor.to_i
  • ربما تحقق من unfiltered_posts.where("post_number <= ?", @post_number) لأن @topic.posts قد لا تحتوي على جميع المشاركات بدءًا من post_1 كما هو مقصود.

lib/topic_view.rb#L53-L55
lib/topic_view.rb#L119-L127
lib/topic_view.rb#L835-L841

  def self.chunk_size
    20
  end
# ---
    @chunk_size =
      case
      when @print
        TopicView.print_chunk_size
      else
        TopicView.chunk_size
      end

    @limit ||= @chunk_size
# ---
  def unfiltered_posts
    result = filter_post_types(@topic.posts)
    result = result.with_deleted if @guardian.can_see_deleted_posts?(@topic.category)
    result = result.where("user_id IS NOT NULL") if @exclude_deleted_users
    result = result.where(hidden: false) if @exclude_hidden
    result
  end

الخلاصة

في هذه الحالة الهامشية …

  • المواضيع التي يزيد مجموع مشاركاتها عن 20 مشاركة
  • …/t/-/NNN/7 إلى …/t/-/NNN/20

… لم تكن المشاركة الأولى جزءًا من العرض الحالي ولم يتم تشغيل @topic_view.prev_page لأن العرض كان لا يزال في الصفحة الأولى.

لذلك، كانت جميع سمات مخطط البيانات المصغرة DiscussionForumPosting التي تم عرضها فقط في سياق المشاركة الأولى أو عند @topic_view.prev_page == true مفقودة.

PR

يتم عرض بعض سمات مخطط البيانات المصغرة DiscussionForumPosting في سياق المشاركة الأولى. تأكد من تعيين هذه السمات أيضًا إذا لم تكن المشاركة الأولى جزءًا من العرض الحالي.

3 إعجابات

هممم… هذا غير متوقع. أنا آسف على الإزعاج، أعتقد أن فحص مقارنة عنوان URL هذا يتجاهل معلمات الاستعلام في المقارنة. دعني أطرح حلاً.

3 إعجابات

هل هناك أي تحديث هنا حول هذا الإصلاح؟

أعتقد أن الإصلاح الذي تم طرحه هذا الأسبوع للنظر في معلمات الاستعلام في “هل هذا عنوان URL خارجي” سيتم تطبيقه. لذلك، لن يتم الإبلاغ عن أخطاء في المنتديات التي تشير إلى OPs من عنوان URL مختلف بواسطة معلمة استعلام (foo مقابل foo?page=2) في GSC.

3 إعجابات

نعتقد أن الإصلاح الذي تم طرحه هذا الأسبوع يأخذ في الاعتبار معلمات الاستعلام في التحقق من “هل هذا عنوان URL خارجي”

@rrlevering في منصة منتديات أخرى، أوصيت بالتداخل في مخطط comment - Schema.org Property لكل منشور في سلسلة. لا يبدو أن Discourse يفعل ذلك. هل ما زلت توصي به؟

يقوم Discourse بتضمين مخطط التعليقات لكل منشور في سلسلة المناقشة. تحقق من Schema Markup Validator وافتح كائن DiscussionForumPosting وانظر التعليقات المتداخلة.

إعجابَين (2)

شكرا لك! لقد فاتني ذلك متداخلاً في منتدى المناقشة.