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] Problème d'utilisation d'un template operator de mélange aléatoire de tableau


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 73
    Par défaut [eZ Publish] Problème d'utilisation d'un template operator de mélange aléatoire de tableau
    Bonjour,
    j'ai créé un template operator , mon premier en fait , pour pouvoir trier les éléments d'un tableau de manière aléatoire mais cela ne semble pas fonctionner. je vous présente le code que j'ai développé pour mon fichier getshuffle.php
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    <?php
    class getShuffle
    {
       // Constructeur
       function getShuffle() {
           $this->Operators = array('melange');
       }
     
       // Retoune la liste des operateurs dans la classe
       function &operatorList() {
          return $this->Operators;
       }
     
       function namedParameterPerOperator() {
          return true;
       }
     
       function namedParameterList() {
          return array('melange' => array());
       }
     
       function modify( $tpl, $operatorName, $operatorParameters, $rootNammespace, $currentNamespace, $operatorValue, $namedParameters ) {
          switch( $operatorName ) {
             case 'melange':
                $operatorValue = $this->melange($operatorValue);
                break;
          }
       }
     
       function melange($tableau) {
          $val = array();
          $keys = array_keys($tableau);
          shuffle($keys);
          foreach($keys as $key) $val[] = $tableau[$key];
          return $val;
       }
    }
    ?>
    Le code semble bien être pris en compte par ez publish car en y laissant des erreurs il me les affiche à l'écran.
    pour être plus précis je vous montre aussi les contenus de mes fichiers extensions/mon_extension/autoloads/eztemplateautoload.php et extension/mon_extension/settings/site.ini.append.php

    eztemplateautoload.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    // Operator autoloading
     
    $eZTemplateOperatorArray = array();
     
    $eZTemplateOperatorArray[] = array(
            'script' => 'extension/mon_extension/autoloads/getshuffle.php',
            'class' => 'getShuffle',
            'operator_names' => array( 'melange' )
    );
    ?>
    site.ini
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [TemplateSettings]
    ExtensionAutoloadPath[]=mon_extension
    Et voici comment j'appelle ma fonction dans la page correspondante
    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
     
    {set-block scope=root variable=cache_ttl}0{/set-block}  
    	    {def $max=fetch('content', 'tree_count',
    			     hash('parent_node_id',$node.parent_node_id,
    			     class_filter_type, include,
    			     class_filter_array, array('livre_collection','livre_serie')))
     
    		 $ouvrages=fetch('content', 'tree',
    				  hash('parent_node_id', $node.parent_node_id,
    				  class_filter_type, include,
    				  class_filter_array, array('livre_collection','livre_serie'),
    				  limit,$max))
    	    }
     
         {foreach $ouvrages as $index => $ouvrage}
          {if $ouvrage.node_id|eq($node.node_id)}
    	{set $ouvrages=$ouvrages|remove($index}
          {/if}
         {/foreach}
         {set $ouvrages=$ouvrages|melange()}
     
         {node_view_gui view=random_ouvrages content_node=$ouvrages}
    Avez-vous une idée quelle erreur j'ai pu faire dans mon code ou mon appel de ma fonction ?

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 73
    Par défaut
    Problème en partie résolu car j'ai trouvé cette extension qui comprend une fonction Shuffle qui fonctionne très bien : Swark for eZ Publish 4.
    Mais bon, j'aimerais bien savoir pourquoi ma fonction n'a pas fonctionné

  3. #3
    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,

    Je sais pas si c'est ça mais il te manque un parenthèse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {set $ouvrages=$ouvrages|remove($index}

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 73
    Par défaut
    Je viens juste de le corriger , encore une erreur d'inattention
    Mais ça n'avait aucune incidence sur le code de tri aléatoire

  5. #5
    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
    Si tu fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function modify( $tpl, $operatorName, $operatorParameters, $rootNammespace, $currentNamespace, $operatorValue, $namedParameters ) {
          switch( $operatorName ) {
             case 'melange':
                $operatorValue = "Ca marche !!!";
                break;
          }
       }
    Est-ce que ça affiche bien "Ca marche !!!" dans ton template ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 73
    Par défaut
    Non ça m'affiche absolument rien du tout donc je suppose que ma fonction n'a pas été prise du tout en compte.

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 73
    Par défaut
    C'est bon ma fonction fonctionne !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    &$tpl, &$operatorName, &$operatorParameters, &$rootNammespace, &$currentNamespace, &$operatorValue, &$namedParameters
    J'avais oublié de mettre les & devant les champs de ma fonction

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 24/09/2010, 15h41
  2. [eZ Publish] Problème template avec fetch et related_objects
    Par Vinestro dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 04/08/2010, 11h21
  3. [eZ Publish] Problèmes : Internal Server Error et Affichage des images et du template
    Par Fosher dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 19/05/2010, 17h12
  4. [eZ Publish] problème de templating d'une nouvelle classe
    Par leemazong dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 22/02/2010, 10h03
  5. [eZ Publish] Problème de Template
    Par yamatoshi dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 17/10/2008, 03h08

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