شرح إصلاح أخطاء Schema Markup في XenForo بعد تحديثات Google الأخيرة

  • بادئ الموضوع بادئ الموضوع codeNET
  • تاريخ البدء تاريخ البدء

codeNET

Administrative
طاقم الإدارة
ادارة كود نت
السمعة: 96%

إصلاح أخطاء Schema Markup في XenForo بعد تحديثات Google الأخيرة​


بعد تحديثات Google الأخيرة المتعلقة بتحسينات البيانات المنظمة Schema Markup، ظهرت بعض الأخطاء داخل منتديات XenForo عند فحص الصفحات عبر أدوات Google الخاصة بالبيانات المنظمة.

في هذا الشرح سوف نتعرف على طريقة بسيطة لإصلاح أخطاء الـ Markup داخل المشاركات عبر تعديل قالب post_macros وإضافة بيانات Schema المطلوبة بشكل صحيح.

ما فائدة هذا التعديل؟​


  • تحسين توافق المنتدى مع تحديثات Google الحديثة.
  • إصلاح أخطاء البيانات المنظمة Schema.
  • تحسين ظهور الصفحات داخل نتائج البحث.
  • إضافة بيانات الكاتب والرابط والمحتوى بطريقة صحيحة.
  • تحسين فحص الصفحات داخل أدوات Google.

القالب المطلوب تعديله​


قم بالدخول إلى لوحة التحكم ثم توجه إلى:

كود:
Appearance > Templates

بعدها افتح قالب:

كود:
post_macros

ابحث عن الكود التالي​


HTML:
<xf:if is="$includeMicrodata">
    <meta itemprop="parentItem" itemscope itemid="{{ link('canonical:threads', $thread) }}" />
</xf:if>

استبدله بالكود التالي​


HTML:
<xf:if is="$includeMicrodata">
    <meta itemprop="parentItem" itemscope itemid="{{ link('canonical:threads', $thread) }}" />

    <div itemprop="author" itemscope itemtype="https://schema.org/Person">
        <meta itemprop="name" content="{{ $post.User.username ?: $post.username }}" />
        <meta itemprop="url" content="{{ link('canonical:members', $post.User) }}" />
    </div>

    <meta itemprop="text" content="{{ $post.message }}" />
    <meta itemprop="url" content="{{ link('canonical:posts', $post) }}" />
    <meta itemprop="name" content="Post by {{ $post.User.username ?: $post.username }}" />
</xf:if>

شرح التعديل​


يقوم هذا التعديل بإضافة بيانات Schema إضافية للمشاركات مثل:

  • اسم كاتب المشاركة.
  • رابط الملف الشخصي للعضو.
  • محتوى المشاركة.
  • الرابط المباشر للمشاركة.
  • عنوان مخصص للمشاركة داخل البيانات المنظمة.

وهذا يساعد محركات البحث على فهم محتوى المنتدى بشكل أفضل وتحسين التوافق مع متطلبات Google الحديثة.

فحص البيانات المنظمة​


بعد حفظ التعديل يمكنك فحص صفحات المنتدى عبر أداة التحقق الرسمية من Schema:

ملاحظات مهمة​


  • يفضل أخذ نسخة احتياطية من القالب قبل التعديل.
  • قد تحتاج إلى إعادة بناء الكاش بعد الحفظ.
  • التعديل متوافق مع XenForo 2.3 وأغلب الإصدارات الحديثة.
  • بعض الإضافات قد تعدل نفس القالب لذلك تأكد من عدم وجود تعارض.

الخلاصة​


إذا كنت تواجه مشاكل في البيانات المنظمة بعد تحديثات Google الأخيرة، فهذا التعديل يعتبر حلًا بسيطًا وفعالًا لتحسين توافق منتدى XenForo مع معايير Schema الحديثة وتحسين ظهور المحتوى داخل نتائج البحث.
IMG_8343.png
 
من اهم المواضيع اللي شوفتها الفتره الاخيره تسلم ايدك
 
عند وضع الكود بيجيب ان فيه مشكله فى البيانات المنظمه وبيقول كمان ان عنوان ur مكرر
هذا بسبب النسخة الاحدث الذي تستخدمة فللعلم ان كود نت نستخدم نسخة 2.3.9 .. وهذهِ الشروحات كلها قديمة وقد تكون منتهيه على مايبدو
 
