Aller au contenu principal

globalSearch

Recherche publique à travers les titres et les valeurs d'attribut des enregistrements visibles.

Description

Cette méthode recherche les noms et les valeurs d'attribut des enregistrements à travers les types d'entités. Elle renvoie une Promesse qui se résout en un objet IGlobalSearchResponse - la requête pour laquelle elle a été exécutée, plus les enregistrements trouvés regroupés par type d'entité, chaque élément portant le contexte de la manière dont il a été trouvé.

Recherche.globalSearch(

query*, types, visibility, offset, limit

);

Schéma des paramètres

Schéma

query(obligatoire) : string
Requête de recherche.
exemple : "hiver"

types : TGlobalSearchEntityType[]
Types d'entités à rechercher, envoyés séparés par des virgules. Recherche tous les types lorsqu'oubliés.
exemple :

["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'
Filtre de visibilité des enregistrements recherchés. Par défaut : "tous"
exemple : "visible"

offset : number
Décalage du mode drilldown. À passer uniquement avec un type accessible unique dans types.
exemple : 0

limit : number
Taille de page du mode drilldown. À passer uniquement avec un type accessible unique dans types, sinon l'API répond 400 "Le mode drilldown (limit/offset) nécessite exactement un type accessible dans types". Sans cela, chaque groupe est retourné en entier.
exemple : 20

Exemples

Exemple minimal

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

Exemple avec des attributs

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

Rendu des groupes

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);
});
});

Exemple de réponse

{
"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
}
]
}

Schéma de réponse

Schéma : IGlobalSearchResponse

query : string
La requête pour laquelle les résultats ont été produits.
exemple : "hiver"

groups : IGlobalSearchGroup[]
Enregistrements trouvés regroupés par type d'entité.

groups.type : TGlobalSearchEntityType
Type d'entité du groupe.
exemple : "products"

groups.items : IGlobalSearchItem[]
Enregistrements trouvés dans ce type d'entité.

groups.items.type : TGlobalSearchEntityType
Type d'entité de l'enregistrement trouvé.
exemple : "products"

groups.items.id : number | string
ID de l'entité ; une chaîne pour les workflows et les attributs.
exemple : 12345

groups.items.title : string
Titre d'affichage ; absent lorsque l'enregistrement n'a pas de nom propre (commandes, utilisateurs sans connexion).
exemple : "Veste d'hiver"

groups.items.identifier : string
Identifiant machine (marqueur) de l'enregistrement.
exemple : "veste_d_hiver"

groups.items.subtitle : string
Ligne secondaire (url, stockage, nœud).
exemple : "catalogue/hiver"

groups.items.matchKind : TGlobalSearchMatchKind
Comment l'enregistrement a correspondu à la requête.
exemple : "title"

groups.items.matchedField : TGlobalSearchMatchedField
Champ concret qui a correspondu à la requête.
exemple : "title"

groups.items.matchedAttribute : Record<string, unknown>
Attribut dans lequel la correspondance a eu lieu.

groups.items.fragment : string
Contexte en texte brut autour de la correspondance, sans balisage.
exemple : "veste d'hiver chaude"

groups.items.langCode : string
Code de langue de la valeur correspondante.
exemple : "fr_FR"

groups.items.isVisible : boolean
Visibilité de l'enregistrement trouvé.
exemple : true

groups.items.parent : Record<string, unknown>
Enregistrement parent pour les entités sans leur propre page (diapositives vers bloc, commandes vers stockage).

groups.items.attributeSetId : number
ID de l'ensemble d'attributs propriétaire ; uniquement pour type=attributes.
exemple : 12

groups.hasMore : boolean
Indique si d'autres enregistrements de ce type sont disponibles au-delà de la page demandée.
exemple : false

ℹ️ offset et limit nécessitent exactement un type accessible dans types ; toute autre combinaison répond 400. Omettez les deux pour obtenir chaque groupe en entier - voir Mode drilldown.