انتقل إلى المحتوى الرئيسي

globalSearch

بحث عام عبر العناوين وقيم السمات للسجلات المرئية.

الوصف

تبحث هذه الطريقة في أسماء وقيم السمات للسجلات عبر أنواع الكيانات. تعيد Promise التي تحل إلى كائن IGlobalSearchResponse - الاستعلام الذي تم تشغيله من أجله، بالإضافة إلى السجلات التي تم العثور عليها مجمعة حسب نوع الكيان، حيث يحمل كل عنصر سياق كيفية تطابقه.

بحث.globalSearch(

query*, types, visibility, offset, limit

);

مخطط المعلمات

المخطط

query(required): string
استعلام البحث.
مثال: "شتاء"

types: TGlobalSearchEntityType[]
أنواع الكيانات للبحث فيها، تُرسل مفصولة بفواصل. يتم البحث في كل نوع عند الإغفال.
مثال:

["products"]

Enum: [ products, pages, blocks, slides, templates, discounts, user_groups, users, admins, menus, forms, attributes_sets, attributes, orders, workflows, events, subscriptions, collections ]

visibility: 'all' | 'visible' | 'hidden'
مرشح رؤية السجلات التي تم البحث فيها. الافتراضي: "الكل"
مثال: "مرئي"

offset: number
إزاحة وضع التعمق. مررها فقط مع نوع واحد قابل للوصول في types.
مثال: 0

limit: number
حجم صفحة وضع التعمق. مررها فقط مع نوع واحد قابل للوصول في types، وإلا فإن واجهة برمجة التطبيقات سترد 400 "وضع التعمق (limit/offset) يتطلب بالضبط نوعًا واحدًا قابلًا للوصول في types". بدونها، يتم إرجاع كل مجموعة بالكامل.
مثال: 20

أمثلة

مثال بسيط

const response = await Search.globalSearch('winter');

مثال مع السمات

// Drilldown: offset/limit are accepted only alongside exactly one type.
const response = await Search.globalSearch('winter', ['products'], 'visible', 0, 20);

عرض المجموعات

const { query, groups } = await Search.globalSearch('test');

groups.forEach((group) => {
console.log(`${group.type} (${group.items.length}${group.hasMore ? '+' : ''})`);

group.items.forEach((item) => {
// fragment is plain text — safe to highlight yourself
console.log(item.title ?? item.identifier, item.matchKind, item.fragment);
});
});

مثال على الاستجابة

{
"query": "test",
"groups": [
{
"type": "pages",
"items": [
{
"type": "pages",
"id": 50,
"title": "Test",
"subtitle": "test",
"matchKind": "exact",
"matchedField": "url",
"langCode": "en_US"
}
],
"hasMore": false
},
{
"type": "blocks",
"items": [
{
"type": "blocks",
"id": 4,
"title": "test",
"identifier": "test",
"matchKind": "exact",
"matchedField": "identifier",
"langCode": "en_US"
}
],
"hasMore": false
},
{
"type": "discounts",
"items": [
{
"type": "discounts",
"id": 1,
"title": "Example discount",
"identifier": "example_discount",
"matchKind": "attributeValue",
"matchedField": "attributeValue",
"matchedAttribute": {
"identifier": "example_discount",
"title": "example_discount"
},
"fragment": "test value",
"langCode": "en_US"
}
],
"hasMore": false
}
]
}

مخطط الاستجابة

المخطط: IGlobalSearchResponse

query: string
الاستعلام الذي تم إنتاج النتائج من أجله.
مثال: "شتاء"

groups: IGlobalSearchGroup[]
السجلات التي تم العثور عليها مجمعة حسب نوع الكيان.

groups.type: TGlobalSearchEntityType
نوع الكيان للمجموعة.
مثال: "منتجات"

groups.items: IGlobalSearchItem[]
السجلات التي تم العثور عليها ضمن هذا النوع من الكيانات.

groups.items.type: TGlobalSearchEntityType
نوع الكيان للسجل الذي تم العثور عليه.
مثال: "منتجات"

groups.items.id: number | string
معرف الكيان؛ سلسلة للعمليات والسمات.
مثال: 12345

groups.items.title: string
عنوان العرض؛ غائب عندما لا يكون للسجل اسم خاص به (الطلبات، المستخدمون بدون تسجيل دخول).
مثال: "سترة شتوية"

groups.items.identifier: string
معرف الآلة (علامة) للسجل.
مثال: "سترة_شتوية"

groups.items.subtitle: string
السطر الثانوي (رابط، تخزين، عقدة).
مثال: "كتالوج/شتاء"

groups.items.matchKind: TGlobalSearchMatchKind
كيف تطابق السجل الاستعلام.
مثال: "عنوان"

groups.items.matchedField: TGlobalSearchMatchedField
الحقل المحدد الذي تطابق مع الاستعلام.
مثال: "عنوان"

groups.items.matchedAttribute: Record<string, unknown>
السمة التي حدث فيها التطابق.

groups.items.fragment: string
سياق نص عادي حول التطابق، بدون تنسيق.
مثال: "سترة شتوية دافئة"

groups.items.langCode: string
رمز اللغة للقيمة المطابقة.
مثال: "en_US"

groups.items.isVisible: boolean
رؤية السجل الذي تم العثور عليه.
مثال: true

groups.items.parent: Record<string, unknown>
السجل المالك للكيانات التي ليس لها صفحة خاصة بها (الشرائح إلى الكتلة، الطلبات إلى التخزين).

groups.items.attributeSetId: number
معرف مجموعة السمات المالكة؛ فقط لنوع=سمات.
مثال: 12

groups.hasMore: boolean
ما إذا كانت هناك سجلات أخرى من هذا النوع متاحة بخلاف الصفحة المطلوبة.
مثال: false

ℹ️ offset و limit تتطلب بالضبط نوعًا واحدًا قابلًا للوصول في types؛ أي تركيبة أخرى سترد 400. اترك كلاهما للحصول على كل مجموعة بالكامل - انظر وضع التعمق.