problème double url image

espritlogis2
Invité n'ayant pas de compte PHPfrance

01 févr. 2012, 17:01

Bonjour,

Je cherche à exporter les produits de mon site pour les mettre sur un comparateur de prix. Pour celà, j'ai un fichier php qui va chercher les infos nécessaires et qui me crée mon catalogue en xml. Mon problème est que lorsque le catalogue xml s'affiche, au niveau de l'url de mon image, il y a 2 fois le nom de mon site et du coup l'url ne fonctionne pas.

Voici par exemple une url telle qu'elle s'affiche :

http://www.espritlogis.frhttp://www.esp ... cerise.jpg

il y a un "http://www.espritlogis.fr" en trop. Pour voir le résultat de ce fichier xml, vous pouvez cliquer sur le lien suivant :

http://www.espritlogis.fr/modules/lexpo ... mat=twenga

Le fichier export.php contient les éléments suivants :

<?php

// Vérification de la variable FORMAT
$formats = array('leguide', 'kelkoo_xml', 'achetezfacile', 'shopping', 'google', 'shoppydoo', 'infoprix', 'letsbuyit', 'twenga', 'shopmania');
if(isset($_GET['format']) && in_array($_GET['format'], $formats)) {

//////////////////////////////////////////////////////////
// Exports de catalogue Universel //
//////////////////////////////////////////////////////////

// Classes //
include_once('../../config/config.inc.php');
include_once('../../init.php');
include_once('inc/html2text.inc.php');
include_once('inc/functions.php');

// Variables
$output = ""; // Affichage de sortie
$ps_ = ""; // Entete noms tables
$mes_ids = array(); // Tableau contenant tous les ID produits
$url_site = $_SERVER['HTTP_HOST']; // Url du site base Serveur
$format = $_GET['format']; // Format export
$cat_check = explode("-",Configuration::get('CATEGORIES_LEXPORT')); // Catégories selectionnées
$site_name = Configuration::get('PS_SHOP_NAME'); // Nom du site
$frais_port = Configuration::get('FRAIS_DE_PORT'); // Frais de port
$delai_livraison = Configuration::get('DELAI_LIVRAISON'); // Délai de livraison
if($format!="leguide") $delai_livraison = "Sous ".$delai_livraison." jours"; // En jours
$garantie = Configuration::get('GARANTIE'); // Garantie produit

// URL Utiles
$fichier = _PS_BASE_URL_._MODULE_DIR_.'lexport/formats/'.$format.'.php'; //Serveur
$file = _PS_ROOT_DIR_._MODULE_DIR_.'lexport/formats/'.$format.'.php'; //Absolue
$file_head = _PS_ROOT_DIR_._MODULE_DIR_.'lexport/entetes/'.$format.'.php'; //Absolue (En-tête)

// Nom fichier plus propre
$site_name = str_replace(' ','_',$site_name);
$site_name = str_replace('é','e',$site_name);
$site_name = str_replace('è','e',$site_name);

// Sélection des articles
try
{
$categories = $cat_check; //On assigne les catégories selectionnees pour la boucle sur les produits
$product_num = 0;
foreach($categories as $category)
{
$cat = new Category(intval($category), intval($cookie->id_lang));
$products = $cat->getProducts($cookie->id_lang, 1, 10000, 'price', 'ASC');
if($products){
foreach($products as $product)
{
// Informations générales selon article de base
$id_product = $product['id_product'];

// Si l'id est deja inséré
if(in_array($id_product, $mes_ids))
continue;
array_push($mes_ids,$id_product);

// Descriptions avec nettoyage du texte
$nom_produit =& new html2text($product['name']);
$nom_produit = trim(str_replace(CHR(10),"",$nom_produit->get_text()));
$nom_produit = str_replace(CHR(9),"",$nom_produit);

$desc_produit =& new html2text($product['description']);
$desc_produit = trim(str_replace(CHR(10),"",$desc_produit->get_text()));
$desc_produit = str_replace(CHR(9),"",$desc_produit);

$desc_short =& new html2text($product['description_short']);
$desc_short = trim(str_replace(CHR(10),"",$desc_short->get_text()));
$desc_short = str_replace(CHR(9),"",$desc_short);

$cat_id = $product['id_category_default'];
$weight = $product['weight'];
$price = $product['price'];
$price_s_tva = $product['price'];
$price_s_red = $product['price'];
$ean13 = $product['ean13'];
$reference = $product['reference'];
$link_rewrite = $product['link_rewrite'];
$id_manufacturer = $product['id_manufacturer'];
$ecotax = $product['ecotax'];
$id_tax = $product['id_tax'];
$reduction_percent = $product['reduction_percent'];
$reduction_price = $product['reduction_price'];
$supplier_reference = $product['supplier_reference'];
$id_supplier = $product['id_supplier'];
$date_reduction_s = $product['reduction_from'];
$date_reduction_e = $product['reduction_to'];
$quantite = $product['quantity'];

//Nom constructeur
$fabricant = $product['manufacturer_name'];

//Nom catégorie en cours
$cat_name = Category::hideCategoryPosition(f_category_name($category,$cookie->id_lang,$ps_));

//Nom catégorie parent
$objet_cat = new Category($category);
$parent = $objet_cat->getParentsCategories();
krsort($parent);
$cat_parent = '';
foreach($parent as $par) {
$cat_parent .= f_category_name($par['id_parent'],$cookie->id_lang,$ps_). ' > ';
}
//Prix TTC
$price_ttc = number_format($product['price'],2,'.','');

//Prix apres reduction
$price_reduce = $price_ttc;
//$price_reduce = number_format(($price_ttc-$reduction_price),2,'.','');

//URL complete produit
$url_produit = $product['link'];

//URL image produit
$url = new Link($id_product);
$url_image = _PS_BASE_URL_.$url->getImageLink($product,$product['id_image'], 'large');

//Variables changeantes selon le comparateur
switch($format) {
case "leguide" :
$disponibilite = 0;
$garantie = ceil($garantie/12);
break;

case "kelkoo_txt" :
$disponibilite = "001";
break;

default :
$disponibilite = "En stock";
$garantie = Configuration::get('GARANTIE')." mois";
}

//Condition du produit
$condition = ($format=="leguide") ? 0 : "Neuf";

// $sale détermine l'état d'une promotion : 0->Rien,1->solde,2->autre promotions
if ($reduction_percent != 0) $sale = 2;
else $sale = 0;

//Numéro de produit incrémenté
$product_num++;
include($file);
}
}
}
}

catch (Erreur $e){
echo $e -> RetourneErreur('Impossible de sélectionner les id_product');
}

//Entetes des fichiers
include($file_head);

// Affichage des données
$content = $head.$output.$foot;
echo $content;

} //Fin vérification sur FORMAT
else {
echo '<Nodata>Aucun format choisi.</Nodata>';
}

