Prestashop Advanced Sitemap: v1.5 et sitemaps multiples

Posté par seiyar81 le 26 février 2014 | Laisser un commentaire (21)

Une petite news rapide pour informer de la nouvelle version du module qui passe en 1.5 avec au menu une fonctionnalité demandée depuis quelques temps :

  • Génération de sitemaps multiples
  • Compression gzip des sitemaps générés
  • Sauvegarde des paramètres sans regénérer le sitemap
  • Stabilité du code

Cette fonctionnalité permet d’éviter un refus du sitemap par Google si le nombre d’URLs dépasse 50 000 ou si la taille est supérieure à 50 Mo.
Le module fonctionne maintenant ainsi :

  • vous définissez une limite à ne pas dépasser par sitemap (10 000 par défaut, car il faut tenir compte des images)
  • une fois cette limite atteinte lors de la génération, le module sauvegarde un premier fichier et passe au second
  • et ainsi de suite jusqu’à avoir traité toutes les URLs
  • une fois la génération terminée, le module génère un Sitemap Index qui regroupe tous les sitemaps générés et le transmet aux moteurs de recherche
  • si la limite définie n’est pas atteinte, un fichier sitemap simple est généré.

Vous pouvez ensuite choisir de compresser ou non tous les fichiers générés.

La prochaine étape sera maintenant de proposer une génération par langage !

Tout ça se récupère sur GitHub.


MAJ v1.5.1 : version mineure pour corriger 2 petits bugs
– Ajout forcé d’un ‘/’ à la fin des URLs personnalisées (si non présent) pour éviter les URLs malformées
– Correction de la génération du sitemap XML pour la validation XSD

La prochaine version vera l’ajout des fournisseurs/marques et éventuellement la sélection du type d’image à ajouter et/ou la possibilité de ne pas les ajouter au sitemap.

Catégorie: Développement Web, Internet, PHP | Laisser un commentaire (21)

Des div toujours visibles avec Sticky, un plugin jQuery

Posté par seiyar81 le 5 juillet 2013 | Laisser un commentaire (1)
Sticky

Lorsqu’on développe des sites ou applications Web, on peut être amenés à vouloir garder une partie de la page toujours visible lorsqu’on scroll.
Que ce soit pour un effet esthétique ou pour une question de praticité comme avec une barre d’actions ou un menu de navigation par exemple.

Plusieurs manières existent pour réaliser cet effet, mais je parlerai ici d’un plugin jQuery : Sticky.

Ci-dessous un petit exemple d’un header toujours visible :

  Sticky
  
  
  
  

  
  

Une première div qui va disparaître.

Une deuxième div qui va disparaître.

Une troisième div qui va disparaître.

Nous centrons donc notre header en CSS et nous indiquons ensuite à Sticky via la propriété center:true que l’on souhaite qu’il reste centré une fois collé en haut de la page.

Sticky est léger et configurable via 5 options :

  • topSpacing: Pixels entre le haut de la page et le haut de l’élément
  • bottomSpacing: Pixels entre le bas de la page et le bas de l’élément
  • className: Classe CSS ajouté à l’élément et à son wrapper quand il est collé
  • wrapperClassName: Classe CSS ajouté au wrapper
  • getWidthFrom: Sélecteur d’un élément utilisé pour régler la largeur fixe de l’élément collé

Libre à vous d’utiliser le CSS que vous souhaitez pour placer/dessiner votre élément.

Pour récupérer le plugin ou y contribuer, direction Github.

Catégorie: Développement Web, Javascript | Laisser un commentaire (1)

Réaliser un scheduler AJAX avec jQuery et PeriodicalUpdater

Posté par seiyar81 le 21 mai 2013 | Laisser un commentaire (0)
jQuery

jQuery est un outil formidable.
Il fait non seulement partie des meilleurs frameworks du moment, je dis bien des car nombreux sont ceux qui rivalisent en terme de fonctionnalités, légèreté, et simplicité d’utilisation : ExtJS, Prototype, Mootools ou encore YUI pour ne pas les citer.

Mais sa véritable force, comme j’ai déjà pu l’évoquer avec le génial DataTables, réside dans la variété de plugins disponibles.

Nous nous intéressons ici à un plugin, qui est en fait un portage d’une fonctionnalité de Prototype vers jQuery, j’ai nommé PeriodicalUpdater.

Petit exemple concret : qui n’a jamais eu à mettre en place un rafraîchissement automatique du contenu d’une page Web à base de setInterval ? C’est fastidieux, pas pratique à écrire et s’écarte un peu de la logique d’utilisation d’un framework.

