Un pont avec Prestashop ...
danielsan
Member
dans Modifications
Hello,
aujourd'hui j'ai dû afficher dans PluXml
les images des produits présents sur un site tournant sous Prestashop ( raz le bol de PS )
( elles sont affichées dans le footer genre "En direct de la boutique" )
Note: il y a un sous-domaine pour PluXml et un autre pour Prestashop ...
Avant toute chose:
je ne suis pas très fier de moi sur ce coup là,
appeler une base SQL dans du PluXml,
ça dénature le projet.
Mais avant qu'il y ait une version de PluXml en mode catalogue,
le client lui n'attend pas, alors bon
ps: les modos ont le droit de me taper dessus et me bannir pour la peine
Pour se faire:
1/ Créer un dossier dans plugins ( ex: import_ps )
2/ Créer un fichier produits.php dans lequel coller le code:
A l'endroit où vous souhaitez insérer votre liste d'images,
mettez un beau
Vous en pensez quoi ?
C'est la première fois que je dois aller interroger une base SQL,
j'ai découvert ça ce matin :cool:
Alors:
1/ s'il y en a qui font tourner un Prestashop en parallèle de PluXml,
ça donne quoi ? ça tourne aussi chez vous ?
2/ mon code est-il suffisamment sécurisé ?
3/ Existe-t-il une méthode plus jolie pour l'insertion dans le template ?
4/ quel moyen pour faire un plugin afin de décider
d'afficher X nombre de produits, les derniers produits rajoutés, etc ...
4/ autre chose ?
Cordialement,
_____
D.San
aujourd'hui j'ai dû afficher dans PluXml
les images des produits présents sur un site tournant sous Prestashop ( raz le bol de PS )
( elles sont affichées dans le footer genre "En direct de la boutique" )
Note: il y a un sous-domaine pour PluXml et un autre pour Prestashop ...
Avant toute chose:
je ne suis pas très fier de moi sur ce coup là,
appeler une base SQL dans du PluXml,
ça dénature le projet.
Mais avant qu'il y ait une version de PluXml en mode catalogue,
le client lui n'attend pas, alors bon
ps: les modos ont le droit de me taper dessus et me bannir pour la peine
Pour se faire:
1/ Créer un dossier dans plugins ( ex: import_ps )
2/ Créer un fichier produits.php dans lequel coller le code:
<?php
// Module récupérant TOUTES les images des produits présents dans la base de donnée de Prestashop
// PluXml et Prestashop présents sur un même nom de domaine principal
//
// Par DanielSan le 21.07.2011
// Déclaration des paramètres de connexion
$host = 'serveur';
$user = 'Utilisateur';
$bdd = 'Nom de la base';
$passwd = 'Mot de passe';
$url_shop = 'http://shop.mon-site.com/'; // url de la boutique
$img_attribut = 'home'; // attribut des images responsable de leur taille > home / large / etc ...
// Connexion au serveur
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
// lancement de la requête
// on lit la table 'ps_product_lang' comportant les infos sur l'id_produit, son nom, etc ...
// et on ne sélectionne que la ligne en français ( ps_product_lang.id_lang="2" )
// on lit la table 'ps_img' comportant les infos sur l'id_produit, l'id_image ...
// et on ne sélectionne que la ligne ou l'image est en défaut ( ps_image.cover="1" )
// on croise les 2 tables ( ps_product_lang.id_product = ps_image.id_product )
// pour ne sortir que l'image du produit nommé en français et qui a une image en défaut
$sql = '
SELECT ps_product_lang.id_product, ps_product_lang.link_rewrite, ps_product_lang.name, ps_image.id_image
FROM ps_product_lang, ps_image
WHERE ps_product_lang.id_lang="2" AND ps_image.cover="1"
AND ps_product_lang.id_product = ps_image.id_product
';
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
echo "<ul>\n";
// on va scanner toutes les lignes trouvées
// et les afficher sous forme de liste
while ($data = mysql_fetch_array($req)) {
// on affiche les résultats
echo "\t<li>\n";
echo "\t<a href=\"".$url_shop."product.php?id_product=".$data['id_product']."\" title=\"Voir ".$data['name']."\">\n";
echo "\t\t\t<img src=\"".$url_shop."img/p/".$data['id_image']."/".$data['id_image']."-".$img_attribut.".jpg\" alt=\"".$data['name']."\"><br>\n";
echo "\t</a>\n";
echo "\t\t\t".$data['name']."\n";
echo "\t</li>\n";
}
echo "</ul>\n";
mysql_free_result ($req);
mysql_close ();
?>
La suite se corse car j'y suis allé franco.A l'endroit où vous souhaitez insérer votre liste d'images,
mettez un beau
<?php include_once('plugins/import_ps/produits.php');?>
:PVous en pensez quoi ?
C'est la première fois que je dois aller interroger une base SQL,
j'ai découvert ça ce matin :cool:
Alors:
1/ s'il y en a qui font tourner un Prestashop en parallèle de PluXml,
ça donne quoi ? ça tourne aussi chez vous ?
2/ mon code est-il suffisamment sécurisé ?
3/ Existe-t-il une méthode plus jolie pour l'insertion dans le template ?
4/ quel moyen pour faire un plugin afin de décider
d'afficher X nombre de produits, les derniers produits rajoutés, etc ...
4/ autre chose ?
Cordialement,
_____
D.San
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
en revanche au debut de ton fichier vaut mieux mettre le code suivant, pour éviter d'appeler le code en direct sans passer par pluxml.
C'esdt mieux aussi de protéger ce que tu affiches à l'écran avec un htmlspecialchars
pour faire un plugin: guide du développeur
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Chouette un guide du dév., j'avais pas vu.
Merci.