Como listar produtos em ordem decrescente?

18

Isso parecia simples, mas está provando o contrário - eu só quero listar todos os produtos em minha loja, de alto -> baixo

Para fazer isso, eu fui para:

Configuration -> Catalog -> Product Listing Sort by -> (I Selected) "Price"

Agora, isso classifica todos os produtos, de baixo para alto, para todos os produtos - mas não parece haver uma maneira de escolher ordem crescente ou decrescente.

Existe algo na área de administração que estou ignorando ou preciso modificar um arquivo para fazer isso?

Reconstruir
fonte
Se entendi sua explicação corretamente, basta clicar na pricecoluna novamente para classificar os produtos do mais alto ao mais baixo .
precisa
Você pode melhorar seus produtos de classificação usando este script fmeaddons.com/magento/...

Respostas:

42

Você não pode alterar a direção padrão do pedido para as listas de produtos da configuração .

No entanto, você pode alterar a direção do XML do layout .

Aqui estão alguns exemplos que você pode colocar em seu arquivo XML de layout, por exemplo local.xml:

<?xml version="1.0"?>
<layout version="0.1.0">
    <!-- Change default direction for simple searches -->
    <catalogsearch_result_index>
        <reference name="search_result_list">
            <action method="setDefaultDirection"><dir>desc</dir></action>
        </reference>
    </catalogsearch_result_index>

    <!-- Change default direction for advanced searches -->
    <catalogsearch_advanced_result>
        <reference name="search_result_list">
            <action method="setDefaultDirection"><dir>desc</dir></action>
        </reference>
    </catalogsearch_advanced_result>

    <!-- Change default direction for a category without layered navigation -->
    <catalog_category_default>
        <reference name="product_list">
            <action method="setDefaultDirection"><dir>desc</dir></action>
        </reference>
    </catalog_category_default>

    <!-- Change default direction for a category with layered navigation -->
    <catalog_category_layered>
        <reference name="product_list">
            <action method="setDefaultDirection"><dir>desc</dir></action>
        </reference>
    </catalog_category_layered>

    <!-- Change default direction for category with ID 3 -->
    <CATEGORY_3>
        <reference name="product_list">
            <action method="setDefaultDirection"><dir>desc</dir></action>                                   
        </reference>
    </CATEGORY_3>
</layout>

Além disso, você pode adicionar XML de layout como um design personalizado de sua categoria no back-end . Essa configuração substituirá o que você definiu no arquivo XML:

Defina a direção padrão do pedido usando XML de design personalizado

Matthias Zeis
fonte
6

A pergunta está etiquetada com CE 1.7.0.2, mas esta solução é útil para aqueles em 1.9.1.1, então estou adicionando-a aqui.

Tivemos um problema oposto, onde precisávamos mostrar os produtos mais baratos primeiro quando classificados por Preço. Para a primeira preocupação do OP, isso não se aplica porque, no Magento CE 1.9, o padrão é decrescente, portanto, isso não é realmente necessário. A segunda preocupação, para uma maneira de escolher ascendente versus descendente, pode ser feita por meio de um arquivo XML ou da Atualização de layout personalizado. A última é a solução preferida na maioria dos casos e a maioria das pessoas evitaria o incômodo do FTP em carregar um arquivo XML para atualizar as configurações.

Veja como fica em Catálogo> Gerenciar categorias> Categoria > Design personalizado> Atualização de layout personalizado :

Mostra os produtos mais baratos primeiro, NÃO os mais caros Aqui está o código:

<reference name="product_list_toolbar">
    <action method="setDefaultDirection"><string>asc</string></action>
    <action method="setDefaultOrder"><string>price</string></action>
</reference>

Para escolher ascendente vs descendente, basta alterar asc para desc .

Como opção, você também pode alterar o preço para a classificação necessária. Você pode removê-lo para que o padrão seja subir em qualquer opção Classificar por lista de produtos configurada como padrão.

Joel Karunungan
fonte
3

As soluções acima não pareciam fazer diferença no CE 1.8, por isso tive que resolver esse problema substituindo a funcionalidade do modelo de catálogo em code / local /.../ Catalog / Model / Category.php

/**
 * Override category products collection
 * to sort by price descending
 *
 * @return Varien_Data_Collection_Db
 */
public function getProductCollection()
{  
    $collection = parent::getProductCollection()->setOrder('price', 'DESC');
    return $collection;
}

Espero que isto ajude. :-)

user3983
fonte
Oi, podemos alterar a ordem de classificação atual via arquivo toolbar.phtml?
Jordy S Chemparathy
No meu caso, uma categoria mostra novos produtos primeiro;
Jordy S Chemparathy
3

O seguinte xml funcionou para mim no CE 1.8:

<layout>
    <catalog_category_default>
      <reference name="product_list_toolbar">
          <action method="setDefaultDirection"><string>asc</string></action>
          <action method="setDefaultOrder"><string>price</string></action>
      </reference>
    </catalog_category_default>

    <catalog_category_layered>
      <reference name="product_list_toolbar">
        <action method="setDefaultDirection"><string>asc</string></action>
        <action method="setDefaultOrder"><string>price</string></action>
      </reference>
    </catalog_category_layered>

    <catalogsearch_result_index>
      <reference name="search_result_list">
        <action method="setDefaultDirection"><string>asc</string></action>
        <action method="setDefaultOrder"><string>price</string></action>
      </reference>
    </catalogsearch_result_index>
    <catalogsearch_advanced_result>
      <reference name="search_result_list">
        <action method="setDefaultDirection"><string>asc</string></action>
        <action method="setDefaultOrder"><string>price</string></action>
      </reference>
    </catalogsearch_advanced_result>
</layout>

Pensei em postar uma vez que as duas soluções acima não funcionaram para mim no Magento 1.8 (Comunidade).

'setDefaultOrder' pode ter qualquer código de atributo que eu acho, e não é necessário se você quiser apenas usar o padrão do admin.

Espero que seja útil para alguém.

mike-source
fonte
1

Vá para / app / code / core / Mage / Catalog / Model / path e adicione o código abaixo em Product.php

public function getRelatedProductCollection()
    {
$collection = $this->getLinkInstance()->useRelatedLinks()
        ->getProductCollection()
        ->setIsStrongMode();
    $collection->setProduct($this);
    $collection->setOrder('price', 'DESC');
    return $collection;
    }

Você também pode usar isso para peso. Basta escrever 'peso' no lugar de 'preço'. Para subir, basta escrever 'ASC' no lugar de 'DESC'.

Sumit Mohanty
fonte
nunca mude os arquivos principais.
func0der