PeriodicalUpdater nous permet via une méthode unique de mettre en place une requête AJAX périodique, facilement paramétrable.

Rien de tel qu’un peu de code pour tout comprendre, la méthode prend trois paramètres : l’URL à interroger, les paramètres de la requête, une fonction callback.

Les paramètres ne sont ni plus ni moins que les paramètres normalement passés à une requête $.ajax classique avec en plus ceux de PeriodicalUpdater.

$('#myDiv').PeriodicalUpdater('/news/list/', 
{
        method: 'get',          // méthode; get ou post
        data: {},               // tableau de valeurs passées à l'URL - e.g. {nom: "Yriase", msg: "Hello World"}
        minTimeout: 1000,       // valeur de départ du timeout en millisecondes
        maxTimeout: 8000,       // valeur maximum du timeout en millisecondes
        multiplier: 2,          // valeur pour incrémenter le timeout si la réponse n'a pas changé (jusqu'à maxTimeout)
        type: 'text',           // type de la réponse : text, xml, json, etc.  Voir $.ajax
        maxCalls: 0,            // nombre maximum d'appels. 0 = pas de limite.
        autoStop: 0,            // arrête automatiquement la requête après plusieurs retours renvoyant les mêmes données. 0 = désactivé.
        autoStopCallback: function() { ... } // Callback a exécuter quand l'autoStop est déclenché
        cookie: {},             // configuration du cookie pour stocker le timeout
        verbose: 0              // niveau de verbosité des logs : 0=aucuns, 1=moyen, 2=tout 
}
, function(remoteData, success, xhr, handle) { 
    // this référence $('#myDiv') 
});

Il est également possible d’appeler librement la méthode sans l’attacher à un élément :

$.PeriodicalUpdater('/news/list/', {}, function(remoteData, success, xhr, handle) {});

Et voilà en quelques lignes vous avez paramétré votre scheduler 😉

Pour récupérer le plugin direction GitHub.

Catégorie: Développement Web, Internet, Javascript | Laisser un commentaire (0)

PHPUi : Du nouveau et des examples

Posté par seiyar81 le 26 février 2013 | Laisser un commentaire (0)

PHPUi Logo

Beaucoup de changements pour PHPUi, on avance petit à petit vers une librairie utilisable pour développer et créer ses interfaces utilisateurs.

La réécriture de la librairie avec les namespaces de PHP5 a apporté entre autres une meilleur abstraction et modularité des fonctionnalités.

Le support de jQuery ( et de jQuery Ui ) est toujours d’actualité mais est complété par le support de Javascript basique.
Cela nous permet de mieux intégrer dans nos pages des fonctionnalités simples mais nécessaires telles que l’ouverture de popup ou le clic sur un bouton sans avoir besoin d’un framework complet.

Un petit exemple :

	$button = new Xhtml\Element('button', array('onClick' => PHPUi::getInstance()->js()->console->log('[OnClick] Hello world !')), true, 'Click me !');
	$button->onMouseOver = $button->js()->console->log('[MouseOver] Hello world !');
	echo $button;

        $button2 = new Xhtml\Element('button', array('onClick' => PHPUi::getInstance()->js()->window->open("http://localhost/phpui/examples/","PHPUi Examples","menubar=1,resizable=1,width=350,height=250")), true, 'Open pop-up !');
        echo $button2;

Comme vous pouvez le voir, le chaînage des appels Javascript est pleinement supporté.

Cette fonctionnalité devrait également faire son apparition dans l’adapter jQuery en plus du support des spécificités de ce dernier.
A l’heure actuelle vous pouvez déjà réaliser ceci :

        $gs = PHPUi::getInstance()->gs(array('columns' => 16));
        $gs->addChild(new Xhtml\Element('h2', null, true, '16 Column Grid - 960Gs'));
        $gs->jquery()->click( $gs->js()->console->log("Hello from the console") ); 
        $gs->jquery()->click( 
            $gs->jquery()->ajax( 
                array( 
                    'url' => 'ajax.php', 
                    'type' => 'POST', 
                    'data' => array( 'html' => $jsonString ), 
                    'dataType' => 'html',
                    'success' => 'function(data) { $(".container_16").append(data); }' 
                ) 
            ) 
        );
        echo $gs;

Le chaînage des appels Javascript dans un appel jQuery est actuellement supporté.

Pour plus d’exemples ou d’informations voyez le GitHub du projet.

Catégorie: Développement Web, Javascript, PHP | Laisser un commentaire (0)