jeudi 29 mars 2012

Prestashop et kimsufi - petits soucis de droits

Bon, un serveur dédié, c'est super.
Mais ca fait du SSH.
Et des problèmes de droits

Alors, il se peut que vous ayez déjà rencontré ce soucis en voulant uploader une image produit ou le logo de votre boutique :
move_uploaded_file() [function.move-uploaded-file]: SAFE MODE Restriction in effect. The script whose uid is 10001 is not allowed to access /tmp/PSiD5TQF owned by uid  48

Bon, les UID, ça dépend de vos paramétrages utilisateurs sous SSH

Et bien sur, z'y comprenez rien, vous voulez pas regrouper des droits utilsiateurs, toussa toussa..

Rapide analyse du message d'erreur : le dossier tmp pose problème.
Lequel ?
Celui qui est à la racine du dossier "img"
Paf, on le passe en 777.
Méthode punk ? Oui. Efficace ? Oui, également...

En prod, pensez juste à tout re-vérouiller en 755...


mercredi 28 mars 2012

Une class différentes pour chaque catégorie

Ma problématique :
personnaliser le listing produit suivant la catégorie prestashop que je visite

la soluce :
Une catégorie, ce n'est finalement..qu'une ID.
Donc, je vais récupérer l'ID de la catégorie, pour la rajouter en définition de class CSS

{if isset($smarty.get.id_category)} class="category_{$smarty.get.id_category|intval}"{/if}

Et ça, selon le template que vous aurez choisi, dans la feuille de style css qui gère l'affichage du tpl product-list.tpl

Enjoy !

Exemple concret :
Theme prestashop matrice
Personnalisation de l'affichage du prix dans la liste produits pour la catégorie ID 4

modif css
global.css
rajout d'une ligne apr_s 952 :
#center_column .categorie_product  span.pp_4 {width:75px;margin-top:5px;padding-top:15px;padding-bottom:19px;padding-left:25px;padding-right:25px;color:#ffffff;height:30px;background: url("../img/4.png") no-repeat}

modif product-list.tpl
Ligne 65

remplacer 



             {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}
         
par 




             {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}



lundi 19 mars 2012

Prestashop - changer l'ordre des prix dégressifs

Un truc qui m'a toujours semblé bizarre sous prestashop, template de base :
quantity_discounts
les prix dégressifs vont de la quantité la plus élevée à la plus faible

La logique voudrait que ce soit de la plus petite quantité à la plus haute

Bon.
On va donc aller faire un tour dans Class/SpecificPrice.php
function getQuantityDiscounts
line 196

On change DESC par ASC

Ohhh !! c'est le bon ordre ! De la plus petite quantité à la plus haute

jeudi 15 mars 2012

Installer prestashop 1.4.7 en ssh sur kimsufi

J'utilise putty


Je me place à la racine httpdocs


wget http://www.prestashop.com/download/prestashop_1.4.7.zip
unzip prestashop_1.4.7.zip
rm prestashop_1.4.7.zip

## Création de robots.txt et .htaccess
touch robots.txt .htaccess


chmod 777 config tools/smarty/compile 
tools/smarty/cache tools/smarty_v2/compile  tools/smarty_v2/cache log admin/import admin/backups sitemap.xml robots.txt .htaccess
chmod -R 777 img mails modules themes/prestashop/lang themes/prestashop/cache translations upload download
######### Commencer la webinstall sur /install/ #########
## Une fois installée, supprimer certains fichiers et renommer l'admin :
rm -r install readme_fr.txt readme_en.txt readme_es.txt
## Changement du nom de l'admin par /mon_admin
mv admin mon_admin


Prestashop 1.4.7 --> module cm-cic gratuit cgi2 NOT OK

J'utilise le module gratuit Cm-CIC (paiement CB credit mutul) suivant :
http://www.prestashop.com/forums/topic/68860-module-credit-mutuel-cic-mon-premier-dev-prestashop/page__st__140

Mes tests renvoyaient un CGI2 NOT OK après paiement
- Commande validée
- panier vidé
- Trying to get property of non-object in classes/PDF.php

Mais donc, pas de possibilité de passer en production

3 modifications :
fichier validation.php du module
ligne 186
$votre_variable->validateOrder(intval($cart->id), _PS_OS_PAYMENT_, $total, 'CB (CIC)', 'N° autorisation : '.$CMCIC_bruteVars['numauto'], null, $id_currency, false, $cart->secure_key);

Controller OParentOrdreController.php
ligne 162
$order->validateOrder((int)(self::$cart->id), Configuration::get('PS_OS_PAYMENT'), 0, Tools::displayError('Free order', false), null, array(), null, false, self::$cart->secure_key);

Classes/PDF.php
Mise en commentaires ligne 549 et 550
(bon, ça, c'est un peu punk, je vais creuser le sujet, mais ça n'a pas gêné le fonctionnement de ma boutique à ce jour)

Et hop !
Des CGI2 Ok partout.