?>


Quand au fichier de format, il contient les éléments suivants :

<?php

$output .= ' <product>'.chr(10);

$output .= ' <product_url><![CDATA['.$url_produit.']]></product_url>'.chr(10);
$output .= ' <designation><![CDATA['.$nom_produit.' '.$fabricant.']]></designation>'.chr(10);
$output .= ' <price><![CDATA['.$price_ttc.']]></price>'.chr(10);
$output .= ' <category><![CDATA['.$cat_parent.$cat_name.']]></category>'.chr(10);
$output .= ' <image_url><![CDATA['.$url_image.']]></image_url>'.chr(10);
$output .= ' <description><![CDATA['.$desc_produit.']]></description>'.chr(10);

$output .= ' <brand><![CDATA['.$fabricant.']]></brand>'.chr(10);
$output .= ' <shipping_cost><![CDATA['.$frais_port.']]></shipping_cost>'.chr(10);
$output .= ' <in_stock>Y</in_stock>'.chr(10);
$output .= ' <condition>0</condition>'.chr(10);
$output .= ' <upc_ean>'.$ean13.'</upc_ean>'.chr(10);

$output .= ' </product>'.chr(10);

?>


Si quelqu'un pouvait m'aider, ça sera vraiment très chouette.

En attente d'une réponse, merci d'avance.

Eléphant du PHP | 209 Messages

01 févr. 2012, 17:24

Salut,

Ca fait quoi si ligne 118 tu vires ton _PS_BASE_URL_ ?

++

espritlogis2
Invité n'ayant pas de compte PHPfrance

01 févr. 2012, 20:31

Ca m'affiche plein de Y et de 0