2 votes

Sitecore 6.4 + Lucene - Héritage de modèles

Après quelques heures à comprendre Lucene, j'ai abandonné. J'espère que vous pourrez m'aider.

Réglage de

Dans notre arbre Sitecore actuel, nous avons 2 niveaux d'héritage de modèles. (Disons Véhicule -> Voiture -> Formule 1 / Véhicule -> Bateau).

Ce que j'aurais besoin de récupérer à travers Lucene maintenant, c'est chaque ContentItem héritant de soit directement o indirectement à partir d'un certain modèle.

Par exemple :

  • Obtenir des véhicules -> retours : Véhicules "génériques", voitures, voitures de F1 et bateaux
  • Obtenir des voitures -> retours : Voitures, Voitures F1

Ce que je pensais, c'était utiliser le _templates dans Lucene, c'est-à-dire :
Obtenir des véhicules -> _templates contient Vehicle-template-guid. Obtenir des voitures -> _templates contient Car-template-guid.

Le problème

Le principal problème auquel je suis confronté est que les éléments de contenu de la catégorie Voiture de F1 -Le modèle contient sólo les voitures et la voiture F1 dans le _templates -et pas le "véhicule" générique.

J'interprète probablement mal le champ _templates, mais je me demande s'il existe d'autres options.


Configuration de Sitecore :

Articles de contenu :

  • sitecore
    • contenu
      • Accueil
        • Catégorie AC
          • Un enfant 1
          • Un enfant 1.1
          • Un enfant 2

Modèles (niveaux = héritage) :

  • Entité principale
    • Entité enfant 1
      • Entité enfant 1.1
    • Entité enfant 2
  • Catégorie

2voto

chiesa Points 186

Créez un nouvel indexeur qui hérite de Sitecore.Data.Indexing.Index, et surchargez la méthode AddFields comme ci-dessous :

protected override void AddFields(Item item, Document document)
{   
    // Add base fields
    base.AddFields(item, document);

    // Add all inherited templates id to a field 
    string TEMPLATE-PATH="get template path for this item here";
    document.Add(new Field("template-path", TEMPLATE-PATH, Field.Store.NO, Field.Index.TOKENIZED)); 
}

Vous pouvez ensuite effectuer une recherche à l'aide du champ "template-path".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X