Jump to content

Utiisation de la librairie GD/PHP avec Presta Shop


Recommended Posts

Hello,
;-)
Suite à une question posée ici :
http://www.prestashop.com/forums/viewthread/26371/graphisme/comment_inserer_un_fond_different_pour_chaque_categorie

J'ai essayé de répondre à ce membre.

Ci-dessous quelques pistes à suivre :




Pourquoi ne pas utiliser des boutons sous forme d'image réalisée sous Photoshop par exemple ? Pour ce faire il faut modifier le code de

../modules/blockcategories/category-tree-branch.tpl

de la manière suivante :

>




   {if $node.children|@count > 0}
</pre>
<ul>
       {foreach from=$node.children item=child name=categoryTreeBranch}
           {if $smarty.foreach.categoryTreeBranch.last}
                       {include file=$tpl_dir./category-tree-branch.tpl node=$child last='true'}
           {else}
                       {include file=$tpl_dir./category-tree-branch.tpl node=$child last='false'}
           {/if}
       {/foreach}
</ul>
<br>   {/if



Dans ce cas il faudra nommer les images de catégorie de la manière suivante :

id_categorie-bcat.png ou bien id_categorie-bcat.jpg (1-bcat.jpg,5--bcat.jpg etc.)
et stocker les images dans le répertoire Prestashop suivant :
.../img/c

Voir mon utilisation sur ce site que je finalise :
http://www.dapabox.com/

Sinon tu crées des boutons graphiques dynamiquement via PHP et GD

Pour verifier si GD est activé sur ton serveur, execute le code PHP suivant :
  1. <?php
  2. var_dump(gd_info());  
  3. ?> 
 /* En retour la fonction te renvoie un tablo du type */
array(9) { ["GD Version"]=>  string(24) "bundled (2.0 compatible)" ["FreeType Support"]=>  bool(false) ["T1Lib Support"]=>  bool(false) ["GIF Read Support"]=>  bool(true) ["GIF Create Support"]=>  bool(false) ["JPG Support"]=>  bool(false) ["PNG Support"]=>  bool(true) ["WBMP Support"]=>  bool(true) ["XBM Support"]=>  bool(false) }



Voir cet exemple, où j'affiche une image bouton avec texte dynamique :
http://www.dapabox.com/shop/dapa/dyn_img.php?titre=Essai
Le code source de la page dyn_img.php :

<?php
/* Example for : alexmaislautre Forum Prestashop */
/* version 0.a1 Date : 27 Aug 2009 */
/* Publisher : B.BARON */
/* For : http://www.dapabox.com/ */

// Nouvelle image 100*30
$im = imagecreate(100, 30);

// Fond  rouge texte blanc
$bg = imagecolorallocate($im, 255, 0, 0);
$textcolor = imagecolorallocate($im, 255, 255, 255);

// Ajout de la phrase en haut à gauche
imagestring($im, 5, 0, 0, $_GET['titre'], $textcolor);

// Affichage de l'image
header('Content-type: image/png');

imagepng($im);
imagedestroy($im);
?>



L'appel dans une page HTML, PHP ou TPL se fera de la manière suivante :





------ Ajout exemple utisation GD avec Polices True Type (TTF) ---------
Pour ce faire il doit exister un répertoire fonts avec les fichiers polices nécessaires
ex :../fonts/webdings.ttf
dans mon exemple j'ai sur le serveur :

prestashop/fonts/Dapa_Carton.ttf
prestashop/fonts/DAPAStamp1.ttf
prestashop/fonts/DAPAStamp2.ttf

URL de test :

http://www.dapabox.com/shop/dapa/dyn2.php?nomcategorie=Boite a crayons

nomcategorie est le texte à afficher.

enfin le code exemple :

<?php
/* Example for : alexmaislautre Forum Prestashop */
/* version 0.b1 Date : 27 Aug 2009 */
/* use PHP + GD + TTF Fonts Files*/
/* Title : Affichage d'un texte avec caractère True Type personnalisé */
/* Publisher : B.BARON */
/* For : http://www.dapabox.com/ */

// Définition du content-type
header('Content-type: image/png');

// Création de l'image
$largeurpixel = 520;
$hauteurpixel = 80; 
$im = imagecreatetruecolor($largeurpixel, $hauteurpixel);

if ($im){

// Création de quelques couleurs
$white = imagecolorallocate($im, 255, 255, 255);
$red = imagecolorallocate($im, 255, 0, 0);
$black = imagecolorallocate($im, 0, 0, 0);

imagefilledrectangle($im, 0, 0, $largeurpixel-1, $hauteurpixel-1, $white);

// Le texte à dessiner
$text = $_GET['nomcategorie'];

// Remplacez le chemin par ton propre chemin de police
$font = 'fonts/Dapa_Carton.ttf';
$fontsize = 64;
$decofont ='fonts/DAPAStamp1.ttf';
$decofontsize = 72;

// Ajout du texte
$lefttextposition = 30;
$bottomtextposition = 70;
$leftdecoposition = 400;
$bottomdecoposition = 70;
imagettftext($im, $fontsize, 0, $lefttextposition, $bottomtextposition, $black, $font, $text);
imagettftext($im, $decofontsize, 0, $leftdecoposition, $bottomdecoposition, $red, $decofont, '*');
// Utiliser imagepng() donnera un texte plus claire,
// comparé à l'utilisation de la fonction imagejpeg()*/
imagepng($im);
imagedestroy($im);}
else
{echo 'erreur';}

?>



Intégration HTML, PHP, TPL :




Voir une utilisation dans ce site que je développe acctuellement :
http://www.dapabox.com/shop/dapa/product.php?id_product=16
http://www.dapabox.com/shop/dapa/product.php?id_product=25
etc.
L'affichage des titres "GD" est aussi présent sur les listes catégories et pages d'accueil
Bruno

Link to comment
Share on other sites

  • 1 month later...

Bonjour,

Merci pour ce complément de réponse bien détaillé,

J'ai une question cette solution marche t'elle pour mettre dans les titres des blocs des images de fond et votre systeme pour la police dynamique?

Car dans votre code je ne vois pas ou je peux mettre l'image de fond des catégories

merci d'avance

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...