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

JavaScript Discussion :

Créer un filtre en javascript


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2015
    Messages : 6
    Points : 8
    Points
    8
    Par défaut Créer un filtre en javascript
    Bonjour,

    Je possède des produits (array) et je cherche à créer un filtre par catégorie. Lorsque je clique sur une catégorie, je souhaite que les produits correspondant à cette catégorie s'affichent.

    Code javascript
    Code javascript : 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
     
     
    $(document).ready(function() {
        var $contenu_div = $('#contenu div');
        var page = $('#nav li a:first').text();
     
        $('#nav li a').on('click', function() {
            var url = $(this).attr('href');
     
            var pageDemandee = $(this).text();
     
            if(pageDemandee != page) {
     
                page = pageDemandee;
     
                $.ajax({
                    url: url,
                    cache: false,
                    success: function(html) {
                        $contenu_div.hide().html(html).fadeIn();
                    }
                });
            }
            return false;
        });
    });

    Code PHP (controller) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
     
                $selected_category= (isset($_GET['selected_category']) && !empty($_GET['selected_category'])) ? htmlentities($_GET['selected_category']) : false;
     
                filtred_products = fn_get_product_filtred($selected_category);
     
                Registry::get('view')->assign('ajax_filtred_product',  $filtred_products);
     
     
     
            $contenu = Registry::get('view')->fetch('addons/product_filter/views/ajax_filter_products.tpl');
     
            echo $contenu;

    Ici, il faut bien comprendre que la méthode fetch retourne le code HTML de la vue. C'est l'echo qui affiche les données.

    Vue HTML avec smarty
    Code html : 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
     
     
           <div id="nav" class="addon-menu-item">
                         <li class="addon-menu-item active">
                             <a class="active" href="index.php?dispatch=products.filter&selected_category_id={$category.id}">
                                 <div class="ty-product-filters__switch ">
                                        <p>{__("All")|upper}</p>
                                 </div>
                             </a>
                         </li>
     
     
     
     
                         {foreach from=$product_filter_categories key='categories_key' item='category'}
                                <li class="">
                                    <a href="index.php?dispatch=products.filter&selected_category_id={$category.id}">
                                        <div class="ty-product-filters__switch">
                                               <p> {$category.name|upper} </p>
                                        </div>
                                    </a>
                                </li>
                         {/foreach}
                </div>
     
     
    <div id="contenu">
            <div>
                {if $ajax_filtred_product}
                      {include file="blocks/list_templates/products_list.tpl"
                        products=$ajax_filtred_product
                    }
               {/if}
            </div>
        </div>

    Ce code fonctionne. Par contre, le contenu entre les <div> dans la vue est remplacé par une string venant du controller (echo $contenu). Il faut savoir que j'ai plusieurs onglets qui appellent cette vue avec du javascript. Or, comme le <div id="contenu"> de la vue est remplacé par la string du controller, quand je change d'onglet, le contenu lié au code smarty ci-dessus n'est pas chargé (car le code smarty a été remplacé par la string du controller).

    Donc, je cherche à conserver le contenu dans la vue HTML. Pour ce faire, je dois faire un script javascript qui filtre les produits par catégorie (en gros remplacer le travail du controller PHP) et injecter l'array des produits filtrés dans la variable smarty ajax_filtred_product. Savez-vous comment effectuer ce script javascript qui trie les produits avec la catégorie sélectionnée sans passer par le controller ?

    Merci pour votre aide. Je précise qu'on peut utiliser jQuery.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    je ne suis pas sûr de tout comprendre. est ce qu'on peut voir le site ou alors une photo d'écran ?
    qu'est ce qui change dans la page quand on clique sur un onglet ?

Discussions similaires

  1. Créer des filtres de profile sur eclipse
    Par ouadii dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 03/10/2007, 13h53
  2. [POO] crééer un objet en javascript
    Par bulatovic dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/03/2007, 19h31
  3. Réponses: 2
    Dernier message: 07/11/2006, 15h30
  4. Créer un fichier en javascript
    Par Taz_8626 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 31/05/2006, 11h26
  5. créer un filtre
    Par cdbaloo dans le forum Access
    Réponses: 3
    Dernier message: 31/03/2006, 14h37

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