الميزات: إضافة صفحات الأسعار والمدونة، وتفعيل ميزة تقييم الأدوات

- إضافة روابط جديدة في تذييل صفحات الأسعار والمدونة.

- إنشاء مكون صفحة الأسعار لعرض تفاصيل الخطط ومقارنة الميزات.

- تطوير مكون صفحة المدونة لعرض منشورات المدونة مع روابط للمقالات الفردية.

- تقديم مكون تقييم الأدوات لتلقي ملاحظات المستخدمين حول الأدوات، بما في ذلك التقييم بالنجوم والتعليقات الاختيارية.

- تفعيل وظيفة useToolRating لجلب وعرض تقييمات الأدوات.

- تحديث أدوات تحسين محركات البحث لتضمين بيانات التقييم في البيانات المنظمة للأدوات.

- تحسين ملفات i18n بترجمات للميزات والصفحات الجديدة.

- دمج إدارة الموافقة على ملفات تعريف الارتباط لتتبع التحليلات.
This commit is contained in:
Your Name
2026-03-10 15:16:28 +02:00
parent 75e11df5fb
commit a14c31c594
25 changed files with 2194 additions and 16 deletions

View File

@@ -5,6 +5,8 @@ import { getToolSEO } from '@/config/seoData';
import { generateToolSchema, generateBreadcrumbs, generateFAQ } from '@/utils/seo';
import FAQSection from './FAQSection';
import RelatedTools from './RelatedTools';
import ToolRating from '@/components/shared/ToolRating';
import { useToolRating } from '@/hooks/useToolRating';
interface SEOFAQ {
q: string;
@@ -25,6 +27,7 @@ interface ToolLandingPageProps {
export default function ToolLandingPage({ slug, children }: ToolLandingPageProps) {
const { t } = useTranslation();
const seo = getToolSEO(slug);
const ratingData = useToolRating(slug);
// Fallback: just render tool without SEO wrapper
if (!seo) return <>{children}</>;
@@ -39,6 +42,8 @@ export default function ToolLandingPage({ slug, children }: ToolLandingPageProps
description: seo.metaDescription,
url: canonicalUrl,
category: seo.category === 'PDF' ? 'UtilitiesApplication' : 'WebApplication',
ratingValue: ratingData.average,
ratingCount: ratingData.count,
});
const breadcrumbSchema = generateBreadcrumbs([
@@ -156,6 +161,9 @@ export default function ToolLandingPage({ slug, children }: ToolLandingPageProps
{/* Related Tools */}
<RelatedTools currentSlug={slug} />
{/* User Rating */}
<ToolRating toolSlug={slug} />
</div>
</>
);