Jump to content

Page boutique Prestashop avec liste des catégories


Recommended Posts

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

  • 2 weeks later...

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...