How to order categories in vertnav (e.g. modern template)

Last modified by amartinez on Thu, June 24, 2010 17:08
Source|Old Revisions  

Easier that before (How to order categories in top navigation) ;-)

My app/design/frontend/default/default/template/vertnav/left.phtml:

<?php
/**
 * Magento
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Academic Free License (AFL 3.0)
 * that is bundled with this package in the file LICENSE_AFL.txt.
 * It is also available through the world-wide-web at this URL:
 * http://opensource.org/licenses/afl-3.0.php
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@magentocommerce.com so we can send you a copy immediately.
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade Magento to newer
 * versions in the future. If you wish to customize Magento for your
 * needs please refer to http://www.magentocommerce.com for more information.
 *
 * @category   design_default
 * @package    RicoNeitzel
 * @copyright  Copyright (c) 2009 Vinai Kopp http//netzarbeiter.com/
 * @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
 */
?>
<?php 
/**
 * Left menu for store
 *
 * @see RicoNeitzel_VertNav_Block_Navgation
 * @see Mage_Catalog_Block_Navigation
 */
?>
<div class="box base-mini">
    <div class="head">
        <h4 class="title"><?php echo $this->__('Categories') ?></h4>
    </div>
    <div class="content">
        <ul id="vertnav">
<?php $store_categories = $this->toLinearArray($this->getStoreCategories()); ?>
<?php
function ordena_categorias(&$array, $subkey="id", $sort_ascending=true) {
    if (count($array))
        $temp_array[key($array)] = array_shift($array);
    foreach($array as $key => $val){
        $offset = 0;
        $found = false;
        foreach($temp_array as $tmp_key => $tmp_val) {
            if(!$found and strtolower($val[$subkey]) > strtolower($tmp_val[$subkey])) {
                $temp_array = array_merge((array)array_slice($temp_array,0,$offset), array($key => $val), array_slice($temp_array,$offset));
                $found = true;
            }
            $offset++;
        }
        if(!$found)
            $temp_array = array_merge($temp_array, array($key => $val));
    }
    if ($sort_ascending)
        $array = array_reverse($temp_array);
    else
        $array = $temp_array;
}
ordena_categorias($store_categories, "name");
?>
<?php $count = count($store_categories) ?>
<?php foreach ($store_categories as $i => $_category): ?>
<?php $class = array() ?>
<?php if ($count == 1): ?>
<?php $class[] = 'only' ?>
<?php elseif (! $i): ?>
<?php $class[] = 'first' ?>
<?php elseif ($i == $count-1): ?>
<?php $class[] = 'last' ?>
<?php endif; ?>
<?php if (isset($store_categories[$i+1]) && $this->isCategoryActive($store_categories[$i+1])) $class[] = 'prev'; ?>
<?php if (isset($store_categories[$i-1]) && $this->isCategoryActive($store_categories[$i-1])) $class[] = 'next'; ?>
<?php echo $this->drawOpenCategoryItem($_category, 0, $class) ?>
<?php endforeach ?>
        </ul>
    </div>
</div>

I hope it helps

amartinez

amartinez [at] reinizia [dot] com




 

Magento 2 GitHub Repository

Magento Job Board - Some sort of tag line goes here

Latest Posts| View all Jobs