Jump to content

zamarley

Members
  • Posts

    11
  • Joined

  • Last visited

zamarley's Achievements

Newbie

Newbie (1/14)

0

Reputation

  1. Désole, s’était une erreur de chemin css, au lieu de mettre les règles dans themes/montheme/css/modules/homecategories.css j'ai fait un import @import url('grid.css'); qui a causé l'affichage, je ne sais pas pourquoi mais dès que je l'ai enlevé tout rentre dans l'ordre.
  2. Bonjour, J'ai voulu mettre sur le forum le module complet pour la communauté, par contre en testant un peu sur mon site, j'ai trouvé que lorsqu'on clique sur une catégorie aucun article apparait comme sur ce lien. Par contre lorsque je désactive le module tout semble normal. Ci-dessous le code complet de homecategories.php <?php class Homecategories extends Module { private $_html = ''; private $_postErrors = array(); function __construct() { $this->name = 'homecategories'; $this->tab = 'front_office_features'; $this->version = 1.1; $this->author = 'Ecommerce Forum'; parent::__construct(); // The parent construct is required for translations $this->page = basename(__FILE__, '.php'); $this->displayName = $this->l('Homepage Categories'); $this->description = $this->l('Displays categories in the middle of your homepage'); } function install() { return (parent::install() AND $this->registerHook('home') AND $this->registerHook('header')); } public function getContent() { $output = '<h2>'.$this->displayName.'</h2>'; if (Tools::isSubmit('submitHomecategories')) { $nbr = intval(Tools::getValue('nbr')); if (!$nbr OR $nbr <= 0 OR !Validate::isInt($nbr)) $errors[] = $this->l('Invalid number of categories'); else Configuration::updateValue('HOME_categories_NBR', $nbr); if (isset($errors) AND sizeof($errors)) $output .= $this->displayError(implode('<br />', $errors)); else $output .= $this->displayConfirmation($this->l('Settings updated')); } return $output.$this->displayForm(); } public function displayForm() { $output = ' <form action="'.$_SERVER['REQUEST_URI'].'" method="post"> <fieldset><legend><img src="'.$this->_path.'logo.gif" alt="" title="" />'.$this->l('Settings').'</legend> <label>'.$this->l('Number of categories displayed').'</label> <div class="margin-form"> <input type="text" size="5" name="nbr" value="'.Tools::getValue('nbr', Configuration::get('HOME_categories_NBR')).'" /> <p class="clear">'.$this->l('The number of catgeories displayed on homepage (default: 10)').'</p> </div> <center><input type="submit" name="submitHomecategories" value="'.$this->l('Save').'" class="button" /></center> </fieldset> </form>'; return $output; } public function hookHeader() { Tools::addCSS(($this->_path).'homecategories.css', 'all'); } function hookHome($params) { global $smarty, $cookie, $link; $id_customer = (int)$params['cookie']->id_customer; $id_group = $id_customer ? Customer::getDefaultGroupId($id_customer) : _PS_DEFAULT_CUSTOMER_GROUP_; $id_lang = (int)$params['cookie']->id_lang; $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' SELECT c.*, cl.*,MIN(p.`price`) AS price FROM `'._DB_PREFIX_.'category` c LEFT JOIN `'._DB_PREFIX_.'category_group` cg ON (cg.`id_category` = c.`id_category`) LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category` AND `id_lang` = '.$id_lang.') LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = c.`id_category`) LEFT JOIN `'._DB_PREFIX_.'product` p ON (cp.`id_product` = p.`id_product`) WHERE level_depth = 1 AND c.`active` = 1 AND cg.`id_group` = '.$id_group.' GROUP BY c.`id_category` ORDER BY c.`position` ASC'); $category = new Category(1); $nb = intval(Configuration::get('HOME_categories_NBR')); global $link; $smarty->assign(array( 'categories' => $result, Category::getHomeCategories(intval($params['cookie']->id_lang), true), 'link' => $link )); $smarty->assign(array( 'category' => $category, 'lang' => Language::getIsoById(intval($params['cookie']->id_lang)), )); return $this->display(__FILE__, 'homecategories.tpl'); } }
  3. Merci pour ton aide, pour smarty pas de problème, je pense que c'est résolu et je poste ici les fichiers pour d'autres personnes en espérant que cela les aide aussi.
  4. Là ça marche, par contre comment arrondir les prix car il affiche 6 chiffres après le virgule (ex : 25,098765)
  5. Le template <!-- MODULE Home categories --> <div class="home_categories"> <!--h2>{l s='Categories' mod='homecategories'}</h2--> {if isset($categories) AND $categories} <ul id="cadres" class="container_3"> {foreach from=$categories item=category name=homeCategories} {assign var='categoryLink' value=$link->getcategoryLink($category.id_category, $category.link_rewrite)} <li class="grid_1 ajax_block_category {if $smarty.foreach.homeCategories.first}first_item{elseif $smarty.foreach.homeCategories.last}last_item{else}item{/if}"> <div> <h2>{$category.name|truncate:35}</h2> <!--a href="{$categoryLink}" title="{$category.legend}" class="category_desc"> {$category.description} </a--> {$category.price} </div> </li> {/foreach} </ul> {else} <p>{l s='No categories' mod='homecategories'}</p> {/if} </div> <!-- /MODULE Home categories -->
  6. Effectivement j'ai manqué quelque chose, voici donc le bon code en suivant ton conseil : $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' SELECT c.*, cl.*, MIN(p.`price`) FROM `'._DB_PREFIX_.'category` c LEFT JOIN `'._DB_PREFIX_.'category_group` cg ON (cg.`id_category` = c.`id_category`) LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (cl.`id_category` = c.`id_category` AND cl.`id_lang` = 2) LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = c.`id_category`) LEFT JOIN `'._DB_PREFIX_.'product` p ON (cp.`id_product` = p.`id_product`) WHERE level_depth = 1 AND c.`active` = 1 AND cg.`id_group` = 1 GROUP BY c.`id_category` ORDER BY c.`position` ASC'); Par contre le prix ne s'affiche pas même en ajoutant {$category.price} dans la boucle foreach
  7. Merci encore, ci-dessous donc le report : j'ai remplacé la requette dans result ce qui donne : $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' SELECT c.*, cl.*, MIN(p.`price`) FROM `'._DB_PREFIX_.'category` c LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category` AND `id_lang` = '.$id_lang.') LEFT JOIN `'._DB_PREFIX_.'category_group` cg ON (cg.`id_category` = c.`id_category`) LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = c.`id_category`) LEFT JOIN `'._DB_PREFIX_.'product` p ON (cp.`id_product` = p.`id_product`) WHERE level_depth = 1 AND c.`active` = 1 AND cg.`id_group` = '.$id_group.' ORDER BY c.`position` ASC'); Par contre à l'affichage du site, il n'affiche qu'une seule catégorie , j'ai manqué quelque chose?
  8. Merci Sbizz, j'avoue que je ne suis pas développeur dans l'âme mais plutôt intégrateur, mais je suis débrouillard quand même, je suis nouveau sur prestashop et je ne connais pas encore la structure de la base de donnée, je vais tester ton code et je ferais un report ici après, juste une question débile, comment afficher le resultat dans le fichier template tpl du module (homecategories.tpl)? Merci encore
  9. Bonjour, Je voulais afficher les catégories de mes produits sur la home page, pour cela j'ai utilisé ce module qui marche parfaitement bien et qui m'affiche le titre de la catégorie ainsi que sa description. Maintenant je voudrais afficher le prix le plus bas dans chaque catégorie (du genre, à partir de 20 euros par exemple), j'ai déjà cherché l'astuce mais rien trouvé, j'ai même déjà tenté de voir la structure de la base de donnée de prestashop afin de trouver quel table on extrait les prix mais j'avoue que je suis totalement perdu. Est ce que quelqu'un peut me diriger? j'utilise la dernière version de prestashop et ci-dessous le code de homecategorie.php que j'utilise. <?php class Homecategories extends Module { private $_html = ''; private $_postErrors = array(); function __construct() { $this->name = 'homecategories'; $this->tab = 'front_office_features'; $this->version = 1.1; $this->author = 'Ecommerce Forum'; parent::__construct(); // The parent construct is required for translations $this->page = basename(__FILE__, '.php'); $this->displayName = $this->l('Homepage Categories'); $this->description = $this->l('Displays categories in the middle of your homepage'); } function install() { return (parent::install() AND $this->registerHook('home') AND $this->registerHook('header')); } public function getContent() { $output = '<h2>'.$this->displayName.'</h2>'; if (Tools::isSubmit('submitHomecategories')) { $nbr = intval(Tools::getValue('nbr')); if (!$nbr OR $nbr <= 0 OR !Validate::isInt($nbr)) $errors[] = $this->l('Invalid number of categories'); else Configuration::updateValue('HOME_categories_NBR', $nbr); if (isset($errors) AND sizeof($errors)) $output .= $this->displayError(implode('<br />', $errors)); else $output .= $this->displayConfirmation($this->l('Settings updated')); } return $output.$this->displayForm(); } public function displayForm() { $output = ' <form action="'.$_SERVER['REQUEST_URI'].'" method="post"> <fieldset><legend><img src="'.$this->_path.'logo.gif" alt="" title="" />'.$this->l('Settings').'</legend> <label>'.$this->l('Number of categories displayed').'</label> <div class="margin-form"> <input type="text" size="5" name="nbr" value="'.Tools::getValue('nbr', Configuration::get('HOME_categories_NBR')).'" /> <p class="clear">'.$this->l('The number of catgeories displayed on homepage (default: 10)').'</p> </div> <center><input type="submit" name="submitHomecategories" value="'.$this->l('Save').'" class="button" /></center> </fieldset> </form>'; return $output; } public function hookHeader() { Tools::addCSS(($this->_path).'homecategories.css', 'all'); } function hookHome($params) { global $smarty, $cookie, $link; $id_customer = (int)$params['cookie']->id_customer; $id_group = $id_customer ? Customer::getDefaultGroupId($id_customer) : _PS_DEFAULT_CUSTOMER_GROUP_; $id_lang = (int)$params['cookie']->id_lang; $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' SELECT c.*, cl.* FROM `'._DB_PREFIX_.'category` c LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category` AND `id_lang` = '.$id_lang.') LEFT JOIN `'._DB_PREFIX_.'category_group` cg ON (cg.`id_category` = c.`id_category`) WHERE level_depth = 1 AND c.`active` = 1 AND cg.`id_group` = '.$id_group.' ORDER BY c.`position` ASC'); $category = new Category(1); $nb = intval(Configuration::get('HOME_categories_NBR')); global $link; $smarty->assign(array( 'categories' => $result, Category::getHomeCategories(intval($params['cookie']->id_lang), true), 'link' => $link )); $smarty->assign(array( 'category' => $category, 'lang' => Language::getIsoById(intval($params['cookie']->id_lang)), )); return $this->display(__FILE__, 'homecategories.tpl'); } } Merci pour votre aide et je pense que cela aiderait aussi plus d'un.
×
×
  • Create New...