How to order categories in vertnav (e.g. modern template)
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 [at] reinizia [dot] com


