ترحيل Joomla إلى Sanity CMS
موقع Joomla الخاص بك يفقد السرعة قبل أن تصنفه Google حتى
Why leave Joomla?
- Monolithic PHP architecture drags mobile Lighthouse scores into the 45–65 range with 800ms+ TTFB
- Extension dependency chains create security holes that block version upgrades for months
- Content trapped in MySQL with HTML markup cannot feed mobile apps or email without brittle scraping
- Template overrides tangle data with presentation logic, turning every redesign into a migration project
- Shrinking Joomla ecosystem leaves your team hunting for maintained extensions and available developers
- Article categories flatten taxonomy into rigid hierarchies your content strategy outgrows within six months
What you gain
- Structured content in Sanity's Content Lake flows to any frontend, app, or IoT device via API with zero coupling
- Portable Text replaces HTML blobs with queryable rich-text nodes your renderers transform per channel
- GROQ queries return exactly the content shape your components need, eliminating over-fetching and waterfalls
- Real-time Sanity Studio editing lets your team preview changes live before publish, versioned in Git
- Sub-300ms TTFB and 95+ Lighthouse scores when paired with Next.js or Astro deployed to Vercel or Netlify edge
- Schema-as-code versioning means your content model lives in your repository, deployed like application code
ترك Joomla خلفك كان بمثابة خدمة حقيقية. لقد أطاع Joomla غرضه. لقد دعم ملايين المواقع عندما كان PHP الذي يتم تقديمه من جانب الخادم هو الخيار الوحيد. لكن الويب المتقدم، والعمارة من Joomla لم تفعل.
محتواك محاصر في جداول MySQL، متشابك مع علامات العرض، مغلق داخل تطبيق PHP أحادي يتطلب إصلاحًا مستمرًا. كل تحديث Joomla هو لعبة حظ - هل ستنكسر ملحقاتك؟ هل سينجو قالبك المخصص؟ والأداء؟ يحصل موقع Joomla النموذجي على 45-65 على نقاط Lighthouse Mobile، غارقة تحت عرض PHP، الاستعلامات غير المحسنة، وبلوات المكونات الإضافية.
التكلفة الحقيقية لا تستضيف. إنها ساعات مطور تنفق محاربة المنصة بدلاً من بناء الميزات.
ما يجلبه Sanity إلى الطاولة
Sanity هي منصة محتوى منظمة. ليس منشئ موقع ويب، وليس محرر صفحات - خلفية محتوى تتعامل مع المحتوى الخاص بك كبيانات، وليس بقع HTML.
إليك ما يعنيه ذلك عمليًا:
معمارية محتوى البحيرة
يخزن Sanity كل محتواك في Content Lake - متجر بيانات مستضاف، حقيقي في الوقت الفعلي يمكن الوصول إليه عبر REST و GraphQL APIs. مقالاتك والفئات والقوائم والوسائط لا تقتصر على قاعدة بيانات فقط يمكن لقوالب PHP قراءتها. إنها متاحة لأي واجهة أمامية، وأي جهاز، وأي قناة.
لغة استعلام GROQ
انسَ كتابة SQL الخام أو الاعتماد على واجهة برمجة التطبيقات المحدودة في Joomla. GROQ (Graph-Relational Object Queries) يتيح لك جلب المحتوى الذي تحتاجه بدقة جراحية:
*[_type == "article" && category->slug.current == "news"] | order(publishedAt desc)[0..9] {
title,
slug,
publishedAt,
body,
author->{ name, avatar },
category->{ title, slug }
}
لا يوجد over-fetching. لا يوجد under-fetching. لا يوجد تجريدات ORM. فقط المحتوى، الموضوع بالضبط كما تحتاجه واجهتك الأمامية.
Portable Text فوق بقع HTML
يخزن Joomla أجسام المقالات كسلاسل HTML الخام. يستخدم Sanity Portable Text - تنسيق نصي غني قائم على JSON حيث توجد كل فقرة وعنوان وصورة وتضمين كائن منظم. هذا يعني:
- محتوى نص غني قابل للاستعلام والقابل للتحول
- الصور المضمنة والمراجع هي كائنات من الدرجة الأولى، وليست سلاسل علامات
- أنواع الكتل المخصصة (callouts، أجزاء الكود، CTA) يتم التحقق من صحتها من قبل المخطط
- يقدم المحتوى الغني بشكل متطابق عبر الويب والهاتف المحمول والبريد الإلكتروني أو أي قناة أخرى
Sanity Studio
Sanity Studio هي واجهة التحرير - تطبيق React قابل للتخصيص بالكامل يعمل في المتصفح الخاص بك. على عكس لوحة إدارة Joomla، تم تكوين Studio من خلال الكود. الأسكيما عبارة عن ملفات TypeScript، مركزة في Git، تمت مراجعتها في طلبات السحب. يتطور نموذج المحتوى الخاص بك بنفس صرامة كود التطبيق الخاص بك.
نقاط ألم Joomla الشائعة التي نحلها
جحيم الاعتماد على الإضافات
تجمع مواقع Joomla الامتدادات مثل البرنقيات. نماذج الاتصال وأدوات SEO والمعارض الصور والحقول المخصصة - كل واحد منها عرضة للأمان المحتمل وحاجز الترقية. في بنية بدون رأس، تنتقل هذه الاهتمامات إلى الخدمات المتخصصة. النماذج تذهب إلى معالج النموذج. الصور تذهب إلى CDN مع التحولات على الطاير. بيانات تعريف SEO تعيش في مخطط محتوى الخاص بك.
مشكلة قفل القالب
قوالب Joomla عبارة عن ملفات PHP تخلط بين المنطق وجلب البيانات والعرض. إعادة التصميم تعني إعادة كتابة تجاوز القالب والقتال مع إطار القالب وآمل أن محتواك لا يزال يقدم. مع Sanity، واجهتك الأمامية مستقلة تماما. استبدال Next.js ل Astro. إعادة تصميم دون لمس المحتوى الخاص بك. شحن تطبيق المحمول من نفس API.
الأداء التي تهم فعلا
طلب صفحة Joomla يضرب PHP، ويستعلم MySQL، ويجمع HTML، ومعالجة تجاوز القالب، ويحمل الامتدادات، وأخيرا يرسل استجابة. سحب واجهة أمامية بدون رأس مع Sanity قبل جلب المحتوى من APIs مخزنة في الذاكرة على الحافة وجعل صفحات ثابتة أو يتم إنشاء زيادة. الفرق قابل للقياس: TTFB أقل من 300 ميلي ثانية مقابل 1.2-2.5 ثانية.
عملية الترحيل الخاصة بنا
تقود Aryan Shah كل ترحيل Joomla إلى Sanity في Social Animal بنهج متدرج. لا كبيرة-Bang Cutovers. لا يتم تجميد المحتوى.
المرحلة 1: تدقيق المحتوى وتصميم المخطط (الأسبوع 1-2)
نحن نستخرج ونرسم كل نوع محتوى من تثبيت Joomla الخاص بك:
- المقالات → Sanity
articleنوع المستند مع جسم نص Portable - الفئات → Sanity
categoryنوع المستند مع المراجع الهرمية - القوائم → Sanity
navigationنوع المستند مع هياكل الارتباط المتداخلة - الحقول المخصصة → يتم تعيينها إلى أنواع حقول Sanity المناسبة (سلاسل وأرقام ومراجع ومصفوفات)
- أصول الوسائط → تم جرد المجموعة لترحيل الدفعة إلى خط أنابيب أصول Sanity
تم كتابة الأسكيما في TypeScript، وحسابها في المستودع الخاص بك، ومراجعتها قبل نقل أي محتوى.
المرحلة 2: استخراج المحتوى والتحول (الأسبوع 2-3)
نحن نبني نصوص هجرة idemпотentent التي:
- استخراج المحتوى من قاعدة بيانات Joomla MySQL عبر الاستعلامات المباشرة
- تحويل أجسام مقالة HTML إلى Portable Text باستخدام
@sanity/block-tools - حل الروابط الداخلية والمراجع الإعلامية
- خريطة Joomla الفئات الهرميات لهياكل مرجعية Sanity
- إعادة بناء أشجار القوائم كمستندات навигação منظمة
- استيراد كل شيء عبر API معاملات Sanity للمعالجة الدفعية الذرية
import { htmlToBlocks } from '@sanity/block-tools'
import { JSDOM } from 'jsdom'
const sanityArticles = joomlaArticles.map(article => ({
_type: 'article',
_id: `joomla-${article.id}`,
title: article.title,
slug: { _type: 'slug', current: article.alias },
body: htmlToBlocks(article.introtext + article.fulltext, schema, {
parseHtml: html => new JSDOM(html).window.document
}),
category: { _type: 'reference', _ref: `category-${article.catid}` },
publishedAt: article.publish_up,
legacyId: article.id
}))
هذه النصوص قابلة لإعادة التشغيل. نحن نختبر مقابل مجموعة بيانات المرحلة، والتحقق من صحة، إصلاح الحالات الحدية، وتشغيل مرة أخرى حتى يتم تأكيد تكافؤ المحتوى.
المرحلة 3: تطوير الواجهة الأمامية (الأسبوع 2-4)
بينما يعمل ترحيل المحتوى بالتوازي، نبني واجهتك الأمامية الجديدة في Next.js أو Astro - أيهما يناسب حالتك الاستخدام. تستهلك الواجهة الأمامية API الخاص بـ Sanity، وتقديم Portable Text مع المكونات المخصصة، والنشر إلى Vercel أو Netlify للأداء الموجهة للحافة.
المرحلة 4: التحقق من الصحة وحفظ SEO (الأسبوع 4-5)
هذا هو المكان الذي ينجح فيه الترحيل أو الفشل.
استراتيجية حفظ SEO
كل عنوان URL Joomla يتم تعيينها إلى ما يعادله الجديد. نحن ننفذ إعادة توجيهات 301 في طبقة الحافة - وليس في رمز التطبيق حيث يضيفون الكمون.
/index.php/component/content/article/12-news/45-article-title → /articles/article-title
/index.php/category/12-news → /categories/news
/index.php/2023/05/15/some-article → /articles/some-article
تحصل أنماط عنوان Joomla القبيحة بشكل سيء (حتى مع SEF تمكين) على تنظيف في العملية. نحن نتحقق:
- كل URL المفهرسة يعود مع 301 إلى موقعها الجديد
- تم إنشاء خرائط الموقع XML وتقديمها
- يتم تعيين علامات الكنسي بشكل صحيح على جميع الصفحات
- بيانات منظمة (JSON-LD) يتم تنفيذها للمقالات والفتات والمنظمة
- يتم نقل بيانات تعريف Open Graph و Twitter Card من امتدادات Joomla SEO
- الروابط الداخلية في أجسام Portable Text يشير إلى عناوين URL الجديدة
نحن نراقب Google Search Console لمدة 90 يومًا بعد الإطلاق لالتقاط أخطاء الزحف أو تقلبات الترتيب.
الجدول الزمني والتسعير
مواقع صغيرة (أقل من 500 مقالة، فئات وقوائم قياسية): 3-4 أسابيع، بدءاً من 8000 دولار.
مواقع متوسطة (500-5000 مقالة، حقول مخصصة، هرميات فئة معقدة): 5-7 أسابيع، بدءاً من 15000 دولار.
مواقع كبيرة (5000 + مقالة، متعددة اللغات، امتدادات مخصصة، سير عمل معقدة): 8-12 أسبوعًا، بدءاً من 30000 دولار.
يتضمن كل مشروع تصميم المخطط وسكريبتات ترحيل المحتوى وتطوير الواجهة الأمامية وتعيين إعادة توجيه SEO و 30 يومًا من دعم ما بعد الإطلاق. تصبح نصوص الترحيل جزءًا من مدونتك - فأنت تملكهم.
النتيجة
تحصل على منصة محتوى سريعة وجرة وبنيت للعيش. يعمل المحررون في Sanity Studio مع التعاون في الوقت الفعلي. يشحن المطورون الميزات دون القتال مع CMS. يسجل موقعك 95+ على Lighthouse. محتواك يخدم أي قناة من خلال API واحد.
لا مزيد من PHP Patching في نهاية الأسبوع. لا مزيد من كوابيس توافق الامتدادات. لا يتم استضافة أموال من قبل بنية معمارية ذروتها في عام 2012.
The migration process
Discovery & Audit
We map every page, post, media file, redirect, and plugin. Nothing gets missed.
Architecture Plan
New stack designed for your content structure, SEO requirements, and performance targets.
Staged Migration
Content migrated in batches. Each batch verified before the next begins.
SEO Preservation
301 redirects, canonical tags, sitemap, robots.txt — every ranking signal carried over.
Launch & Monitor
DNS cutover with zero downtime. 30-day monitoring period included.
Joomla vs Sanity CMS
| Metric | Joomla | Sanity CMS |
|---|---|---|
| Lighthouse Mobile | 45-65 | 95-100 |
| TTFB | 1.2-2.5s | <0.3s |
| Build Time | N/A (runtime PHP) | <60s ISR/SSG |
| Hosting Cost | $25-80/mo (PHP hosting) | $0-20/mo (Vercel + Sanity free tier) |
| Developer Experience | PHP templates, MySQL, extension overrides | TypeScript schemas, GROQ, Git workflows |
| API/Headless | Limited REST (Joomla 3.x+) | Full REST + GraphQL + GROQ + real-time listeners |
Common questions
كم من الوقت يستغرق ترحيل Joomla إلى Sanity؟
تترحل معظم مواقع Joomla الصغيرة والمتوسطة في 3-7 أسابيع. يغطي ذلك تدقيق المحتوى وتصميم المخطط وتحول البيانات وبناء الواجهة الأمامية وتعيين إعادة التوجيه SEO. تعمل المواقع الأكبر - فكر في آلاف المقالات أو إعدادات متعددة اللغات - عادة ما تستغرق 8-12 أسبوعًا. نحن نعمل في مراحل طوال الوقت، لذلك لا يوجد cutover كبير في الانفجار ولا يحتاج المحررون الخاصون بك إلى التوقف عن النشر.
هل سأفقد تصنيفات Google الخاصة بي أثناء الترحيل؟
لا. نقوم بتنفيذ إعادة توجيهات 301 لكل عنوان URL Joomla المفهرسة، وحمل جميع البيانات الوصفية، وإعادة إنشاء خرائط الموقع XML، ومراقبة Google Search Console لمدة 90 يومًا بعد الإطلاق. في الواقع، أنماط عنوان Joomla الفوضوية تصبح أنظف في العملية - تميل محركات البحث إلى مكافأة ذلك. يرى معظم العملاء استقرار الترتيب أو التحسين في غضون 4-6 أسابيع.
كيف يتم تحويل محتوى مقالة Joomla إلى Portable Text الخاص بـ Sanity؟
نستخدم مكتبة `@sanity/block-tools` الرسمية Sanity لتحليل أجسام مقالة HTML Joomla إلى Portable Text، وهو تنسيق JSON منظم. تصبح الصور كائنات من الدرجة الأولى مع قص Hotspot. يتم تحويل الروابط المضمنة والعناوين والقوائم إلى كتل محددة. تحصل العناصر المخصصة مثل callouts على تعيين أنواع كتل Portable Text المخصصة.
ما يحدث لفئات Joomla والهياكل القائمة بالقوائم؟
تصبح الفئات أنواع مستندات Sanity مع المراجع الهرمية، لذلك تبقى علاقات الوالدين والطفل. تحويل قوائم Joomla إلى مستندات ملاحة منظمة في Sanity مع صفائف الارتباط المتداخلة. جميع العلاقات من الفئة إلى المقالة تحمل من خلال نظام المراجع Sanity، مما يعني أنها قابلة للاستعلام بالكامل عبر GROQ.
هل يحتاج محررو المحتوى إلى تعلم GROQ لإدارة المحتوى في Sanity؟
لا يلمس محررو المحتوى أبدًا GROQ - يعطيهم Sanity Studio واجهة تحرير بصرية كاملة. GROQ هي أداة مطور للاستعلام عن المحتوى في الواجهة الأمامية، تقريبًا مشابه لكيفية قيام SQL بتشغيل Joomla خلف الكواليس. يتم توثيقه بشكل جيد وقابل للوصول، على أي حال نكتب جميع الاستعلامات أثناء مشروع الترحيل على أي حال.
هل يمكن لـ Sanity التعامل مع نفس الوظائف مثل امتدادات Joomla الخاصة بي؟
Sanity تستبدل امتدادات Joomla بالحلول المتخصصة. نماذج الاتصال تنتقل إلى خدمات مخصصة مثل Formspree أو مسارات API مخصصة. بيانات تعريف SEO تصبح حقول المخطط في Sanity. تحدث معالجة الصور على مستوى CDN. تفقد تضاربات الامتدادات والثغرات الأمنية، وتحسن الأداء عبر المجلس.
Ready to migrate?
Free assessment. We'll audit your current site and give you a clear migration plan — no commitment.
Let's build
something together.
Whether it's a migration, a new build, or an SEO challenge — the Social Animal team would love to hear from you.