Un pont avec Prestashop ...
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
0
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.
<?php if(!defined('PLX_ROOT')) exit; ?>C'esdt mieux aussi de protéger ce que tu affiches à l'écran avec un htmlspecialcharspour 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.