luconelucone Posted April 18, 2012 Share Posted April 18, 2012 Ciao a tutti! Ho provato a lavorare sul codice per cercare di creare un blocco a parte con le sottocategorie, ma con risultati deludenti!!! L'obbiettivo è quello di creare un menu orizzontale con le categorie principale, e un blocco sulla colona di sinistra contenete le sottocategorie Consigli? Grazie Link to comment Share on other sites More sharing options...
NemoPS Posted April 18, 2012 Share Posted April 18, 2012 Ciao, vuoi visualizzare le sottocategorie della categoria corrente, giusto? Se non ricordo male la classe category ha un metodo di nome getSubcategories... ma potrei essere in errore. In alternativa crei una chiamata al database tipo: $result = DB::getInstance()->ExecuteS(' SELECT c.id_category, cl.id_lang, cl.link_rewrite FROM category c LEFT JOIN category_lang cl ON (c.id_category = cl.id_category) WHERE c.id_parent = '.Tools::getValue('id_category').' '); Ovviamente id_category passato tramite get è meglio controllarlo per evitare sql injections. Link to comment Share on other sites More sharing options...
luconelucone Posted April 18, 2012 Author Share Posted April 18, 2012 Grazie della risposta! Io avevo pensato di modificare nel blockcategories.php la sezione public function getTree($resultParents, $resultIds, $maxDepth, $id_category = 1, $currentDepth = 0) assegnando a $id_category il valore della categoria visualizzata. In questo modo mi ricrea l'albero delle sole sottocategorie. Inserendo manualmente il valore funziona ma non riesco a trovare il modo di inserire il valore come variabile dinamica in modo che a seconda della categoria in cui sono (scelta attraverso il menu orizzontale) mi visualizzi le corrispondenti sottocategorie! Come potrei fare? Link to comment Share on other sites More sharing options...
luconelucone Posted April 18, 2012 Author Share Posted April 18, 2012 Oppure se interessasse a qualcuno ho trovato anche questa soluzione http://www.prestashop.com/forums/topic/48033-solved-categories/ solo che a me non sembra funzionare! Link to comment Share on other sites More sharing options...
NemoPS Posted April 19, 2012 Share Posted April 19, 2012 Ciao, se vuoi usare quella funzione chiamala così: $tree = $this->getTree($resultParents, $resultIds, $maxDepth, Tools::getValue('id_category')) $this presuppone che nel tuo blocco sia dichiarata la tua funzione getTree Magari è meglio se il valore di id_category lo controlli prima, come ho già detto, e poi invece di prenderlo direttamente da get lo assegni ad una variabile usando quella nella chiamata della funzione Link to comment Share on other sites More sharing options...
luconelucone Posted April 19, 2012 Author Share Posted April 19, 2012 Grazie ma poi mi sono reso conto che utilizzando quella funzione visualizzerei sempre le sottocategorie della categoria attiva, invece l'obbiettivo è quello di visualizzare sempre dal secondo livello in poi di ogni categoria! Quindi ho seguito la strada del link superiore, solo che non riesco a capire perchè arrivati al 3 livello scompaiono tutte le categorie! Il risultato dovrebbe essere così http://www.wowo.fr/ dove cliccando sul menu orizzontale si visualizzano le sottocategorie nel blocco sinistro, e nel mio caso si dovrebbero visualizzare anche le sotto-sottocategorie Link to comment Share on other sites More sharing options...
NemoPS Posted April 19, 2012 Share Posted April 19, 2012 Forse allora converrebbe cercare tutte le sottocategorie 8a tutti i livelli)= di una data categoria. Prova così (la funziona l'ho fatta io, la uso spesso): public static function getAllSubcategories($id_category){ $query = Db::getInstance()->getRow('SELECT nleft, nright FROM '._DB_PREFIX_.'category WHERE id_category ='.$id_category); $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' SELECT id_category FROM '._DB_PREFIX_.'category WHERE nleft > '.$query['nleft'].' AND nright <'.$query['nright']); $endstring = ''; foreach ($result as $value) { $endstring .= $value['id_category'] .','; } $endstring .= $id_category; return $endstring; } Ti da come risultato una stringa con tutte le sottocategorie. Se lo modifichi e gli togli la categoria base nel tuo caso è meglio Link to comment Share on other sites More sharing options...
luconelucone Posted April 19, 2012 Author Share Posted April 19, 2012 Sarà che non sono molto pratico di php ma non riesco ad andarne fuori! Ho provato 200 strade ma alla fine c'è sempre qualcosa che non va!! INCUBO!!! In teoria la cosa più semplice dovrebbe essere lavorare sul paramtro depth, perchè di fatto in questo blocco non devo far altro che visualizzare le varie sottocategorie (quindi con anche l'animazione etc) con la sola differenza che non devo vedere il primo livello (in quanto visualizzato sul menu orizzontale) ma solo i livelli successivi! Basterebbe visualizzare le categorie dal 2 livello ma non riesco a farlo!!! Ancora grazie per l'aiuto! Link to comment Share on other sites More sharing options...
luconelucone Posted April 19, 2012 Author Share Posted April 19, 2012 Ho trovato esempio che spiega meglio quello che vorrei fare http://saninforma.it/ cliccando sul menu in alto compaiono le sottocategorie a sinistra Essendo un sistema abbastanza diffuso ho cercato anche un modulo già fatto che faccia questa cosa ma stranamente non sono riuscito a trovarlo! Link to comment Share on other sites More sharing options...
luconelucone Posted April 20, 2012 Author Share Posted April 20, 2012 finalmente risolto!! {assign var='childSelected' value='0'} {foreach from=$node.children item=child} {if $child.id == $currentCategoryId}{assign var='childSelected' value='1'} {else}{foreach from=$child.children item=prov} {if $prov.id == $currentCategoryId}{assign var='childSelected' value='1'}{/if} {/foreach} {/if} {/foreach} {if $depth != 1 OR $node.id == $currentCategoryId OR $childSelected==1} modificato così il tpl dell'albero categorie! CIAO! 1 Link to comment Share on other sites More sharing options...
frankold Posted December 20, 2012 Share Posted December 20, 2012 finalmente risolto!! {assign var='childSelected' value='0'} {foreach from=$node.children item=child} {if $child.id == $currentCategoryId}{assign var='childSelected' value='1'} {else}{foreach from=$child.children item=prov} {if $prov.id == $currentCategoryId}{assign var='childSelected' value='1'}{/if} {/foreach} {/if} {/foreach} {if $depth != 1 OR $node.id == $currentCategoryId OR $childSelected==1} modificato così il tpl dell'albero categorie! CIAO! Perdonatemi ... ma avrei bisogno di capire i passaggi, potreste AIUTARMI. Grazie. 1 Link to comment Share on other sites More sharing options...
lexen Posted July 10, 2013 Share Posted July 10, 2013 Salve, potreste indicarmi come avete risolto? Sono anche io bloccato con questo problema. Grazie 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