Magento Forum

   
Как можно изменить вид выпадающего меню сортировки? 
 
zozoro
Jr. Member
 
Total Posts:  4
Joined:  2012-06-25
 

Как можно изменить вид сортировки, чтобы выбор в выпадающем меню был такой, без стрелочки сбоку?

Сортировать:
от дорогих к дешевым
от дешевых к дорогим
по названию от А до Я
по названию от Я до А

 
Magento Community Magento Community
Magento Community
Magento Community
 
niro
Mentor
 
Avatar
Total Posts:  1592
Joined:  2009-03-04
Latvia, Riga
 

Не всё так легко, как хотелось бы. Надо модуль писать, переписывая Mage_Catalog_Block_Product_List_Toolbar

 
Magento Community Magento Community
Magento Community
Magento Community
 
mcdky
Sr. Member
 
Avatar
Total Posts:  140
Joined:  2011-09-29
 

Ну можно криво и в лоб сделать же.
Открываем

...\template\catalog\product\list\toolbar.phtml
Находим
<div class="sort-by">
    <
label><?php echo $this->__('Sort By'?></label>
    <
select onchange="setLocation(this.value)">
    
<?php foreach($this->getAvailableOrders() as $_key=>$_order): ?>
        
<option value="<?php echo $this->getOrderUrl($_key, 'asc') ?>"<?php if($this->isOrderCurrent($_key)): ?> selected="selected"<?php endif; ?>>
            
<?php echo $this->__($_order?>
        
</option>
    
<?php endforeach; ?>
    
</select>
    
<?php if($this->getCurrentDirection() == 'desc'): ?>
        
<a href="<?php echo $this->getOrderUrl(null, 'asc') ?>" title="<?php echo $this->__('Set Ascending Direction') ?>"><img src="<?php echo $this->getSkinUrl('images/i_desc_arrow.gif') ?>" alt="<?php echo $this->__('Set Ascending Direction') ?>" class="v-middle" /></a>
    
<?php else: ?>
        
<a href="<?php echo $this->getOrderUrl(null, 'desc') ?>" title="<?php echo $this->__('Set Descending Direction') ?>"><img src="<?php echo $this->getSkinUrl('images/i_asc_arrow.gif') ?>" alt="<?php echo $this->__('Set Descending Direction') ?>" class="v-middle" /></a>
    
<?php endif; ?>
</div>
Меняем на
<div class="sort-by">
    <
label><?php echo $this->__('Sort By'?></label>
    <
select onchange="setLocation(this.value)">
        <
option value="<?php echo $this->getOrderUrl('price', 'asc') ?>"<?php if($this->isOrderCurrent('price') && $this->getCurrentDirection() == 'asc'): ?> selected="selected"<?php endif; ?>>
            
от дешевых к дорогим 
        
</option>
        <
option value="<?php echo $this->getOrderUrl('price', 'desc') ?>"<?php if($this->isOrderCurrent('price') && $this->getCurrentDirection() == 'desc'): ?> selected="selected"<?php endif; ?>>
            
от дорогих к дешевым
        
</option>
        <
option value="<?php echo $this->getOrderUrl('name', 'asc') ?>"<?php if($this->isOrderCurrent('name') && $this->getCurrentDirection() == 'asc'): ?> selected="selected"<?php endif; ?>>
            
по названию от А до Я 
        
</option>
        <
option value="<?php echo $this->getOrderUrl('name', 'desc') ?>"<?php if($this->isOrderCurrent('name') && $this->getCurrentDirection() == 'desc'): ?> selected="selected"<?php endif; ?>>
            
по названию от Я до А
        
</option>
    </
select>
</
div>
Вроде должно работать. Криво. Но должно )

 
Magento Community Magento Community
Magento Community
Magento Community
 
zozoro
Jr. Member
 
Total Posts:  4
Joined:  2012-06-25
 
mcdky - 12 October 2012 03:07 AM

Ну можно криво и в лоб сделать же.
Открываем

...\template\catalog\product\list\toolbar.phtml
Находим
<div class="sort-by">
    <
label><?php echo $this->__('Sort By'?></label>
    <
select onchange="setLocation(this.value)">
    
<?php foreach($this->getAvailableOrders() as $_key=>$_order): ?>
        
<option value="<?php echo $this->getOrderUrl($_key, 'asc') ?>"<?php if($this->isOrderCurrent($_key)): ?> selected="selected"<?php endif; ?>>
            
<?php echo $this->__($_order?>
        
</option>
    
<?php endforeach; ?>
    
</select>
    
<?php if($this->getCurrentDirection() == 'desc'): ?>
        
<a href="<?php echo $this->getOrderUrl(null, 'asc') ?>" title="<?php echo $this->__('Set Ascending Direction') ?>"><img src="<?php echo $this->getSkinUrl('images/i_desc_arrow.gif') ?>" alt="<?php echo $this->__('Set Ascending Direction') ?>" class="v-middle" /></a>
    
<?php else: ?>
        
<a href="<?php echo $this->getOrderUrl(null, 'desc') ?>" title="<?php echo $this->__('Set Descending Direction') ?>"><img src="<?php echo $this->getSkinUrl('images/i_asc_arrow.gif') ?>" alt="<?php echo $this->__('Set Descending Direction') ?>" class="v-middle" /></a>
    
<?php endif; ?>
</div>
Меняем на
<div class="sort-by">
    <
label><?php echo $this->__('Sort By'?></label>
    <
select onchange="setLocation(this.value)">
        <
option value="<?php echo $this->getOrderUrl('price', 'asc') ?>"<?php if($this->isOrderCurrent('price') && $this->getCurrentDirection() == 'asc'): ?> selected="selected"<?php endif; ?>>
            
от дешевых к дорогим 
        
</option>
        <
option value="<?php echo $this->getOrderUrl('price', 'desc') ?>"<?php if($this->isOrderCurrent('price') && $this->getCurrentDirection() == 'desc'): ?> selected="selected"<?php endif; ?>>
            
от дорогих к дешевым
        
</option>
        <
option value="<?php echo $this->getOrderUrl('name', 'asc') ?>"<?php if($this->isOrderCurrent('name') && $this->getCurrentDirection() == 'asc'): ?> selected="selected"<?php endif; ?>>
            
по названию от А до Я 
        
</option>
        <
option value="<?php echo $this->getOrderUrl('name', 'desc') ?>"<?php if($this->isOrderCurrent('name') && $this->getCurrentDirection() == 'desc'): ?> selected="selected"<?php endif; ?>>
            
по названию от Я до А
        
</option>
    </
select>
</
div>
Вроде должно работать. Криво. Но должно )

Отлично, то что нужно. Благодарочка)

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
    Back to top