Aide - Recherche - Membres - Calendrier
Version complète : Répertoire des photos de produits
Forum osCommerce-fr > Les Bases d'OsCommerce MS2 > Fonctionnement
Solutions Center
Savez-vous comment changer le répertoire de destination des images des photos ?

Pour l'instant toutes les photos des produits sont directement dans le répertoire ...catalog/images/

Je souhaite ajouter un répertoire ...catalog/images/produits/

Merci d'avance
shoprun
Salut
J'y vois 2 manières différentes de faire cela.
Soit conserver uniquement le nom de la photo dans la base comme cela ce fait d'origine.
Le nom est sous la forme -> ma_photo.jpg
Ceci implique de créer quelque define supplémentaires + y faire les modifs partout dans le code (catalog et admin).

Soit de rajouter le nom du répertoire suivi de la photo.
Ceci implique moins de modifs. Uniquement coté admin.
Le nom est sous la forme -> repertoire_photo/ma_photo.jpg

Pour le cas 2 :

En rajoutant une constantes dans ton configure.php de l'admin, ça devrait le faire.
Un truc du genre :
CODE
define('DIR_FS_CATALOG_PRODUITS', DIR_FS_CATALOG_IMAGES.'produits/');

(Ou sinon le mettre en dur dans le code).
Tout cela dans le categories.php dans la partie update_product.
Aussi, lors de l'insertion dans la base, ajouter aussi la partie : 'produits/'.$HTTP_POST_VARS['products_image'];

En faite, le nom de l'image sera du genre : produits/le_nom_du produit.jpg
De cette manière, en faisant 2 modifs du coté admin tout devrait fonctionner.


Ceci dit, tu peux rechercher du coté des contributions, ils y a pas mal de solutions plus ou moins évoluées permettant de faire ce que tu souhaite.


cool.gif
ti yoggy
Merci bien, ça marche nickel

Par contre j'ai mis uniquement

define('DIR_FS_CATALOG_PRODUITS', 'produits/');

dans le configure.php
ti yoggy
... en fait ça marche pas totalement parce que à chaque fois que je modifie une fiche produit il concatène DIR_FS_CATALOG_PRODUITS (mon répertoire produits/) au champ product_image.

Après quelques modifications d'un produit, j'ai produits/produits/produits/image.jpg (par exemple) dans ma base de données donc plus d'image affichée.

Dans le catégorie.php il faudrait arriver à coller une condition qui rajoute DIR_FS_CATALOG_PRODUITS seulement si y'a une modification de l'image mais pas d'une autre info du produit


Extrait de catégorie.php
...
if (isset($HTTP_POST_VARS['products_image']) && tep_not_null($HTTP_POST_VARS['products_image']) && ($HTTP_POST_VARS['products_image'] != 'none')) {
$sql_data_array['products_image'] = DIR_FS_CATALOG_PRODUITS.tep_db_prepare_input($HTTP_POST_VARS['products_image']);
}
...
ti yoggy
Ca fonctionne avec une condition supplémentaire pour tester si le répertoire des produits est déjà dans le champ ou non.

Voici les modifs à faire dans catalog/admin/categories.php

ligne 255
// --------------
if (isset($HTTP_POST_VARS['products_image']) && tep_not_null($HTTP_POST_VARS['products_image']) && ($HTTP_POST_VARS['products_image'] != 'none') && ($HTTP_POST_VARS['products_image'] != ''))
{
if (ereg("^".DIR_FS_CATALOG_PRODUITS,$HTTP_POST_VARS['products_image']))
{
$sql_data_array['products_image'] = tep_db_prepare_input($HTTP_POST_VARS['products_image']);
}
else
{
$sql_data_array['products_image'] = DIR_FS_CATALOG_PRODUITS.tep_db_prepare_input($HTTP_POST_VARS['products_image']);
}
}
// ---------------

ligne 365
// --------------
//$products_image->set_destination(DIR_FS_CATALOG_IMAGES);
$products_image->set_destination(DIR_FS_CATALOG_IMAGES.DIR_FS_CATALOG_PRODUITS);
// --------------
shoprun
Salut

Sorry, mais effectivement il y avait certainement des petits remaniement à faire.

Cependant, il me semble avoir rencontré quelques soucis aussi sur le teste de l'existant ou non de la photo.
Je n'ai pas adopté le même contrôle que tu fais.

En premier j'ai remplacé la syntaxe sur les méthode 'post', 'get', ..... de l'intégralité de mon osC :
$HTTP_GET_VARS -> $_GET
$HTTP_POST_VARS -> $_POST

Puis pour le test j'effectue celui-ci :
CODE
if (tep_not_null($_FILES['products_image']['name'])) {
...
...
}


Si les test que tu effectue te semble correcte, ne chanhe rien, mais il me semble que vu le champ de la photo est du type 'file', la méthode devrait êtes du type $HTTP_POST_FILES, et celle si est un tableau en 2 dimensions :
$HTTP_POST_FILES['products_image']['name']
$HTTP_POST_FILES['products_image']['type']
$HTTP_POST_FILES['products_image']['size']
$HTTP_POST_FILES['products_image']['tmp_name']


Puis, sans compter que pour éviter je ne sais quoi lors des modifs des produits, j'ai rajouter une case à cochée 'upload', donc si cochée je procède au téléchargement de la photo du produit.

Ceci dit, mon truc est encore assez différent, car je permet de classer mes photos par catégories :
/photos/cat1/sous-cat1/le_produit.jpg
Sans compter qu'au total je crée 3 photos : petite, moyenne, grande
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2013 Invision Power Services, Inc.