Comment puis-je ajouter des mots-clés à SearchableText pour un type de contenu Dextérité?

StackOverflow https://stackoverflow.com/questions/8852132

  •  28-10-2019
  •  | 
  •  

Question

J'ai un site en cours d'exécution 4.1 qui a Plone un type de contenu personnalisé développé avec Dextérité 1.1. Mes auteurs de contenu peuvent ajouter des mots clés des pages de base en utilisant l'Plone onglet Catégorisation et utilisateurs trouvent avec succès ces pages si leur recherche en utilisant l'un des mots-clés.

Mes auteurs de contenu ont également produit des pages en utilisant un type de contenu personnalisé Dextérité j'ai développé. Cela a été défini à l'aide d'un schéma de système de fichiers basé sur Python. Si les utilisateurs recherchent des termes dans le titre et la description d'un type de contenu Dextérité ils reviennent les pages Dextérité dans les résultats de recherche. Si leur recherche en utilisant un terme de requête dans le champ des mots clés qu'ils obtiennent aucun résultat. Cependant, sous la forme de recherche avancée, ils peuvent trouver la page Dextérité si elles mettent en évidence la balise appropriée dans la liste des balises.

J'ai inspecté le contenu de l'index de recherche à l'aide de l'outil portal_catalog dans ZMI. Il semble mots clés sont ajoutés au champ SearchableText pour les types de contenu de base tels que la page mais pour mon Dextérité en fonction de type de contenu personnalisé qu'ils ne sont pas.

Dois-je besoin d'écrire du code pour insérer le contenu du champ de mots-clés dans l'index de SearchableText?

Était-ce utile?

La solution

Disons que votre type de contenu Dextérité outils IFoo, et les mots-clés attribut définis dans votre schéma est une liste de chaînes.

Vous définissez votre indexeur de cette façon:

from five import grok
from plone.indexer.decorator import indexer
from my.dexteritycontent.foo import IFoo

@indexer(IFoo)
def searchableIndexer(context):
    keywords = " ".join(context.keywords)
    return "%s %s %s" % (context.title, context.description, keywords)

grok.global_adapter(searchableIndexer, name="SearchableText")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top