AllEvents - AllEvents - AllEvents - A Joomla Component by Christophe Avonture http://allevents.avonture.be Thu, 28 Aug 2014 02:32:49 +0200 Joomla! - Open Source Content Management fr-fr FullCalendar - Évènements récurrents - Premium+ http://allevents.avonture.be/fr/fullcalendar/item/475-evenements-recurrents.html http://allevents.avonture.be/fr/fullcalendar/item/475-evenements-recurrents.html

Lors de la création d'un évènement depuis la vue FullCalendar (disponible uniquement dans l'offre Premium+), il vous est possible de préciser une récurrence : chaque jour, chaque semaine le lundi ou chaque mardi et jeudi, chaque 1er du mois, ... 

L'ajout se fait en cliquant sur le bouton "+" qui apparaît en haut de la page.

Dans l'exemple ci-dessous, une réunion d'une heure trente est prévue le Mardi 15 octobre 10h00 et elle se répétera dix fois.

{xtypo_warning}Attention : les évènements créés ne sont pas liés entre eux; il s'agira de dix évènements indépendants.  Si vous souhaitez p.ex. modifier le lieu de l'évènement une fois les occurences créées, il faudra modifier dix évènements.   Si vous utilisateurs doivent s'inscrire, ils devront le faire pour chaque occurence...{/xtypo_warning}

AllEvents - FullCalendar - Évènements récurrents

]]>
christophe@avonture.be (Christophe) FullCalendar Thu, 17 Oct 2013 06:59:53 +0200
JComments - Bug dans le lien généré vers la page de l'évènement http://allevents.avonture.be/fr/plugin-commentaires/item/474-jcomments-incorrect-url.html http://allevents.avonture.be/fr/plugin-commentaires/item/474-jcomments-incorrect-url.html

La version 2.5.4 de AllEvents corrige un bug rencontré avec les liens générés par le plug-in AllEvents - Commentaires pour JComments : depuis un module tel que "JComments latests" ou depuis la liste des commentaires JComments de votre administration, vous pourrez constater que le lien généré reprend une constante nommée _EventID.  Cette constante n'aurait pas dû apparaitre mais bien être remplacée par sa valeur qui est "ei".


Une url incorrecte étant : /index.php?option=com_allevents&task=display&view=event&layout=default&_EventId=725

Une url correcte étant : /index.php?option=com_allevents&task=display&view=event&layout=default&ei=725


La mise à jour 2.5.4 corrige l'erreur de construction du lien pour les nouveaux commentaires postés pour des évènements.   Toutefois, il vous faudra corriger les liens des anciens commentaires étant donné que ces liens sont stockés par JComments dans la base de données de votre site.

Pour cela :

  1. Connectez-vous sur votre interface phpMyAdmin.
  2. Ouvrez votre base de données.
  3. Repérez la table jos_jcomments_objects (où "jos" étant à remplacer par votre préfixe).
  4. Cliquez sur le bouton qui vous permet de créer une requête SQL.
  5. Copiez/coller l'instruction SQL ci-dessous puis éxecutez-là.

Tous les enregistrements de cette table qui concernent un lien vers AllEvents seront alors automatiquement corrigés.

{code}UPDATE jos_jcomments_objects SET [link]=replace(link, '_EventID','ei') WHERE [link] LIKE '%_EventID%';{/code}

]]>
christophe@avonture.be (Christophe) Plugin Commentaires Sat, 12 Oct 2013 15:58:47 +0200
AllEvents Premium v2.5.4 - Table2 - Liste des inscrits http://allevents.avonture.be/fr/listes/item/473-2-5-4-table2.html http://allevents.avonture.be/fr/listes/item/473-2-5-4-table2.html

A la demande d'un utilisateur, une nouvelle fonction a été ajoutée dans l'écran "Liste des évènements" lorsque l'affichage est du type "table2" : si vous avez activé l'affichage des indicateurs sur les inscriptions, une nouvelle icône "info" va apparaître dès lors que vous avez une personne inscrite et la bulle d'aide va reprendre les noms des personnes inscrites. 

Cette information va vous éviter à avoir à ouvrir chaque évènement pour savoir qui est inscrit.

Liste des évènements au format table2 : "Liste des inscrits"

]]>
christophe@avonture.be (Christophe) Listes d'évènements Sun, 06 Oct 2013 10:48:20 +0200
AllEvents Premium v2.5.4 http://allevents.avonture.be/fr/release/item/472-premium-254.html http://allevents.avonture.be/fr/release/item/472-premium-254.html
  • Correction d'un bug dans la vue calendrier : l'heure était affichée en UTC 0 (Greenwich) et non locale.
  • Correction d'un bug impactant le module : le paramètre "Ne pas afficher les évènements avant telle date" n'était pas pris en compte.
  • Correction d'un bug au niveau du plugin de surcharge qui empêchait la lecture des css depuis le dossier override/css
  • quelques petites adaptations diverses dont, entre autre, ajout de fichiers .htaccess dans quelques dossiers.
]]>
christophe@avonture.be (Christophe) Release Tue, 24 Sep 2013 00:26:37 +0200
Vue FullCalendar http://allevents.avonture.be/fr/fullcalendar/item/471-vue-fullcalendar-intro.html http://allevents.avonture.be/fr/fullcalendar/item/471-vue-fullcalendar-intro.html

Vue FullCalendar[EDIT]La vue FullCalendar est disponible depuis le 9 octobre.  Elle est disponible dans l'offre Premium+[/EDIT]Très prochainement, une vue calendrier sera proposée aux utilisateurs de AllEvents Premium+, cette vue est un calendrier mensuel totalement dynamique et particulièrement puissant.

Cette vue est basée sur la librairie JQuery FullCalendar (http://arshaw.com/fullcalendar/) développée par Adam Shaw.

Le développement de la vue a été réalisé initialement par Emmanuel et c'est ensemble que nous l'intégrons encore plus à AE ainsi que nous le faisons évoluer afin de pouvoir, prochainement, le proposer en download.

Le calendrier s'intègre à AllEvents et reprend par conséquent toutes les données qui sont accessibles à l'utilisateur / le visiteur connecté; comme le fait le module calendrier.   La comparaison pourrait s'arrêter ici.

Le calendrier reprend un très grand nombre de fonctionnalités telles que :

  • Bouton d'ajout d'un évènement afin de vous permettre de proposer un évènement sans même quitter la vue.   Une zone d'édition vous permet en effet d'encoder la description du nouvel évènement.
  • Bouton de suppression d'un évènement existant.
  • Bouton d'édition d'un évènement.
  • Bouton d'impression permettant d'afficher la liste des évènements dans un format rendant plus simple l'impression.
  • Gestion des tooltips pour prévisualiser l'évènement.
  • Possibilité de redimensionner un évènement (trois jours au lieu de deux p.ex.).
  • Navigation simplifiée grâce à barre de navigation très simple.
  • Mise-à-jour du calendrier via du code Ajax et donc sans rechargement de la page.
  • Possibilités de filtrer sur l'agenda, l'activité ou le lieu.
  • Ecran de création qui vous permet de répéter un évènement chaque semaine, mois, ...  (remarque : l'évènement est dupliqué autant de fois)
  • ...

Un grand nombre d'actions ne sont possibles qu'en fonction du niveau de permissions de l'utilisateur connecté.  Ainsi, le bouton "Ajour d'un évènement" ne sera pas visible si votre utilisateur n'a pas le droit de proposer des évènements.

La vue est encore en développement pour quelques semaines afin qu'Emmanuel et moi puissions mettre à votre disposition une programmation aussi aboutie, optimisée et exemptes de bugs que possible.

Une fois disponible, la vue FullCalendar sera proposée dans l'offre Premium+ qui sera prochainement créée.  Il s'agit de l'offre Premium mais qui inclura la vue FullCalendar.

 

]]>
christophe@avonture.be (Christophe) FullCalendar Mon, 02 Sep 2013 17:57:54 +0200
Créez vos albums photos en HTML5 http://allevents.avonture.be/fr/joomla/item/467-album-photo-html5.html http://allevents.avonture.be/fr/joomla/item/467-album-photo-html5.html

Récemment, j'ai souhaité créer des albums photos pour le site de la J!UG Wallonie qui est en Joomla 3.   Je souhaitais des albums photos simples et beaux.

  • Simple : je n'avais pas envie de devoir charger mes photos via un écran d'administration; juste les transférer par FTP et ajouter un tag dans mon article pour l'affichage immédiat des photos.
  • Beau : je le souhaitais en HTML 5 et pouvant tirer profit de Bootstrap.

J'ai cherché des composants de ce type pour Joomla 3 et je n'en ai pas trouvé.   J'ai certainement mal cherché...   Il y en avait un mais cela devait être une version pre-alpha tant elle était "bourrée" de bugs.

C'est à ce moment-là qu'il y a eu deux coïncidences : Stéphane Bourderiou a publié un lien vers bootsnip.com qui est un petit annuaire de code HTML5 / Boostrap prêt à l'emploi et je suis tombé sur une présentation de Peter Van Westen de NoNumber.nl où l'auteur explique que l'utilisation conjointes de ses outils permet de créer de chouettes fonctions.

J'avais tout en main : une belle gallerie d'images; un composant de recherche d'un tag (ReReplacer) et un autre d'exécution de code (Sourcerer).

Le script est en production sur le site de la J!UG Wallonie; cliquez ici pour voir la démo.

L'idée : placer mes images dans un sous-dossier de /images, sous-dossier qui s'appellera p.ex. "AllEvents".   Dans un article où je veux faire apparaître la gallerie, je place un tag comme p.ex. [cavo_photo AllEvents] où AllEvents est le nom de mon dossier.   ReReplacer recherchera le tag et insérerait alors un code php qui sera ensuite lu et exécuté par Sourcerer.    Restait à écrire le code php qui serait basé sur le snippets "Thumbnail Carousel" et qui scannerait mon dossier depuis /images pour générer le code html requis pour l'affichage.

1. Installation

1.1 Installer les composants NoNumber.nl

Installer ReReplacer et Sourcerer.

Rendez-vous dans la gestion des plugins afin de vérifier que le plugin Sourcerer est bien publié.   Afin d'éviter d'éventuels sources de conflits, éditez le plugin Sourcerer et modifiez son ordre d'affichage afin qu'il soit le dernier à s'exécuter.

1.2 Créer le script Album_Photo.php

Nous aurons a créer un code PHP : je vous propose de créer un dossier nommé "_Sourcerer" à la racine de votre site.   Vous pouvez nommer le dossier comme bon vous semble mais il faudra alors songer à adapter le nom du dossier dans le code ci-dessous.  Depuis votre ordinateur, ouvrez un éditeur de texte tel que Notepad++ et copiez-y le code de l'album que je vous propose plus bas dans cet article.   Dans les options de Notepad++, cliquez sur le menu Encodage et assurez-vous d'avoir sélectionné "UTF8 - no BOM" pour que les caractères accentués soient correctement encodés.

Ceci fait, sauvez le fichier sous le nom de AlbumPhoto.php et placer le fichier dans le dossier _Sourcerer.

1.3 Configurer ReReplacer

Dans ReReplacer, ajoutez une nouvelle entrée.

Rechercher :
{code}\[cavo_photo (.*?)\]{/code}

Remplacer :

{code}
{source}
<?php
$folder='\1';
include JPATH_SITE.'/_Sourcerer/AlbumPhoto.php';
?>
{/source}

{/code}

Activez l'option "Expressions régulières" de ReReplacer.

Si vous auriez nommé différement les dossiers _Sourcerere et le nom du fichier; c'est ici qu'il faut intervenir.

{xtypo_info}Voilà, toute l'installation est faite et ne devait être faite qu'une seule fois.{/xtypo_info}

2. Utilisation

2.1 Transférer votre album photo

Pour chaque album photo que vous souhaitez avoir, créez un dossier dans le dossier /images de votre site.   Par exemple "AllEvents".
Je vous conseille aussi de créer un sous-dossier que vous nommerez; obligatoirement; "Thumbs", vous auriez donc "/images/AllEvents/Thumbs".    La présence du dossier n'est pas requise mais je vous le recommande : l'album photo affichera des vignettes aussi il est préférable de créer vous-même les vignettes pour optimiser la vitesse d'affichage de votre site et, aussi, avoir un contrôle sur la qualité des vignettes.

Dans les deux dossiers créer, n'oubliez pas de mettre un fichier index.html dans les deux dossiers.  Ce n'est pas obligatoire mais c'est mieux pour garantir la sécurité de votre site web en interdisant d'afficher la liste des images du dossier.

Depuis votre disque dur, transférer toutes vos photos vers le dossier créé (/images/AllEvents).   Si vous souhaitez gérer vous-mêmes les vignettes, transférer vos vignettes vers le dossier Thumbs (/images/AllEvents/Thumbs).

Je vous recommande l'outil Riot pour comprésser les images mais aussi les réduire.

2.2 Insérer un tag dans votre article

Dans l'article de votre choix, ajouter un tag à l'emplacement souhaité pour l'album photo : 

[cavo_photo images/AllEvents]

Il s'agit d'indiquer le nom du dossier relatif, à partir de la racine de votre site.

3. Exécution

Tout est en place : à l'affichage de l'article, ReReplacer va trouver le tag [cavo_photo], va extraire le nom du dossier et insérer un tag {source} qui sera interprété par Sourcerer.   Ce plugin va exécuter le script Album_Photo.php dont le code source est fourni ci-dessous.   

Album_Photo.php va scanner le dossier mentionné à la recherche d'images et va constituer un carroussel d'images.   Si un dossier Thumbs est trouvé, les vignettes seront lues depuis ce dossier.

 

 


{code}

<!--

Auteur : Christophe Avonture; le point de départ étant le snippet http://bootsnipp.com/snipps/thumbnail-carousel
http://allevents.avonture.be

-->

<style type="text/css">

.carousel {margin-bottom:0;padding:0 40px 30px 40px;}
.carousel-control {left:-12px;}
.carousel-control.right {right:-12px;}
.carousel-indicators {right:50%;top:auto;bottom:0px;margin-right:-19px;}
.carousel-indicators li {background:#c0c0c0;}
.carousel-indicators .active {background:#333333;}
</style>

<?php

   // NOTE : la variable $folder doit être initialisée par le code qui appelle celui-ci
   // $folder doit être le nom d'un dossier se trouvant à la racine du site.   Par exemple "images/blog/album_photo".

   // Initialiser à 1 si, lorsqu'on clique sur une vignette, si l'image doit s'afficher dans une fenêtre modale.
   $useModal=1;
 
   // ---------------------------------------------------------------------------------------------------------------
    
   jimport('joomla.filesystem.file');
   jimport('joomla.filesystem.folder');

   // Nombre d'images par slides
   $imgBySlides=4;
 
   // Contrôle que le dossier existe
 
   if (($folder!='') && (is_dir(JPATH_SITE.'/'.$folder))) {  
 
      $arrFiles = JFolder::files(JPATH_SITE.'/'.$folder, '.', 0, 0, array('..', '.', 'index.htm', 'index.html'));

      $count=count($arrFiles);
 
      if ($count>0) {
     
         // Compte le nombre de slides : divise le nombre d'images trouvé par le nombre d'images par slides et augmente de 1 s'il reste un solde
         $slides=intval($count/$imgBySlides);
          if (($count % $imgBySlides)>0) $slides+=1;

          // -----------------------------------------------------------------------
          //
         // Génère les fenêtes modales
         
          if ($useModal==1) {
         
              echo '<div id="imgModal">';
              
              $wPicture=0;
              
              for ($i=0;$i<$slides; $i++) {
              
               for ($j=0;$j<$imgBySlides;$j++) {
                 
                  if (isset($arrFiles[$wPicture])) {    
                     
                        $img=JURI::base().$folder.'/'.$arrFiles[$wPicture];
                         echo '<div class="modal fade" id="mod_img'.$wPicture.'" data-remote=""><img src="http://allevents.avonture.be/'.$img.'" title="'.$img.'" alt="'.$arrFiles[$wPicture].'"/></div>' ;

                  } // if (isset($arrFiles[$wPicture])) {     

                  $wPicture+=1;

               } // for ($j=0;$j<$imgBySlides;$j++) {

            } // for ($i=0;$i<$slides; $i++) {

              echo '</div><!--/imgModal-->';

          } // if ($useModal==1)
         
          // -----------------------------------------------------------------------
         
          // Génère le caroussel et les vignettes
         
         echo '<div class="well">';
         echo '<div id="myCarousel" class="carousel slide">';
         echo '<ol class="carousel-indicators">';

         for ($i=0;$i<$slides;$i++) {         
             echo '<li data-target="#myCarousel" data-slide-to="'.$i.'" class="'.($i==0?'active':'').'"></li>';
         }
      
          echo '</ol>';
          echo '<div class="carousel-inner">';

          $wPicture=0;
          for ($i=0;$i<$slides; $i++) {
         
             echo '<div class="item '.($i==0?'active':'').'">';
             echo '<div class="row-fluid">';
              
            for ($j=0;$j<$imgBySlides;$j++) {
              
                  if (isset($arrFiles[$wPicture])) {
                 
                     $img=JURI::base().$folder.'/'.$arrFiles[$wPicture];
                     
                      // Contrôle s'il y a une miniature dans un sous-dossier nommé Thumbs.  Si oui, utilise la miniature; si non, utilise l'image originale.
                      $imgThumb=JPATH_SITE.'/'.$folder.'/Thumbs/'.$arrFiles[$wPicture];                     
                      $imgThumb = (is_file($imgThumb)?str_replace(JPATH_SITE,JURI::base(),$imgThumb):$img);

                    echo '<div class="span3"><a '.($useModal==1 ? 'data-target="#mod_img'.$wPicture.'" data-toggle="modal"':'').' href="http://allevents.avonture.be/'.$img.'" class="thumbnail"><img src="http://allevents.avonture.be/'.$imgThumb.'" title="'.$imgThumb.'" alt="'.$arrFiles[$wPicture].'" style="max-width:100%;" /></a></div>';
                
                  } else { // if (isset($arrFiles[$wPicture]))
                 
                     echo '<div class="span3">&nbsp;</div>';
                     
                  } // if (isset($arrFiles[$wPicture]))

               $wPicture+=1;
                 
            } // for ($j=0;$j<$imgBySlides; $j++)
              
            echo '</div></div>';
              
          } // for ($i=0;$i<slides;$i++)
      
          echo '</div><!--/carousel-inner-->';
          echo '<a class="left carousel-control" href="http://allevents.avonture.be/#myCarousel" data-slide="prev">‹</a>';
         echo '<a class="right carousel-control" href="http://allevents.avonture.be/#myCarousel" data-slide="next">›</a>';
          echo '</div><!--/myCarousel-->';
          echo '</div><!--/well-->';
      
          // <!-- Call jQuery 1.9, call bootstrap.js and run the carousel when the DOM is ready. Slide every 5 seconds. -->
         //  echo '<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>';
         //  echo '<script type="text/javascript" src="http://allevents.avonture.be/js/bootstrap.min.js"></script>';
         //  echo '<script type="text/javascript">';
         //  echo '   $(document).ready(function() {';
         //  echo '          $(\'#myCarousel\').carousel({';
         //  echo '             interval: 5000';
         //  echo '          })';
         //  echo '   });';
         //  echo '</script>';
      
      } // if ($count>0)     
      
   } else { // if (is_dir($folder))  
 
      echo '<h1 class="alert alert-danger">Le dossier '.$folder.' est inexistant.</h1>';
      
   } // if (is_dir($folder))  

?>
{/code}

 

]]>
christophe@avonture.be (Christophe) Joomla Sat, 10 Aug 2013 15:24:50 +0200
AllEvents Premium v2.5.3 http://allevents.avonture.be/fr/release/item/466-premium-253.html http://allevents.avonture.be/fr/release/item/466-premium-253.html

Mise à disposition de la version 2.5.3 de AllEvents.   Cette version reprend un certain nombre de patchs ayant été publié; essentiellement dans le forum :

  • Correction de la perte des paramètres lors du changement de mois
  • Correction de la notion d'accès pour les formulaires tiers (un formulaire AE lié à un formulaire tiers (CKForms p.ex.) s'affichait en mode visiteur lorsque le formulaire était programmé pour s'afficher seulement pour les membres connectés)
  • Correction du non-affichage des personnes ayant répondu "Je ne viens pas"
  • Correction des urls internes pointant vers le site de AllEvents
  • Correction CSS des icônes suite à un conflit avec certain framework comme Gantry
  • Contrôle du champs "Niveau d'accès" et initilisation à "Public" lorsque le champs est null
  • Correction d'un bug dans l'écran backend de JComments lorsqu'il s'agissait d'afficher des liens vers des évènements AE
  • Correction de la perte du paramètre "Autoriser les inscriptions" dans le formulaire de proposition lorsque ce même paramètre ne doit pas être affiché
  • Implémentation d'un contrôle du type de fichier dans le générateur de tumbnails

 

Deux nouvelles fonctionnalités ont été ajoutées.  Ces fonctions ne sont disponibles que pour la version Premium AllEvents Premium

  • L'auteur du mail est en copie des mails envoyés
  • Vue calendrier multiple : nouvelle vue frontend permettant d'afficher un calendrier annuel, mensuel, hebdomadaire, journalier).  Demo

 

{xtypo_info}Je tiens vivement à remercier Emmanuel qui a développé la vue Calendrier et qui met actuellement toute son énergie à développer une nouvelle vue; bien plus puissante puisqu'elle permettra un grand nombre d'actions comme la création d'évènements, le déplacement, mise-à-jour, ...{/xtypo_info}

 

]]>
christophe@avonture.be (Christophe) Release Sun, 04 Aug 2013 18:06:12 +0200
Vue calendrier http://allevents.avonture.be/fr/vue-calendrier.html http://allevents.avonture.be/fr/vue-calendrier.html

La vue calendrier vous permet d'afficher la liste de vos évènements sous la forme d'un calendrier mensuel, hebdomadaire ou journalier (liste verticale).

Elle permet de rapidement prendre connaissance de la liste des évènements et de les visualiser.

Cliquez ici pour voir la démo.

La vue "Calendrier - Multiple" vous permet de choisir entre quatre types d'affichages : annuel, mensuel, hebdomadaire ou journalier.   Comme pour toutes les autres vues de AllEvents, il y a un grand nombre de paramètres qui vont vous permettre de filtrer les évènements devant être affichés.

Vue calendrier au format mensuel; cliquez sur l'image pour l'agrandir. 

Cette vue est reprise dans l'offre Premium de AllEvents.

 

]]>
christophe@avonture.be (Christophe) Vue calendrier Sun, 04 Aug 2013 17:30:56 +0200
Optimisation de l'affichage du site http://allevents.avonture.be/fr/item/463-optimisation-seo.html http://allevents.avonture.be/fr/item/463-optimisation-seo.html

Après quelques lectures et test d'optimisation, les performances du blog de AllEvents sont passées de D / C à un A / B et, peut-être est-ce simplement un effet placebo mais il me semble, très concrètement, voir la différence au chargement des pages du site.

463-gtmetrix-600x255

Afin que ma courte expérience puisse être utile, sans prétention aucune, je vous livre ici les quelques adaptations que j'ai faite :

1. Installation de JCH Optimize 

http://extensions.joomla.org/extensions/core-enhancements/performance/site-performance/12088

Il s'agit d'un plugin de type système pour Joomla et qui, le plus simplement du monde, permet d'améliorer "comme c'est pas possible" les performances de votre site.   Tout se passe depuis l'écran de paramétrage du plugin, il suffit d'activer telle ou telle option.   Impossible de vous dire exactement ce qui fonctionnera sur votre site car il faut tester les paramètres pour être sûr que votre site fonctionne comme souhaité dès qu'un paramètre a été appliqué.

Pour info, sur ce site, j'ai désactivé "Combine Javascript Files" et "Minify Javascript" car cela causait des conflits et empêchait des scripts de s'exécuter.   Toutes les autres options sont sur Yes comme p.e. "Combine CSS Files," Replace @import", "GZip Js and CSS", "Minify CSS", etc.  

J'ai opté pour l'envoi des scripts javascript en toute fin de page; comme recommandé par plusieurs sites d'optimisation tel que GTmetrix.

Dans les paramètres avancés, j'ai également activé l'utilisation du fichier .htaccess ainsi qu'activer la génération des sprites (si vous ne savez pas ce qu'est un sprite).

2. PNGGauntlet

http://pnggauntlet.com/

Grâce à des outils comme GTmetrix, j'ai pû identifier les images qui étaient plus lourdes et affichées sur ma page d'accueil et même, les petites images qui gagneraient à être compressées.

C'est là qu'intervient PNGGauntlet qui est un logiciel de compression sans perte de qualité.   J'ai donc téléchargé les images utilisées sur ma page d'accueil comme celles de mon template, celles de l'un ou l'autre modules et, bien sûr, les images utilisées dans les articles du blog et je les ai compressées.   Certaines images, pourtant déjà au format png ont pû être compressées à 50%.  Sans toucher ni à la qualité ni à la taille de l'image.

3. .htaccess

Via son .htaccess, il est possible de définir des durées de vies pour tel ou tel types de fichiers.  Ainsi, les fichiers images pourraient avoir une durée de vie de plusieurs semaines, les fichiers .css d'un mois, ... et les fichiers .html d'un jour.  Tout est paramétrable.   Il existe un excellent article sur le site de Joomla.org : .htaccess File That FREAKIN Works!

4. Joomla

Last but not least, n'oubliez évidemment pas de configurer le cache de votre site Joomla (pas de cache=pas d'optimisation) ainsi que la compression GZip qui est accessible depuis l'onget Serveur de l'écran de configuration générale du site.

Selon SiteGround.com, le meilleur cache est obtenu en sélectionnant le cache conservateur. 

Pensez correctement régler l'ordre de vos plugins système : le plugin de cache doit être le plus bas possible afin qu'il puisse agir sur le rendu HTML de votre site le plus tard possible et donc, de cacher le maximum possible.

 

 

 [Edit Juillet 2013]Parution d'un article "How I Got My Website to Load in 1.29 Seconds" dans le Joomla Community Magazine[Edit]

 

Remerciements : je tiens à remercier Simon Grangé pour son article "Outils et astuces pour vérifier la vitesse d'un site Joomla! et améliorer les performances" ainsi que son astuce consistant à utiliser le plugin JCH Optimize.

 

 

 

]]>
christophe@avonture.be (Christophe) blog Fri, 24 May 2013 23:15:27 +0200
Joomla!Day 2013... c'est fini ;-{ http://allevents.avonture.be/fr/item/461-jdfr2013-jour2.html http://allevents.avonture.be/fr/item/461-jdfr2013-jour2.html

Le Joomla!Day 2013 – Toulouse est terminé ; c’est décidément toujours trop court.

La journée du dimanche confirme l’excellente organisation de l’évènement et l’esprit de famille ; à peine arrivé sur place et c’est reparti pour de nombreuses discussion et l’occasion de s’accorder du temps pour échanger avec ceux avec qui on a trop peu vu la veille.

La première conférence à laquelle j’ai participé est celle de Thomas Papin : comment modifier l’affichage de Joomla sans faire de hack. Thomas explique entre autre les vues alternatives pour les modules. Dans la deuxième partie de son exposé, Thomas donne des noms de composants qui sont majoritairement gratuits et sont utilisés sur des sites associatifs ; entre autre Community Builder, AcyMailing, Kunena forum et un certain composant de gestion d’évènements.

Ma seconde conférence est « Autour de CB » animée par Eric Lamy, VP de l’AFUJ. Eric parle des plugins de CBs dont p.ex. Facebook Connect et CBSubs. Le second nommé permet de gérer des abonnements (adhésion annuelle, cotisation, …) et Eric donne plusieurs trucs pour proposer des promotions (réduction de 30% p.ex. si inscription 3 mois avant terme de l’adhésion).

CrawlProtect, première conférence de l’après-midi, est une solution php non Joomla! permettant de sécuriser son site. Cette solution gratuite permet de bloquer l’accès à son site dès lors que la connexion est jugée illégitime (sur base d’IPs blacklistées, urls de type tentatives de hacking, …). CrawlProtect utilise le fichier .htaccess ainsi que la base de données pour bloquer d’autres attaques (sur base de mots clef dans l’url entre autre). Cette solution me semble très performante et mérite d’être largement testée.

Brian Teeman @ photo de Marc-Antoine ThevenetLa dernière conférence à laquelle j’ai pris part n’est pas, justement, une conférence mais une discussion. Il me faut avouer que, sur le coup, j’ai été manipulé. Le titre de la conférence était « Table ronde OSM » ; la table était rectangulaire et non ronde. Gros mensonge donc. L’idée de la table rectangulaire est de permettre un échange entre le public francophone et des personnes de Open Source Matters. Brian Teeman, David Hurley, Alice Little Grevet et Jean-Marie Simonet; la touche frenchie de la bande, étaient là pour expliquer la mission de OSM et pour échanger sur ce que le monde francophone pourrait faire pour promouvoir Joomla en francophonie. Eric Lamy a pû répondre à Brian qui questionnait sur la naissance du Joomla!Day Algérie qu’il avait aidé le groupe Algérien mais aussi d’autres tels que le Togo (j’espère que ma mémoire ne me fait pas défaut) à mettre sur pied leurs propres organisations et évènement.

Avant de plier bagages, les Joomleurs restant à Toulouse pour la nuit décident d’aller au restaurant et, de mon côté, nous nous retrouvons à onze dans le centre-ville. 

Au moment de quitter Toulouse, un regret, une fois encore, que tout ça soit déjà fini et qu’il faille attendre une année avant de revivre un tel moment d’ouverture et de rencontre.

Merci à l’AFUJ, merci aux organisateurs et merci à tous.

]]>
christophe@avonture.be (Christophe) blog Tue, 26 Mar 2013 08:24:23 +0100