المقدمة
كتل المحتوى القابلة لإعادة الاستخدام التي يمكن استخدامها عبر صفحات متعددة.
مزيد من المعلومات حول واجهة مستخدم الوحدة https://doc.oneentry.cloud/docs/category/blocks
🎯 ماذا تفعل هذه الوحدة؟
تتيح لك وحدة Blocks استرجاع مكونات المحتوى القابلة لإعادة الاستخدام (الكتل) — مجموعات من السمات التي تقوم بإنشائها مرة واحدة في لوحة الإدارة وإعادة استخدامها عبر الصفحات وصفحات المنتجات: الرؤوس، والتذييلات، واللافتات، والشهادات، والمنزلقات، وودجات المنتجات/التوصيات. قم بتحديث كتلة واحدة وستتغير في كل مكان تُستخدم فيه.
SDK هو للقراءة فقط: يمكنك استرجاع الكتل هنا وإنشاءها أو تعديلها في لوحة إدارة OneEntry.
🚀 البدء السريع
قم بتهيئة الوحدة من defineOneEntry:
const { Blocks } = defineOneEntry( "your-project-url", { "token": "your-app-token" });
استرجع كتلة واحدة بواسطة علامتها واقرأ سماتها:
// Fetch the "footer" block.
const block = await Blocks.getBlockByMarker("footer", "en_US");
console.log(block.identifier, block.type, block.isVisible);
// "footer" "common_block" true
// Custom fields live in attributeValues.
console.log(block.attributeValues);
✨ المفاهيم الأساسية
ما هي الكتلة؟
الكتلة هي مكون محتوى قابل لإعادة الاستخدام يحتوي على:
identifier— علامة فريدة تُستخدم للإشارة إليها في الكود (استخدم العلامة دائمًا؛ فهي لا تتغير أبدًا)localizeInfos— بيانات محلية (مثلtitle)، محتوى مختلف لكل لغةtype— نوعBlockTypeالذي يحدد ما تقوم الكتلة بعرضهisVisible— علامة الرؤيةattributeValues— حقول مخصصة تقوم بتعريفها عبر AttributesSets
هيكل الكتلة
{
id: 3, // unique ID
localizeInfos: { // block localized data
title: 'Block', // block localized title
},
version: 0, // block version
position: 1, // block position in array of blocks
identifier: 'block', // block identifier (marker)
type: 'common_block', // block type
templateIdentifier: null, // template identifier
isVisible: true, // visibility
attributeValues: {}, // block attributes
}
📋 ما تحتاج إلى معرفته
- قم بالإشارة إلى الكتل بواسطة العلامة (
identifier) في الكود — العلامات لا تتغير أبدًا. - تُنشأ الكتل في لوحة الإدارة. SDK هو للقراءة فقط.
- الحقول المخصصة تأتي من AttributesSets. أمثلة: كتلة تذييل (حقوق الطبع والنشر، روابط اجتماعية، معلومات الاتصال)، لافتة بطل (عنوان، CTA، صورة خلفية)، شهادة (مؤلف، صورة، اقتباس، تقييم).
- الكتل مقابل الصفحات. الصفحة هي وثيقة مكتفية ذاتيًا مع عنوان URL (مثل
/about) تم إنشاؤها في وحدة الصفحات؛ الكتلة هي مكون قابل لإعادة الاستخدام تقوم بإدراجه في الصفحات.
📊 جدول مرجعي سريع - الطرق الشائعة
| الطريقة | ماذا تفعل | متى تستخدم |
|---|---|---|
| getBlocks() | الحصول على جميع الكتل (مقيدة، مصفاة) | قائمة بجميع الكتل المتاحة |
| getBlockByMarker() | الحصول على كتلة بواسطة العلامة | استرجاع كتلة معينة في الكود |
| searchBlock() | البحث عن الكتل | استرجاع الكتل |
| getFrequentlyOrderedProducts() | المنتجات التي تم طلبها بشكل متكرر | "غالبًا ما يتم طلبها معًا" |
| getCartComplement() | "أكمل سلتك" حسب سياق السلة | البيع المتقاطع من السلة |
| getCartComplementByProductIds() | "أكمل سلتك" حسب معرفات المنتجات | البيع المتقاطع للمنتجات المعطاة |
| getCartSimilar() | "مماثل للسلة" حسب سياق السلة | بدائل لعناصر السلة |
| getCartSimilarByProductIds() | "مماثل للسلة" حسب معرفات المنتجات | بدائل للمنتجات المعطاة |
| getWishlistSimilar() | "مماثل لقائمة الرغبات" حسب قائمة الرغبات | بدائل لعناصر قائمة الرغبات |
| getWishlistSimilarByProductIds() | "مماثل لقائمة الرغبات" حسب معرفات المنتجات | بدائل للمنتجات المعطاة |
| getPersonalRecommendations() | التوصيات الشخصية | تغذية المنتجات المخصصة |
| getRecentlyViewed() | المنتجات التي تم مشاهدتها مؤخرًا | ويدجت "تم مشاهدته مؤخرًا" |
| getRepeatPurchase() | المنتجات للشراء المتكرر | ويدجت "اشترِ مرة أخرى" |
| getTrending() | المنتجات الرائجة | ويدجت "رائج الآن" |
| getSlides() | شجرة شرائح كتلة المنزلق | عرض منزلق/دوار |
🧩 أنواع الكتل
تحدد type الكتلة (نوع BlockType) ما تقوم بعرضه. بالإضافة إلى الأنواع الأساسية (common_block, product_block, similar_products_block, form, وغيرها)، الأنواع التالية من كتل المنتجات والتخصيص متاحة:
| نوع الكتلة | الطريقة |
|---|---|
frequently_ordered_block | getFrequentlyOrderedProducts() |
trending_block | getTrending() |
recently_viewed_block | getRecentlyViewed() |
repeat_purchase_block | getRepeatPurchase() |
slider_block | getSlides() |
personal_recommendations_block | getPersonalRecommendations() |
cart_complement_block | getCartComplement() / getCartComplementByProductIds() |
cart_similar_block | getCartSimilar() / getCartSimilarByProductIds() |
wishlist_similar_block | getWishlistSimilar() / getWishlistSimilarByProductIds() |
تُدار كتل التخصيص (التي تم مشاهدتها مؤخرًا، الشراء المتكرر، التوصيات الشخصية، السلة/قائمة الرغبات) بواسطة نشاط المستخدم المتعقب وتعمل لكل من المستخدمين المصرح لهم والضيوف (انظر وضع الضيف).
تثبيت السعر (signPrice)
تقبل طرق كتل المنتجات والتوصيات (getCartSimilar, getRecentlyViewed, getTrending, getPersonalRecommendations, getRepeatPurchase, getCartComplement, getFrequentlyOrderedProducts, …) وسيطًا اختياريًا signPrice. يأخذ علامة تخزين الطلب ويطلب من الخادم تثبيت أسعار المنتجات المسترجعة لفترة محدودة، بحيث يكون السعر الذي يراه العميل في ويدجت التوصية هو السعر الذي يدفعه عند الخروج.
signPrice— نوعstringعلامة تخزين الطلب لتثبيت السعر. إذا تم تعيين المعامل، يتم تثبيت السعر لفترة معينة.
- في طرق التوصية، يكون
signPriceهو آخر معامل موضعي (بعدlangCode). - في المتغيرات
…ByProductIds(getCartSimilarByProductIds,getCartComplementByProductIds, …) هو حقل منbodyالطلب (body.signPrice).
كل منتج مسترجع يحمل بعد ذلك رمز signedPrice الذي يشفر السعر المثبت:
const products = await Blocks.getCartSimilar("cart_similar_block", "en_US", "orders");
const signedPrice = products[0].signedPrice;
➡️ أعد استخدام هذا الرمز عند إنشاء الطلب — انظر قسم سعر المنتج المثبت (signedPrice) في وحدة الطلبات. يوجد نفس معامل تثبيت السعر أيضًا في وحدة المنتجات (في userQuery.signPrice).
❓ الأسئلة الشائعة (FAQ)
ما الفرق بين الكتل والصفحات؟
- الصفحات/صفحات المنتجات — صفحات مكتفية ذاتيًا مع عناوين URL (مثل
/about) تم إنشاؤها في وحدة الصفحات، والتي تضيف إليها كتل ومكونات أخرى. - الكتل — مكونات قابلة لإعادة الاستخدام تُدرج في الصفحات (مثل تذييل).
فكر في الصفحة كوثيقة كاملة والكتلة كفقرة تعيد استخدامها عبر الوثائق.
كيف يمكنني تحديث محتوى كتلة؟
قم بتحريرها في لوحة إدارة OneEntry (قسم الكتل). يتم تحديث جميع الصفحات التي تستخدم تلك الكتلة تلقائيًا.
هل يجب أن أنشئ العديد من الكتل الصغيرة أم عددًا قليلاً من الكتل الكبيرة؟
يفضل العديد من الكتل الصغيرة والمركزة (مثل header_logo, footer_social_links) على كتلة كبيرة واحدة entire_page_layout — الكتل الصغيرة أسهل في إعادة الاستخدام والصيانة.
كيف يمكنني إظهار/إخفاء الكتل بشكل شرطي؟
تحقق من حقل isVisible في الكتلة المسترجعة.
كيف يمكنني التعامل مع الكتل المفقودة بشكل سلس؟
قم بلف الاسترجاع في try/catch وقم بعرض بديل عندما لا يتم العثور على كتلة.
🎓 أفضل الممارسات
- أنشئ كتل صغيرة ومركزة (مسؤولية واحدة).
- استخدم علامات وصفية (
global_footer، وليسblock1)؛ بالأحرف الصغيرة مع شرطات سفلية. - قم بالإشارة إلى الكتل بواسطة العلامة في الكود — العلامات لا تتغير أبدًا.
- قم بتخزين الكتل في الذاكرة — فهي تتغير نادرًا.
- تعامل مع الكتل المفقودة بشكل سلس (try/catch).
🔗 الوثائق ذات الصلة
- وحدة الصفحات - إدارة الصفحات التي تستخدم الكتل
- وحدة AttributesSets - تعريف سمات الكتل
- وحدة المنتجات - استخدام الكتل في صفحات المنتجات
- وحدة نشاط المستخدم - تدفع كتل التخصيص