Modificar-configurar navegador por capas

jogide

Nuevo usuario
Por el tipo de navegación que me gustaria en mi web, necesitaria editar el bloque del navegador por capas.

Principalmente, seria convertir este en drop-down. Tengo muchos atributos (en un tipo hay unos 40), y al presentar esto en pantalla, se me alarga demasiado.

Otra característica que seria muy interesante, seria poder arrastrar los filtrajes con una sesión iniciada.

El modulo del navegador por capas se puede configurar desde algún sitio? O el por defecto se auto-regula dependiendo de la subcategoria que explores ? Seria muy bueno poder configurarlo.

Creo que seguiré soñando :que:
 

OSdave

Super Moderador
Miembro del equipo
ya sabia yo que esta tema iba a ser util :jeje:
Reemplazas el contenido de app/design/frontend/[TU_INTERFAZ]/[TU_TEMA]/template/catalog/layer/filter.phtml por esto:
PHP:
 <?php
/**
 * Magento
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Open Software License (OSL 3.0)
 * that is bundled with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://opensource.org/licenses/osl-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.
 *
 * @category   design_default
 * @package    Mage
 * @copyright  Copyright (c) 2004-2007 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
 * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 * 
 */

/**
 * Template for filter items block
 * Coded by Adam Martin (www.tweakmag.com)
 * 
 * 
 * @see Mage_Catalog_Block_Layer_Filter
 */
?>

<?php
    //control the way that the layered navigation attributes present themselves
    //either dropdown list or default methd (ordered list)
    $attributeName = $this->getName();
    $itemcountthreshold = 2; // you can change this
    $itemcount = $this->getItemsCount();
    $displayitemcount = false; //set to true/false to display item count in brackets
    
    
    if($itemcount > $itemcountthreshold){
        $attributeName = "Overthreshold";
    }
    
    if(!function_exists("_displayOrderedlist")){
        function _displayOrderedlist($atts,$displayitemcount){
            echo '<ol>';
            foreach($atts->getItems() as $_item){
                echo '<li><a href="'.$_item->getUrl().'">'.$_item->getLabel().'</a>';
                if($displayitemcount){
                    echo ' ('.$_item->getCount().')';
                }
                echo '</li>';
            }
            echo '</ol>';
        }
    }
    if(!function_exists("_displayDropdown")){
        function _displayDropdown($atts,$displayitemcount){
            echo '<select id="layered-select" class="select" name="layered-select" onchange="if (this.selectedIndex > 0) location.href=this[this.selectedIndex].value;">';
            echo '<option selected="selected">Please select</option>';
            foreach ($atts->getItems() as $_item){
                echo '<option value="'.$_item->getUrl().'">';
                echo $_item->getLabel();
                if($displayitemcount){
                    echo ' ('.$_item->getCount().')';
                }
                echo '</option>';
            }
            echo '</select>';
        }
    }
    
    switch ($attributeName) {
        case 'Shoe Size':
        case 'Overthreshold':
            _displayDropdown($this,$displayitemcount);
            break;
    
        default:
            _displayOrderedlist($this,$displayitemcount);
            break;
    }    
    
?>
y luego lo adaptas a tus necesidades. O sea, en el ultimo switch, añades los casos en que quieres que sea un desplegable. Por ejemplo, si quieres que el atributo color aparezca en desplegable, añades
PHP:
        case 'Color':
debajo de
PHP:
        case 'Overthreshold':
Al principio del fichero (bueno, despues de los comentarios) hay 2 cosas que puedes cambiar:
PHP:
    $itemcountthreshold = 2; // you can change this
esto es el numero de opcion a partir de cual aparecera un desplegable en vez de link. Por ejemplo si pones 3, todos los atributos que tengan más de 3 opciones apareceran en un desplegable. La otra linea que puedes editar es
PHP:
    $displayitemcount = false; //set to true/false to display item count in brackets
si cambias false por true te aparece el numero de articulos que corresponden a esta opción.
 

jogide

Nuevo usuario
Bueno, que sepas que no me he enterado de nada :jeje:

Pero al ataque, al final acabaré escribiendo php como quien canta.

Voy a leer un rato :ok:
 

jogide

Nuevo usuario
jajajaja !!!! :ok:

Gracias , esto me empieza a gustar !

Funciona, a la primera !

:susto:
 
Arriba