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. اترك كلاهما للحصول على كل مجموعة بالكامل - انظر وضع التعمق.