Jump to content

Separare blocco sottocategorie


Recommended Posts

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

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

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

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

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

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

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

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!

  • Like 1
Link to comment
Share on other sites

  • 8 months later...

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.

  • Like 1
Link to comment
Share on other sites

  • 6 months later...

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...