Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Ordinamento Random Prodotti - (Random “Sort By")
 
Icosaedro
Jr. Member
 
Avatar
Total Posts:  4
Joined:  2013-11-29
 

Buongiorno,
condivido la procedura per aggiungere l’opzione “Casuale” alla funzione “Ordine per” nella visualizzazione Griglia/Lista dei Prodotti.

Note:
- funzionamento testato su Magento CE 1.8;
- modifiche ai file Core: attenzione in caso di aggiornamento di Magento;
- ringraziamento alle innumerevoli fonti online che hanno fornito le informazioni frammentarie che mi hanno aiutato a raggiungere il risultato.

------

FASE 01

Nel file:
app/code/core/Mage/Catalog/Block/Product/List/Toolbar.php

Sostituire la funzione:

public function setCollection($collection)
    
{
        $this
->_collection $collection;

        
$this->_collection->setCurPage($this->getCurrentPage());

        
// we need to set pagination only if passed value integer and more that 0
        
$limit = (int)$this->getLimit();
        if (
$limit{
            $this
->_collection->setPageSize($limit);
        
}
        
if ($this->getCurrentOrder()) {
            $this
->_collection->setOrder($this->getCurrentOrder(), $this->getCurrentDirection());
        
}
        
return $this;
    
}

Con la funzione:

public function setCollection($collection)    
    
{        
    $this
->_collection $collection;        

    
$this->_collection->setCurPage($this->getCurrentPage());        

    
// we need to set pagination only if passed value integer and more that 0        
    
$limit = (int)$this->getLimit();        
    if (
$limit{           
        $this
->_collection->setPageSize($limit);        
    
}        
    
if ($this->getCurrentOrder()) 
        
if($this->getCurrentOrder() == 'random'{             
            $this
->getCollection()->getSelect()->order('rand()');            
        
}           
        
else {            
            $this
->getCollection()->setOrder($this->getCurrentOrder(), $this->getCurrentDirection());           
        
}        
    }        
        
return $this;    
    
}

FASE 02
Nel file:
app/code/core/Mage/Catalog/Model/Config.php

Sostituire la funzione:

public function getAttributeUsedForSortByArray()
    
{
        $options 
= array(
            
'position'  => Mage::helper('catalog')->__('Position')
        );
        foreach (
$this->getAttributesUsedForSortBy() as $attribute{
            
/* @var $attribute Mage_Eav_Model_Entity_Attribute_Abstract */
            
$options[$attribute->getAttributeCode()$attribute->getStoreLabel();
        
}

        
return $options;
    
}

Con la funzione:

public function getAttributeUsedForSortByArray()    
     
{        
        $options 
= array(            
            
'random'  => Mage::helper('catalog')->__('Random'),    
            
'position'  => Mage::helper('catalog')->__('Position')                                
        );        
        foreach (
$this->getAttributesUsedForSortBy() as $attribute{            
            
/* @var $attribute Mage_Eav_Model_Entity_Attribute_Abstract */            
            
$options[$attribute->getAttributeCode()$attribute->getStoreLabel();        
        

        
return $options;
    
}

FASE 03
Nel file:
app/code/core/Mage/Adminhtml/Model/System/Config/Source/Catalog/ListSort.php

Sostituire la funzione:

public function toOptionArray()
    
{
        $options 
= array();
        
$options[] = array(
            
'label' => Mage::helper('catalog')->__('Best Value'),
            
'value' => 'position'
        
);
        foreach (
$this->_getCatalogConfig()->getAttributesUsedForSortBy() as $attribute{
            $options[] 
= array(
                
'label' => Mage::helper('catalog')->__($attribute['frontend_label']),
                
'value' => $attribute['attribute_code']
            
);
        
}
        
return $options;
    
}

Con la funzione:

public function toOptionArray()    
    
{        
        $options 
= array();        
        
$options[] = array(            
            
'label' => Mage::helper('catalog')->__('Best Value'),            
            
'value' => 'position',        
        );        
        
$options[] = array(
            
'label' => Mage::helper('catalog')->__('Random'),            
            
'value' => 'random'       
        
);        
        foreach (
$this->_getCatalogConfig()->getAttributesUsedForSortBy() as $attribute{            
            $options[] 
= array(                
                
'label' => Mage::helper('catalog')->__($attribute['frontend_label']),                
                
'value' => $attribute['attribute_code']            
        
);        
            
}        
        
return $options;    
    
}

FASE 04
Nella Cartella:
app/locale/it_IT/

Aggiungere la traduzione per il termine “Random” nei file opportuni.
Esempio:
- Mage_Adminhtml.csv
- Mage_Catalog.csv
- translate.csv

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