Johannès Posted August 30, 2012 Share Posted August 30, 2012 Bonjour, Nouveau ici et nouveau sur prestashop, une amie me demande de créer une page boutique sur son site prestashop, sur laquelle il y aura la liste des catégories et l'image associée. Ne connaissant pas du tout prestashop, je cherche un peu comment faire... et je n'ai trouvé qu'une solution qui ne marche pas avec la version 1.4 (http://www.dsi94.com...-et-images.html) Parti du sitemap dans lequel il y a une arborescence des catégories et des sous catégories je suis arrivé à ce qui suit (parfaitement fonctionnel, mais très certainement mal codé) je sollicite votre aide pour - corriger mon code (pour simplifier, j'aurais aimé ne pas avoir de "category-list-branch.tpl" ) - permettre de mettre l'image par défaut lorque celle-ci n'existe pas (dans mon code si l'image de la catégorie n'existe pas il y a le nom de la catégorie dans le texte alternatif de l'image, balise alt) comme dans mon cas, j'ai une image à chaque catégorie, aucune gêne de mon côté. - partager le résultat ici Voici d'abord la liste des fichiers à créer À la racine du site : category-list.php Dans le dossier Controller : CategoryListController.php Dans le dossier theme : - category-list.tpl - category-list-branch.tpl - category-list.css Note : pour faciliter la lecture du code ici et uniquement pour ça, j'ai coupé la license et le disclaimer category-list.php : <?php /* * 2007-2012 PrestaShop * * NOTICE OF LICENSE * * DISCLAIMER */ include(dirname(__FILE__).'/config/config.inc.php'); ControllerFactory::getController('CategoryListController')->run(); CategoryListController.php : <?php /* * 2007-2012 PrestaShop * * NOTICE OF LICENSE * * DISCLAIMER */ class CategoryListControllerCore extends FrontController { public $php_self = 'category-list.php'; public function setMedia() { parent::setMedia(); Tools::addCSS(_THEME_CSS_DIR_.'category-list.css'); } public function process() { parent::process(); self::$smarty->assign('categoriesTree', Category::getRootCategory()->recurseLiteCategTree(0)); } public function displayContent() { parent::displayContent(); self::$smarty->display(_PS_THEME_DIR_.'category-list.tpl'); } } category-list.tpl {* * 2007-2011 PrestaShop * * NOTICE OF LICENSE * * DISCLAIMER *} {capture name=path}{l s='Boutique'}{/capture} {include file="$tpl_dir./breadcrumb.tpl"} <div id="category-list-content"> <div> <h3>{l s='Catégories'}</h3> <ul class="category-list"> {if isset($categoriesTree.children)} {foreach from=$categoriesTree.children item=child name=sitemapTree} {if $smarty.foreach.sitemapTree.last} {include file="$tpl_dir./category-list-branch.tpl" node=$child last='true'} {else} {include file="$tpl_dir./category-list-branch.tpl" node=$child} {/if} {/foreach} {/if} </ul> </div> </div> category-list-branch.tpl {* * 2007-2011 PrestaShop * * NOTICE OF LICENSE * * DISCLAIMER *} <li {if isset($last) && $last == 'true'}class="last"{/if}> <a href="{$node.link|escape:'htmlall':'UTF-8'}" {if isset($currentCategoryId) && $node.id == $currentCategoryId}class="selected"{/if} title="{$node.desc|escape:'htmlall':'UTF-8'}"> <img src="{$img_ps_dir}c/{$node.id}-medium.jpg" alt="{$node.name|escape:'htmlall':'UTF-8'}" /><br /><span>{$node.name|escape:'htmlall':'UTF-8'}</span></a> </li> category-list.css (mode minimum) /* category-list.tpl */ #category-list-content { margin-left: 5em; } #category-list-content h3 { text-align: center; } ul.category-list li { list-style-type: none; float: left; text-align: center; margin: 4px; padding: 4px; border: 1px solid #f8f8f8; border-radius: 5px; } ul.category-list a:link, ul.category-list a:visited { text-decoration: none; } ul.category-list a:hover { color: red; } ul.category-list li a span { } Link to comment Share on other sites More sharing options...
Johannès Posted August 31, 2012 Author Share Posted August 31, 2012 (edited) Personne n'est intéressé par un bouton avec un lien "Boutique" ? J'ai peut-être oublié de dire que la page était apellée par un lien http : lesite/category-list.php Edited August 31, 2012 by Johannès (see edit history) Link to comment Share on other sites More sharing options...
surflibre Posted September 8, 2012 Share Posted September 8, 2012 Salut, Si tu crée une catégorie parent "tout nos produits", et que tu classes tout dedans, ça va fonctionner, quand tu appelleras la catégorie "tout nos produits". Après il reste la possibilité d'appeler depuis un cms.tpl un fichier php {include_php file='themes/prestashop/categorie-list.php'} et faire ta requête sql le fichier categorie-list.php (activer php dans tools/smarty/Smarty.class.php mettre $allow_php_tag = true) : <?php echo '<div id="subcategories"><ul class="inline_list">'; $requete = mysql_query("SELECT * FROM ps_category_lang,ps_category where ps_category_lang.id_lang='2' and ps_category_lang.id_category=ps_category.id_category and ps_category.id_parent='1' "); while ($resultat = mysql_fetch_array($requete)){ echo '<li ><a href="/'.$resultat["id_category"].'-'.$resultat["link_rewrite"].'"><img alt="" src="http:/img/c/'.$resultat["id_category"].'-large.jpg" width="171"></a><br><div class="name_cat"><a href="/'.$resultat["id_category"].'-'.$resultat["link_rewrite"].'">'.$resultat["name"].'</a></div></li>'; } echo '</ul></div>'; ?> Sinon, je reconnais que c'est pas normal de pas avoir ce link de base (à demander sur une future release) Cordialement, 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