OlivierDar Posted July 29, 2009 Share Posted July 29, 2009 Bonjour à tous,Ca un petit moment que je planche sur ce problème mais c'est pas mon fort le php et le smarty et je tourne en rond.J'ai besoin de faire un test sur l'existence d'un fichier pour exécuter un bout de code.Explication : if (un fichier nommé ... existe){bla bla blamon bout de code}sinon{rien}Merci par avance pour votre aide. Link to comment Share on other sites More sharing options...
liandri Posted July 29, 2009 Share Posted July 29, 2009 bonjour <?php $filename = '/chemin/jusqu/a/fichier.txt'; if (file_exists($filename)) { print "Le fichier $filename existe"; } else { print "Le fichier $filename n'existe pas"; } ?> A+PS : Mettre le post en [Résolu] si c'est le cas Link to comment Share on other sites More sharing options...
OlivierDar Posted July 29, 2009 Author Share Posted July 29, 2009 Merci pour cette réponse. J'ai effectivement vu ce type de code mais je ne vois pas comment l'intégrer. Il faut peut etre que j'explique plus.Mon test est le suivant : if ( {$img_cat_dir}{$subcategory.id_image}-category.jpg existe) { affiche un bout de code pour faire du flash <object classid="clsi... </object>}Je ne vois pas comment intégré ce que tu m'as donné avec mon algo. Link to comment Share on other sites More sharing options...
Natsu Posted July 29, 2009 Share Posted July 29, 2009 Salut,Il faut tester en amont dans le php puis dans le fichier tpl faire un testSi ma_var == 1alors on affiche le flashsinon affiche ce que tu veux Link to comment Share on other sites More sharing options...
OlivierDar Posted July 29, 2009 Author Share Posted July 29, 2009 Oui mais est ce que j'ai le droit d'intégrer du smarty dans du php?Parce que j'aurai besoin de faire quelque chose du genre : <?php $filename = '{$img_cat_dir}{$subcategory.id_image}-category.jpg '; if (file_exists($filename)) { ma_var == 1; } else{ ma_var == 0; } ?> {if $ma_var== 1} flash... {/if} mais je suis pas sur que ca fonctionne super bien ou même que ca fonctionne tout cours... Link to comment Share on other sites More sharing options...
Natsu Posted July 29, 2009 Share Posted July 29, 2009 Non pas dans smarty directementIl faut que tu édites le fichier php qui appelle le fichier tpl (certainement category.php)Le mieux serai de nous dire où exactement tu souhaites effectuer cette manipulation Link to comment Share on other sites More sharing options...
OlivierDar Posted July 29, 2009 Author Share Posted July 29, 2009 C'est dans category.tpl. Au moment où il affiche les images des catégories. Ci-joint une image explicative.En gros, j'aimerai que si il y a une image appelée "nb_categorie"-category.jpg existe, on l'affiche.Sinon si elle n'existe pas mais que "nb_categorie"-category.swf existe, on l'affiche.Ca devrait se trouver à partir de là : getCategoryLink($subcategory.id_category, $subcategory.link_rewrite)|escape:'htmlall':'UTF-8'}" title="{$subcategory.name|escape:'htmlall':'UTF-8'}"> Link to comment Share on other sites More sharing options...
liandri Posted July 29, 2009 Share Posted July 29, 2009 avant de te donner le code que tu veux, peux-tu me dire déjà exactement ce que tu souhaites faire avec les résultats de cette condition, et aussi est-ce pour un code lié au backoffice ou est-ce un code pour le frontoffice tel qu'un module ?de plus, dans le code que je t'ai mis déjà je vois pas ce qu'on peut donner de plus :/les variables {$img_cat_dir} et {$subcategory.id_image} sont des définitions php avant d'être envoyées à smarty non ? Link to comment Share on other sites More sharing options...
Natsu Posted July 29, 2009 Share Posted July 29, 2009 Ok, je vois déjà mieux ce que tu veux faire, si j'ai un peu le temps je le ferai sauf si liandri le fait avant moi Link to comment Share on other sites More sharing options...
OlivierDar Posted July 29, 2009 Author Share Posted July 29, 2009 Pour répondre à ta question, c'est pour le front office.J'aimerai que ça affiche deux choses possible pour les images des catégories:. soit une image si elle existe. soit du flasch si il existe. sinon l'image par défaut.sachant que je vais récupérer mon nom d'image par {$img_cat_dir}{$subcategory.id_image}-category.jpg (je pense en tout cas).Et mon flash par {$img_cat_dir}{$subcategory.id_image}-category.swf Link to comment Share on other sites More sharing options...
liandri Posted July 29, 2009 Share Posted July 29, 2009 sachant que je vais récupérer mon nom d'image par {$img_cat_dir}{$subcategory.id_image}-category.jpg (je pense en tout cas).Et mon flash par {$img_cat_dir}{$subcategory.id_image}-category.swf je comprends bien mais si tu penses récupérer les valeurs chargées dans {$img_cat_dir} et {$subcategory.id_image} c'est que tu les as justement déjà chargée de le php avec un $smarty->assign() ! D'ailleur c'est déjà chargé par le système ces variables !donc il n'y a pas l'utilité de faire un retour de variable smarty pour l'utiliser en php ! Ca ne marche pas comme ça ! C'est le php qui charge les données afin qu'ensuite smarty les exploite, et pas l'inverse !De plus que ce soit variable php ou smarty, pourquoi souhaites-tu mettre en variable le chemin du fichier justement ! Si c'est fixe et que tu n'y touches pas, pourquoi ne pas l'intégrer directement en php, sans vouloir récupérer ces mêmes valeurs dans smarty ! Elles ne serviront à rien puisque la condition est déjà passée sur php ! Link to comment Share on other sites More sharing options...
Natsu Posted July 29, 2009 Share Posted July 29, 2009 Salut,Je pense que le plus simple est de faire le teste directement dans le fonction getSubCategories qui se trouve dans le fichier classes/Category.php (ligne 319)Tu dois trouver ceci: $row['id_image'] = (file_exists(_PS_CAT_IMG_DIR_.$row['id_category'].'.jpg')) ? $row['id_category'] : Language::getIsoById($cookie->id_lang).'-default'; Attention je tournes sur 1.2.0.7 Link to comment Share on other sites More sharing options...
OlivierDar Posted July 29, 2009 Author Share Posted July 29, 2009 Je ne suis pas bien familiarisé avec le smarty.J'ai cité dans mes précédent post {$img_cat_dir} et {$subcategory.id_image} car, j'ai vu dans les fichier tpl que ca servait à trouver le chemin des images. Mais derrière, je ne savais pas comment ca fonctionnait effectivement.Vous avez vu mon besoin :J’aimerai que ça affiche deux choses possible pour les images des catégories:. soit une image si elle existe. soit du flasch si il existe. sinon l’image par défaut.Je suis ouvert à toute proposition.je tourne en Version 1.1.0.5 Link to comment Share on other sites More sharing options...
OlivierDar Posted July 29, 2009 Author Share Posted July 29, 2009 La je m'aventure dans des choses que je ne connais pas vraiment.Je vois du $row['id_image'] et $row['name'], donc j'imagine qu'on doit pouvoir faire quelque chose avec ca du type $row['name_swt'].Mais tout ceci est un monde obscure pour moi. Link to comment Share on other sites More sharing options...
Natsu Posted July 29, 2009 Share Posted July 29, 2009 Le $row est seulement le résultat de la requête SQL qui est juste au dessus, on est bien loin de smarty là c'est du php pur...C'est à ce niveau là (file_exists(_PS_CAT_IMG_DIR_.$row['id_category'].'.jpg')) ? $row['id_category'] : Language::getIsoById($cookie->id_lang).'-default'; enfin en même temps il est possible que ça ne soit pas le même code entre la 1.1.0.5 et la 1.2.0.7.. Link to comment Share on other sites More sharing options...
liandri Posted July 29, 2009 Share Posted July 29, 2009 Mais tout ceci est un monde obscure pour moi. C'est pour ça qu'avant de réellement proposer des solutions et des modifications de codes, il nous faut savoir l'objectif et surtout tous les éléments qui mènent à la réponse !Donc moi je vois bien ce que tu comptes faire, maintenant faut que tu me dises exactement où tu souhaites faire afficher soit l'image, soit le flash, soit l'image par défaut. Et aussi où sont situer les images, et le flash avec le chemin et les noms des fichiers exacts ? Link to comment Share on other sites More sharing options...
OlivierDar Posted July 29, 2009 Author Share Posted July 29, 2009 Comme toujours une bonne image est toujours plus clair.Comme vous voyez, on se trouve dans une catégorie.Je souhaite donc mettre à l'endroit des images : . soit conserver une image si elle existe. soit mettre un swf si il existe. sinon defautMes images de catégories sont par défaut dans img/c/.Mes sources sont formées de la manière suivant :(numéro-categorie)-categories.jpgex : 10-categories.jpgou(numéro-categorie)-categories.swfex : 22-categories.swf Link to comment Share on other sites More sharing options...
liandri Posted July 29, 2009 Share Posted July 29, 2009 comment fais-tu pour uploader les flashs ? car depuis l'admin c'est que des types images.Tu les up directement dans le répertoire ? Link to comment Share on other sites More sharing options...
OlivierDar Posted July 29, 2009 Author Share Posted July 29, 2009 Je les mes effectivement directement dans le répertoire. Link to comment Share on other sites More sharing options...
liandri Posted July 29, 2009 Share Posted July 29, 2009 as-tu pensé aussi qu'il y a sur la présentation d'une catégorie :d'une part l'affichage, si elle existe de l'image taille normale de la catégorie en coursd'autre part l'affichage, si elles existent des image taille réduite de 'sous-catégories' listées dans la catégorie en cours.Ce qui signifie que si c'est un flash, il faudra afficher le flash une fois dans la catégorie en cours, mais aussi en sous catégories. Seulement la taille de ton flash doit quand même prendre en compte au moins celle de la taille des sous-catégories de manière à ne pas fausser l'affichage !N'est-ce pas ? Link to comment Share on other sites More sharing options...
OlivierDar Posted July 29, 2009 Author Share Posted July 29, 2009 Je pense voir de quoi tu parles. Sur cette partie, j'ai différencié les deux images comme on peut voir sur l'image jointe.Il y a une petite image pour l'aperçu des différentes catégories et une image pour cette du bandeau.Mais effectivement le bout de code peut être mis dans les deux parties.C'est à dire mettre une image ou un flash pour le bandeau et l'aperçu catégorie.Par exemple : 23-category.jpg ou 23-category.swf ou defautet 23-category-top.jpg ou 23-category-top.swf Link to comment Share on other sites More sharing options...
liandri Posted July 29, 2009 Share Posted July 29, 2009 oui mais dans le principe, si tu choisies un flash pour la catégorie, ce flash devra être affiché aussi bien sur la catégorie en elle même que lorsqu'elle sera listé dans sa catégorie parentet c'est fonctionnel pour les images car l'algo prévoit un resize des images, une normale pour la catégorie quand on est dedans, et une plus petite pour cette même catégorie quand elle est listéeEst-ce que tu souhaites aussi mettre des animations flash dans la présentation de la catégorie (ce qui s'apparente à ton bandeau en fait) Link to comment Share on other sites More sharing options...
OlivierDar Posted July 29, 2009 Author Share Posted July 29, 2009 Je ne suis pas sur de comprendre ce que tu cherches à pointer.Actuellement, ce que j'ai fait fonctionne correctement. Cf joint.J'aimerai "juste" changer les aperçu par des swf qui portent le même nom que les jpg si ils existent.Des fois le juste peut etre plus compliqué que prévu (ou pas des fois). Link to comment Share on other sites More sharing options...
liandri Posted July 29, 2009 Share Posted July 29, 2009 Peux-tu me donner la partie de ton code qui permet de t'afficher ton flash stp ! <object ...>...</object> Link to comment Share on other sites More sharing options...
OlivierDar Posted July 29, 2009 Author Share Posted July 29, 2009 Par exemple ceci : <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="128" height="128"> <embed src="---mettre le bon nom----.swff" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="128" height="128"> </embed> </object> Link to comment Share on other sites More sharing options...
liandri Posted July 29, 2009 Share Posted July 29, 2009 Bon, voici le code à changer ! Par contre dès lors que tu modifies la classe Category.php, pense que si tu fais une mise à jour de prestashop, tout va se supprimer, si Category.php devait être modifier. Donc note la manipulation pour la refaire au cas où !édite le fichier /classes/Category.phpdans la fonction : public function getSubCategories($id_lang, $active = true) à la ligne 337 environ, remplace : $row['legend'] = 'no picture'; $resultsArray[] = $row; } return $resultsArray; par le code suivant : if (file_exists(_PS_CAT_IMG_DIR_.$row['id_category'].'-category.swf')) $row['id_flash'] = $row['id_category']; $row['legend'] = 'no picture'; $resultsArray[] = $row; } return $resultsArray; cet ajout de code prend en compte que tes flashs sont de la forme : [id_category]-category.swfsi ce n'est pas le cas change dans la ligne if (file_exists(_PS_CAT_IMG_DIR_.$row['id_category'].'-category.swf')) $row['id_flash'] = $row['id_category']; ensuite edite le fichier tpl de ton thème : /themes/ton_theme/category.tplet remplace , ligne 37 environ : par : {if $subcategory.id_flash} <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="128" height="128"> <embed src="{$img_cat_dir}{$subcategory.id_flash}-category.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="128" height="128"></embed> </object> {else} {/if} Link to comment Share on other sites More sharing options...
OlivierDar Posted July 29, 2009 Author Share Posted July 29, 2009 Chapeau bas l'artiste. :wow: Au cours de cette discussion tu as mis le doigt sur une idée intéressant que je vais essayer de mettre en place avec ce que tu m'as proposé. C'est à dire de faire la même chose pour les bandeau pour les animer. Comme ca si j'ai le temps de les animer y aura un swf sinon on gardera l'image.Un grand merci pour toute l'aide fourni.Merci beaucoup, Link to comment Share on other sites More sharing options...
liandri Posted July 29, 2009 Share Posted July 29, 2009 Y'a pas de problème ! J'aurai fait la même chose pour m'aide moi même ! LLLLOOLLLA+ et bonne continuation Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now