Jump to content

Visualizzare categorie padre da una sottocategoria


Stiffa78

Recommended Posts

Ciao a tutti.

Ho veramente cercato ovunque.....ho anche trovato tante spiegazioni...tutte in inglese....ma provando non riesco proprio a fare quello che vorrei.

 

Il mio scopo e' di visualizzare nella pagina category.tpl, al posto delle sole subcategory, anche le altre categorie padre.

 

Nel file category.tpl troviamo 

 {if isset($subcategories)}
		<!-- Subcategories -->
		

        
        <div id="subcategories">
			<h3>{l s='Subcategories'}</h3>
			<ul class="inline_list">
			{foreach from=$subcategories item=subcategory}
           
				<li class="clearfix">
					<a href="{$link->getCategoryLink($subcategory.id_category, $subcategory.link_rewrite)|escape:'htmlall':'UTF-8'}" title="{$subcategory.name|escape:'htmlall':'UTF-8'}" class="img">
						{if $subcategory.id_image}
							<img src="{$link->getCatImageLink($subcategory.link_rewrite, $subcategory.id_image, 'medium_default')}" alt="" width="{$mediumSize.width}" height="{$mediumSize.height}" />
						{else}
							<img src="{$img_cat_dir}default-medium_default.jpg" alt="" width="{$mediumSize.width}" height="{$mediumSize.height}" />
						{/if}
					</a>
					<a href="{$link->getCategoryLink($subcategory.id_category, $subcategory.link_rewrite)|escape:'htmlall':'UTF-8'}" class="cat_name">{$subcategory.name|escape:'htmlall':'UTF-8'}</a>
					{if $subcategory.description}
						<!--<p class="cat_desc">{$subcategory.description}</p>-->
					{/if}
				</li>
			{/foreach}
			</ul>
			<br class="clear"/>
		</div>
		{/if}

Questo codice ci fa vedere tutte le immagini e il nome delle subcategories. 

Perfetto. Ma se clicco su una sottocategoria che non ha piu subcategories, ma solo prodotti, non viene visualizzato nulla. 

Io vorrei mi facesse vedere tutte le altre subcategories  della stessa radice.

 

Meglio con un esempio : 

 

Categoria A

           |_ cat B

           |_ cat C

           |_ cat D

 

 Se clicco cat C vorrei comunque vedere catB e catD .

 

Spero di essere stato chiaro.

Su internet, girando parlavano di fare override di CategoryController....ma poi non so come comportarmi nel file category.tpl...

 

qualcuno mi aiuta?

 

Grazie, spero di essere stato chiaro

Edited by Stiffa78 (see edit history)
Link to comment
Share on other sites

Io sulla 1.6 ho risolto così  :)

 

Creare un file chiamato CategoryController.php in /override/controllers/front/ con all'interno questo codice:

<?php

class CategoryController extends CategoryControllerCore
{
    public function initContent()
    {
        // Get the global smarty object.
        global $smarty;

        // Get current category's parent.
        $parent_category = new Category($this->category->id_parent, self::$cookie->id_lang);

        // Get parent category's subcategories (which is current category's siblings, including it self).
        $category_siblings = $parent_category->getSubCategories((int)self::$cookie->id_lang);

        /* Assign your siblings array to smarty. */
        $smarty->assign(
            array(
                "category_siblings" => $category_siblings
            )
        );

        /* This we run the normal displayContent, but pass the siblings array to
           category.tpl */
        parent::initContent();
    }
}

?>

In category.tpl inserisci questo alla chiusura dell'if di {if isset($subcategories)}  (o anche prima, dovrebbe essere indifferente): 

        {if isset($category_siblings) && !isset($subcategories)}
        <div id="subcategories">
            <p class="subcategory-heading">{l s='Subcategories'}</p>
            <ul class="clearfix">
            {foreach from=$category_siblings item=subcategory}
                <li>
                    <div class="subcategory-image">
                        <a href="{$link->getCategoryLink($subcategory.id_category, $subcategory.link_rewrite)|escape:'html':'UTF-8'}" title="{$subcategory.name|escape:'html':'UTF-8'}" class="img">
                        {if $subcategory.id_image}
                            <img class="replace-2x" src="{$link->getCatImageLink($subcategory.link_rewrite, $subcategory.id_image, 'cat_small')|escape:'html':'UTF-8'}" alt="" width="{$mediumSize.width}" height="{$mediumSize.height}" />
                        {else}
                            <img class="replace-2x" src="{$img_cat_dir}default-medium_default.jpg" alt="" width="{$mediumSize.width}" height="{$mediumSize.height}" />
                        {/if}
                    </a>
                    <a class="subcategory-name" href="{$link->getCategoryLink($subcategory.id_category, $subcategory.link_rewrite)|escape:'html':'UTF-8'}">{$subcategory.name|truncate:25:'...'|escape:'html':'UTF-8'|truncate:350}</a>
                                        
                    </div>

                    {if $subcategory.description}
                        <div class="cat_desc">{$subcategory.description}</div>
                    {/if}
                </li>
            {/foreach}
            </ul>
        </div>
        {/if}

In pratica vai a copiare il ciclo che già viene fatto se esistono subcategories ma con la nuova variabile che abbiamo creato con l'override.

 

A questo punto carica i due file e controlla se vedi le modifiche.
Se non le vedi cancella il file /cache/class_index.php (oppure svuota la cache dall'admin).

A me funziona ;-)

Edited by fatum (see edit history)
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...