هذا بسبب النسخة الاحدث الذي تستخدمة فللعلم ان كود نت نستخدم نسخة 2.3.9 .. وهذهِ الشروحات كلها قديمة وقد تكون منتهيه على مايبدو
اعتقد هذا اخى كانت النسخ القديمه بها تلك المشكله وتم حلها بالاصدارات الاحدث
 
في XenForo 2.3.10، يُفضل استخدام دالة ⁠link()⁠ مع معرفات الروابط (canonical links) بدقة، والتأكد من أن البيانات المهيكلة تستخدم ⁠itemprop⁠ بشكل سليم. الكود الذي قدمته يعتبر صحيحاً في هيكليته، ولكن يفضل إضافة ⁠itemtype⁠ للـ ⁠div⁠ الرئيسي لضمان توافقه الكامل مع محركات البحث في إصدارات XF الأخيرة.


إليك الكود المحدث والمحسّن:
كود:
<xf:if is="$includeMicrodata">
    <div itemscope itemtype="https://schema.org/ReplyAction">
        <meta itemprop="result" itemscope itemtype="https://schema.org/Comment" itemid="{{ link('canonical:posts', $post) }}">
            <meta itemprop="parentItem" itemscope itemid="{{ link('canonical:threads', $thread) }}" />
            
            <div itemprop="author" itemscope itemtype="https://schema.org/Person">
                <meta itemprop="name" content="{{ $post.User.username ?: $post.username }}" />
                <link itemprop="url" href="{{ link('canonical:members', $post.User) }}" />
            </div>

            <meta itemprop="text" content="{{ $post.message|striptags }}" />
            <link itemprop="url" href="{{ link('canonical:posts', $post) }}" />
            <meta itemprop="name" content="{{ phrase('post_by_x', {'name': $post.User.username ?: $post.username}) }}" />
        </meta>
    </div>
</xf:if>
التعديلات والتحسينات التي تمت:
1 استخدام ⁠itemtype="https://schema.org/ReplyAction"⁠: ليكون التوصيف أكثر دقة لمحركات البحث بأن هذا الكود يمثل "رد" (Reply) داخل موضوع.
2 استخدام ⁠striptags⁠: في ⁠itemprop="text"⁠، أضفت فلتر ⁠|striptags⁠ لتنظيف نص الرسالة من أكواد BB-Code أو HTML التي قد تظهر داخل البيانات المهيكلة وتسبب أخطاء في "Google Search Console".
3 استخدام ⁠link⁠ بدلاً من ⁠meta⁠ للروابط: في Schema.org، يفضل استخدام وسم ⁠<link>⁠ للروابط (URL) بدلاً من ⁠<meta>⁠ لضمان توافق أفضل.
4 استخدام العبارات (Phrases): بدلاً من كتابة "Post by" يدوياً، تم استخدام ⁠{{ phrase('post_by_x', ... ) }}⁠ لضمان توافق الكود مع اللغات المتعددة في منتداك.
 
ابومازن اتمنى ان تحذف جميع الاعلانات التي في منتداك فيه تلوث بصري رهيب صراحتًا ؟
 
التصحيح الجديد للكود لليتوافق مع النسخ الاحدث 2.3.6 واعلى ..
كود:
<xf:if is="$includeMicrodata && $post.User">
    <div itemscope itemtype="https://schema.org/ReplyAction">
        <meta itemprop="result" itemscope itemtype="https://schema.org/Comment" itemid="{{ link('canonical:posts', $post) }}">
            <meta itemprop="parentItem" itemscope itemid="{{ link('canonical:threads', $thread) }}" />
            
            <div itemprop="author" itemscope itemtype="https://schema.org/Person">
                <meta itemprop="name" content="{{ $post.User.username ?: $post.username }}" />
                <link itemprop="url" href="{{ link('canonical:members', $post.User) }}" />
            </div>

            <meta itemprop="text" content="{{ $post.message|escape('html') }}" />
            <link itemprop="url" href="{{ link('canonical:posts', $post) }}" />
            <meta itemprop="name" content="{{ phrase('post_by_x', {'name': $post.User.username ?: $post.username}) }}" />
        </meta>
    </div>
</xf:if>
 
عودة
أعلى أسفل