IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

[eZ Publish] créer son propre drill down avec ezfind


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 113
    Par défaut [eZ Publish] créer son propre drill down avec ezfind
    bonjours,

    j'ai réussis à installer ezfind et à indexer mes contenu.

    et je souhaiterai faire des catégories avec des drill down spécifique

    mais je ne sais pas du tout comment m'y prendre

    voici un exemple de drill down que j'ai trouvé
    http://www.herault-tourisme.com/hebe...iques-1-1.html

    pour commencer petit j'ai fait une classe hôtel et et je veux trier sur le critère nombre d'étoiles

    je veux donc avoir un drill down sous cette forme
    Hotel :
    5 étoiles (1)
    4 étoiles (9)
    3 étoiles (69)
    2 étoiles (144)
    1 étoile (15)
    Sans étoile (14)


    par quoi dois-je commencer ?

    en vous remerciant

  2. #2
    Membre émérite Avatar de sboyer
    Homme Profil pro
    Développeur PHP chez OpenWide
    Inscrit en
    Février 2010
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur PHP chez OpenWide
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 348
    Par défaut
    Salut,

    Ce que tu veux faire se réalise en mettant en place une recherche à facettes.

    Personnellement j'ai procédé comme cela :

    J'ai ajouté mes facettes personnalisées dans ezfind.ini :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    [searchFacets]
    Facets[]
    Facets[]=facet_1
    Facets[]=facet_2
    Facets[]=facet_3
     
    [facet_1]
    Field=ma_classe/mon_attribut1
    Name=Nom à afficher 1
    Limit=10
    SolrField=attr_identifiantdemonattribut_typeindexédanssolr
     
    [facet_2]
    Field=ma_classe/mon_attribut2
    Name=Nom à afficher 2
    Limit=10
    SolrField=attr_identifiantdemonattribut_typeindexédanssolr
     
    [facet_3]
    Field=ma_classe/mon_attribut3
    Name=Nom à afficher 3
    Limit=10
    SolrField=attr_identifiantdemonattribut_typeindexédanssolr
    Puis j'ai surchargé le template content/search.tpl pour prendre en compte ces nouveaux paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    {def $filterParameters = fetch( 'ezfind', 'filterParameters' )
             $defaultSearchFacets = array()}
    	{foreach ezini( 'searchFacets', 'Facets', 'ezfind.ini' ) as $facet}
    		{set $defaultSearchFacets=$defaultSearchFacets|append(
    				hash(  	'field', ezini( concat('facet_',$facet), 'Field', 'ezfind.ini' ),
      						'name',  ezini( concat('facet_',$facet), 'Name', 'ezfind.ini' ),
      						'limit', ezini( concat('facet_',$facet), 'Limit', 'ezfind.ini' ) )
    		)}
    	{/foreach}
    Pour afficher les facettes actives :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <ul>
    {foreach $defaultSearchFacets as $key => $defaultFacet}
    	              {if array_keys( $activeFacetParameters )|contains( concat( $defaultFacet['field'], ':', $defaultFacet['name']  ) )}
    	                  {def $facetData=$search_extras.facet_fields.$key}
    	                  {foreach $facetData.nameList as $key2 => $facetName}                
    	                      {if eq( $activeFacetParameters[concat( $defaultFacet['field'], ':', $defaultFacet['name'] )], $facetName )}
    	                          {def $activeFacetsCount=sum( $key, 1 )}
    	                          {def $suffix=$uriSuffix|explode( concat( '&filter[]=', $facetData.queryLimit[$key2]|wash ) )|implode( '' )|explode( concat( '&activeFacets[', $defaultFacet['field'], ':', $defaultFacet['name'], ']=', $facetName ) )|implode( '' )}
    				              <li>
    				                  <a class="filter_selected" href={concat( $baseURI, $suffix )|ezurl}>{$defaultFacet['name']} &raquo; {$facetName}</a>
    				              </li>                        
    	                      {/if}
    	                  {/foreach}
    	              {/if}          
    	          {/foreach}
    </ul>
    Pour afficher les autres facettes disponibles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    {def $facetData=array()}
    	          <ul id="facet-list">
    	          {foreach $defaultSearchFacets as $key => $defaultFacet}
    		          {if array_keys( $activeFacetParameters )|contains( concat( $defaultFacet['field'], ':', $defaultFacet['name']  ) )|not}
    		          <li>
    		            {set $facetData=$search_extras.facet_fields.$key}
    		              <div class="facet_name"><strong>{$defaultFacet['name']}</strong></div>
    		              <ul>
    		                {foreach $facetData.nameList as $key2 => $facetName}
    			                {if ne( $key2, '' )}
    			                <li>
    			                    <a href={concat( $baseURI, '&filter[]=', $facetData.queryLimit[$key2]|wash, '&activeFacets[', $defaultFacet['field'], ':', $defaultFacet['name'], ']=', $facetName, $uriSuffix )|ezurl}>                
    			                    {$facetName}</a> ({$facetData.countList[$key2]})</a>
    			                </li>
    			                {/if}
    		                {/foreach}
    		              </ul>
    		          </li>
    		          {/if}
    	          {/foreach}
    	          {undef $facetData}
    C'est assez compliqué à prendre en main...
    Bon courage

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 113
    Par défaut
    merci,

    je vais donc commencer par ça

    par contre pour juste pour bien comprendre
    tu surcharges content/search.tpl dans ton design c'est bien ça ?
    donc c'est la page search que tu affiche toujours ?

    le truc c'est que je veux pouvoir faire plusieurs catégories avec chacune un drill down spécifique

    je suppose que je doit donc faire plusieurs templates ?
    et ces templates doivent se trouver dans extension/ezfind/design/<mon design>/override/templates/full/ nan ?

    j'ai déjà essayé comme ça en voulant modifier la requette ezfind
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    {set $search=fetch( ezfind,search,
                            hash( 'query', $search_text,
                                  'offset', $view_parameters.offset,
                                  'limit', $page_limit,
                                  'sort_by', hash( 'score', 'desc' ),
                                  'facet', $defaultSearchFacets,
                                  'filter', $filterParameters,
                                  'publish_date', $dateFilter,
                                  'spell_check', array( true() )
                                 ))}
    en la remplaçant par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    {set $search=fetch( ezfind,search,
                            hash( 'query', '',
                                  'parent_node_id', 228,
                                  'offset', $view_parameters.offset,
                                  'limit', $page_limit,
                                  'sort_by', hash( 'score', 'desc' ),
                                  'facet', $defaultSearchFacets,
                                  'filter', $filterParameters,
                                  'publish_date', $dateFilter,
                                  'spell_check', array( true() )
                                 ))}
    mais je n'ai aucun résultat

  4. #4
    Membre émérite Avatar de sboyer
    Homme Profil pro
    Développeur PHP chez OpenWide
    Inscrit en
    Février 2010
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur PHP chez OpenWide
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 348
    Par défaut
    Citation Envoyé par ricozor Voir le message
    tu surcharges content/search.tpl dans ton design c'est bien ça ?
    donc c'est la page search que tu affiche toujours ?
    Oui c'est bien ça

    Citation Envoyé par ricozor Voir le message
    je suppose que je doit donc faire plusieurs templates ?
    et ces templates doivent se trouver dans extension/ezfind/design/<mon design>/override/templates/full/ nan ?
    Non surtout pas, tous tes templates doivent se trouver dans tes extensions persos. Il ne faut jamais modifier ou ajouter un seul fichier dans les extensions existantes.

    Citation Envoyé par ricozor Voir le message
    mais je n'ai aucun résultat
    As-tu bien démarré ton serveur solr et indexé le contenu ?
    Regarde les instructions d'installation de ezfind

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 113
    Par défaut
    Citation Envoyé par sboyer Voir le message
    Oui c'est bien ça
    bon alors je vais déjà surcharger content/search.tpl dans mon design perso et voir ce que ça donne.

    Citation Envoyé par sboyer Voir le message
    As-tu bien démarré ton serveur solr et indexé le contenu ?
    Regarde les instructions d'installation de ezfind
    Solr est bien lancé et mes éléments sont bien indexé, j'ai des résultats quand je fait un search full texte, et le drill down opar defaut marche

    Citation Envoyé par sboyer Voir le message
    Non surtout pas, tous tes templates doivent se trouver dans tes extensions persos. Il ne faut jamais modifier ou ajouter un seul fichier dans les extensions existantes.
    ce que souhaite faire vraiment c'est un template 'catégorie' qui contient un drill down ce n'est donc pas content/search que je doit surcharger mais je doit faire un autre template qui fonctionne de la même manière que content/search.tpl nan ? c'est pour ça que je pensait que je devait le créer dans extension/ezfind/design/<mon design>/override/templates/full/ mais donc il faut que que je le fasse dans extension/<mon design>/design/ezwebin/override/templates/full/ (<mon design> est une surcharge de ezwebin)

    tu en penses quoi ?

  6. #6
    Membre émérite Avatar de sboyer
    Homme Profil pro
    Développeur PHP chez OpenWide
    Inscrit en
    Février 2010
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur PHP chez OpenWide
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 348
    Par défaut
    Ce que tu peux faire dans ce cas c'est créer un template parts/drill_down.tpl et faire un include de ce template dans ta surcharge de content/search.tpl

    Pour l'emplacement de tes templates :
    extension/<ton_extension>/design/<ton_design>/templates/content/search.tpl

    et
    extension/<ton_extension>/design/<ton_design>/templates/parts/drill_down.tpl

  7. #7
    Membre émérite Avatar de sboyer
    Homme Profil pro
    Développeur PHP chez OpenWide
    Inscrit en
    Février 2010
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur PHP chez OpenWide
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 348
    Par défaut
    Citation Envoyé par sboyer Voir le message
    Il ne faut jamais modifier ou ajouter un seul fichier dans les extensions existantes.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 113
    Par défaut
    Ok j'ai bien compris que je ne modifier pas mes extension existantes.

    je fais donc bien mes templates dans mon extension de design

    mais est-ce que je peut faire mon template de drill down dans full soit

    extension/<mon design>/design/ezwebin/override/templates/full/drill_down.tpl ?

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/10/2015, 19h34
  2. Réponses: 14
    Dernier message: 15/01/2014, 15h37
  3. Créer son propre système de fichiers
    Par L'immortel dans le forum Programmation d'OS
    Réponses: 15
    Dernier message: 15/12/2013, 22h16
  4. Créer son propre LayoutManager
    Par tomburn dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 17/03/2005, 16h15
  5. créer son propre protocole
    Par matthew_a_peri dans le forum Développement
    Réponses: 11
    Dernier message: 04/03/2005, 14h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo