vendredi 20 mars 2009

Un editeur WYSIWYG dans Pligg

Pligg permet de créer des digg likes. Petit inconvénient sur la version que j'utilise (la version 9.9.5), elle ne dispose pas d'un editeur facile d'utilisation pour mettre en forme son texte, ajouter des images et des tableaux.

Pour y remedier, l'outil ultime: Tiny MCE.

Très pratique et super facile à configurer.

Installation:

Créer un repertoire /editor à la racine du site pligg, y coller les fichiers de TinyMCE.

Ensuite, il suffit de rajouter le code suivant sur les pages qui nécessitent un éditeur:

<!--WYSIWYG Editor -->
<script language="javascript" type="text/javascript" src="{$my_base_url}{$my_pligg_base}/editor/tiny_mce.js"></script>
{literal}
<script language="javascript" type="text/javascript">
tinyMCE.init({
mode :
"textareas",
theme :
"advanced",
theme_advanced_buttons1 :
"bold,italic,underline,separator,strikethrough,justifyleft,justifycenter,justifyright,justifyfull,separator,bullist,numlist,separator,undo,redo,image,separator",
theme_advanced_buttons2 :
"",
theme_advanced_buttons3 :
"",
theme_advanced_toolbar_location :
"top",
theme_advanced_toolbar_align :
"left",
theme_advanced_path_location :
"bottom",
extended_valid_elements :
"a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]"
});
</script>
{
/literal}
<!--// WYSIWYG Editor -->


Pour mon cas j'ai ajouté ce code à la fin des fichiers editlink_edit_center.tpl et submit_step_2.tpl

et hop!!! çà marche.

Reste juste a choisir les boutons a afficher en modifiant la ligne commençant par theme_advanced_buttons1

Pour passer en français, facile. Télécharger le pack en .zip ici: http://tinymce.moxiecode.com/download_i18n.php et l'extraire dans le repertoire editor en ecrasant les anciens fichiers.

Puis ajouter une petit: language : "fr", dans le texte du script et c'est fini.

mercredi 18 mars 2009

Modifier l'affichage du prix dans Virtuemart

Par defat, le prix s'affiche comme çà dans la page produit:

Prix à l'unité (pièce): 15€

et je veux:

Prix: 15€

Pour modifier prix à l'unité çà se passe dans le fichier /administrator/components/com_virtuemart/languages/shop/french.php

Ligne 59:

'PHPSHOP_CART_PRICE_PER_UNIT' => 'Prix',

Problème: (pièce) apparait toujours...

Dans le fichier /administrator/components/com_virtuemart/html/shop.product_details.php, ligne 265, enlever la deuxieme partie pour obtenir:

$product_price_lbl = "<strong>". $VM_LANG->_('PHPSHOP_CART_PRICE_PER_UNIT'). ":</strong>";



Categories sur la page d'accueil Virtuemart

Par defaut les 4 categories sont présentées sur chaque ligne.

Pour changer cette valeur, modifier le fichier components/com_virtuemart/themes/default/templates/common/categoryChildlist.tpl.php

Ligne 6 modifier la valeur:

$categories_per_row = 3;

mardi 17 mars 2009

Enlever la boite de quantité dans Virtuemart

Edit: le classique, on enlève la quantité mais plus rien ne fonctionne... les articles ne sont plus ajoutés au panier. En fait il vaut mieux cocher la case "Cacher la quantité" dans les propriétés de l'article.

Quand on vend des articles uniques, il n'est pas nécessaire de proposer à l'acheteur de choisir le nombre d'article qu'il souhaite acheter.

Pour enlever la boite de quantité de la page produit il faut modifier le fichier /components/com_virtuemart/themes/default/templates/product_details/includes/addtocard.tpl.php et commenter la ligne 32 comme çà:

// echo $ps_product_attribute->show_quantity_box($product_id,$product_id);

Pour l'enlever egalement dans la page de catégorie on edite la ligne 16 du fichier /components/com_virtuemart/themes/default/templates/browse/includes/addtocard.tpl.php

<?php /*echo $ps_product_attribute->show_quantity_box($product_id,$product_id);*/ ?>

lundi 16 mars 2009

Gallery2bridge - Enlever le logo et le chemin breadcrumb

Lorsque gallery2 est intégré dans joomla, pas besoin d'afficher a nouveau le chemin (s'il existe déjà sur le site) et le logo Gallery2 gache un peu la mise en page.

On peut les enlever dans les templates de Gallery2 mais le lus simple est quand meme de les faire disparaitre en utilisant le css.

J'ai donc ajouté:

#gsHeader { display : none; }
#gsNavBar div.gbBreadCrumb { display : none; }

dans le fichier css du template de joomla pour les effacer.

Source: http://trac.4theweb.nl/g2bridge/wiki/FAQ

Gallery2bridge et le vignettes de recherche

Lorsqu'on utilise Gallery2bridge pour intégrer une gallery dans un site Joomla, et qu'on souhaite disposer d'un champ de recherche permettant de montrer les vignettes pour une recherche donnée, il faut faire quelques ajustements.

En effet, par defaut les résultats ne sont pas tous présentés et il cliquer sur un bouton pour voir l'ensemble. Pas très pratique je trouve.

Voici les modifications a effectuées pour afficher directement les vignettes (ou du moins une plus grande quantité de vignette):

Il faut editer le fichier /gallery2/modules/search/templates/SearchScan.inc

Ligne 113 on trouve:

/* TODO: Parameterize this */
$scanSize = 2;

Il suffit de le remplacer par:

/* TODO: Parameterize this */
$scanSize = 100;

pour afficher les 100 premiers résultats.

Un petit tour sur le site, on constate que les résultats débordent de la page sur la droite...

Pour y remédier il va falloir spécifier au module de sauter un ligne toutes les x images (moi j'ai choisi de montrer 2 images par ligne, car pour 3 images, la 3e déborde).

Cette fois on va éditer le template: fichier .tpl

Pour cela on va créer un répertoire /gallery2/modules/search/templates/local, dans le quel on place le fichier modifié. Cela permet de garder le fichier modifié en cas de mise a jour du module en évitant qu'il ne soit écrasé.

On place dans ce repertoire une copie de SearchScan.tpl puis on edite ce fichier.

Juste après la ligne 96 on ajoute les ligne 3-7 ci-dessous:

{foreach from=$results.results item=result}

{
* Move to a new row *}
{
if ($childrenInColumnCount == 2)}
</tr><tr>
{assign var
="childrenInColumnCount" value=0}
{
/if}

{assign var
=childrenInColumnCount value="`$childrenInColumnCount+1`"}


La valeur de $childrenInColumnCount (ici 2), permet de choisir le nombre d'image par ligne.

On sauvegarde puis, pour que les modifications prennent effet, on va dans l'administration de gallery2, rubrique maintenance, et on efface le cache des templates.

Normallement maintenant tout est bon!

mardi 10 mars 2009

Operation: fournir les évenements du jour par email

Pour mon site sur le village de Risoul et sa station de ski je souhaitais fournir aux utilisateurs la possibilité de s'abonner aux évenements. Je pense que c'est pratique lorsqu'on est en station, de savoir quels sont les évenements et les animations qui s'y deroule le jour même. Moi même je suis souvent frutré de ne pas trouver un progamme simple des évenemtns près de chez moi.

Alors comme le site est sous joomla, j'ai utilisé le composant Eventlist (composant d'excellente qualite d'ailleurs...) afin de gérer les evenements et de permettre aux organisatuer des les entrer eux memes sur le site.

Tout fonctionne a merveille jusque là. Une page permet meme de voir les évenements du jour.

Alors tout d'abord j'ai rendu cette page (et finallement l'ensemble du site) disponible sur les mobiles grace a l'excellent plugin pour joomla. Ce module affiche un template special (simple) lorsqu'il detecte un mobile (pda ou iphone) qui se connecte.

Pratique mais cela oblige a se rendre sur la page pour consulter les evenements du jour, alors que je pense qu'il vaut mieux les fournir par email (l'ideal serait par sms...).

Le site gratuit propose tout ce qu'il faut pour transférer un fil rss vers un email.

Et c'est là que çà coince... Le composant Eventlist propose un flux RSS mais il contient (a l'heure actuelle) tous les évenements et pas uniquement ceux du jour... pas très interessant dans mon cas.

Alors il a fallu créer un flux rss à partir de la page de mon site. Pour celà j'ai utilisé l'excellent Feedity, gratuit lui aussi. Ce petit outil permet à partir d'une page web, de générer un fil rss.

Me voilà donc avec un fil RSS. Maintenant il faut l'envoyer aux abonnés.

Pour celà j'ai créé un groupe google... auquel ceux qui veulent recevoir chaque jour les évenements de risoul peuvent s'abonner. Il me reste donc a envoyer les fil RSS vers le groupe.

J'utilise donc Xfruit et son RSS to Mail.

Problème numero2: pour s'abonner au groupe, il faut confirmer son adresse. Si je veux envoyer mon flux RSS vers un mail par Xfruit, je ne pourrais pas confirmer.

Donc j'ai pris un chemin detourné.

Xfruit envoit le contenu du flux, chaque jour, dans une boite mail crée pour l'occasion. Et cette boite est configurée pour transmettre automatiquement le mail sur le groupe (et oui, avec cette boite j'ai pu devenir membre du groupe).

Voila, il me reste donc a faire quelques tests, et normallement les visiteurs de risoul-05.fr pourront bientot s'abonner au groupe pour recevoir chaque jour gratuitement la liste des évenements de la journée directement dans la boite mail de leur bel Iphone :)

Bon c'est vrai, un fil RSS sur la page des evenements du jour dans eventlist aurait nettement simplifié la tache... mais on est developpeur ou on ne l'est pas :)

edit:
Les test sont fait, et ce n'est pas vraiment top.

1. Feedity (en version gratuite) ne s'actualise que tous les 5h. Ca pourrait etre suffisant mais çà ne me convient pas.
2. Feedity ajoute des pubs dans le flux RSS, çà se comprend mais j'aime pas et je n'ai pas en vie de passer à la version payante.

Donc je decide de remplacer feedity par un yahoo pipe. L'outil est très performant. Pour moi la difficulté à été d'apprendre la syntaxe des expressions reguliere pour utiliser le module regex. En effet ce module permet d'extraire des données depuis la page html et de les assigner à une variable. Donc après 4 bonnes heures de galère, je suis parvenu a extraire mon contenu et à en faire un flux RSS.

Restait à distribuer le flux. Xfruit paraissait bien sur le papier, le probleme est qu'il a l'air plus ou moins a l'abandon (spams dans les commentaires...). Et le gros probleme est que la brique RSS to Mail ne m'a jamais envoyé un seul email... bizarre...
J'ai donc décidé de m'en passer. On oublie donc l'abonnement aux évenements depuis une liste de diffusion google groups.

J'ai testé PHPList qui peut envoyer des fils RSS, de façon journaliere mais je n'ai rien trouvé pour programmer l'heure d'envoi.

Donc finallement ce sera simplement feedburner