Página 1 de 2
[DICA] Produtos sem estoque no final da listagem
Enviado: 26 Jan 2013, 13:59
por alissonlinneker
Olá a todos!
Foi uma necessidade minha a alteração no código para que os produtos sem estoque fossem para o final.
Vou compartilhar o que foi feito.
Para isso, abra o arquivo
catalog/model/catalog/product.php e faça:
Na função
getProducts, comente-a (linha 74), ficando assim:
Código: Selecionar todos//$product_data = $this->cache->get('product.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.' . $cache);
Em seguida, em baixo de:
Código: Selecionar todosif (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
$sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
} else {
$sql .= " ORDER BY " . $data['sort'];
}
} else {
$sql .= " ORDER BY p.sort_order";
}
adicione a linha:
Pronto!
Re: [DICA] Produtos sem estoque no final da listagem
Enviado: 26 Jan 2013, 14:31
por Manoel Vidal
Parabéns pela contribuição.
Só lembrando que a linha comentada é a linha que utiliza o sistema de cache, logo em lojas com muitos produtos, não é uma boa prática desativar o cache.
Espero ter colaborado.

Re: [DICA] Produtos sem estoque no final da listagem
Enviado: 19 Abr 2013, 16:16
por jfechaves
Como posso executar essa alteração na versão 1.4.9.1?
Obrigado.
Re: [DICA] Produtos sem estoque no final da listagem
Enviado: 16 Jun 2013, 13:10
por MetalHead
Fiz o que manda o tutorial, não deu certo a listagem e deu erro na minha página inicial que agora aparece toda em branco
http://www.suplementacaoideal.com.br
Já voltei o arquivo como estava antes e mesmo assim não corrigiu o problema.... o que eu faço???
Re: [DICA] Produtos sem estoque no final da listagem
Enviado: 16 Jun 2013, 13:26
por denisgomes
Você deve ativar o relatório de erros do PHP ou então acessar o log do seu servidor para ver qual erra está causando o problema. Por padrão os erros de PHP ficam escondidos para evitar problemas de segurança. Ativando-os você poderá descobrir qual arquivo e linha está causando o problema, pois ele pode não ter relação com a modificação que você fez.
Re: [DICA] Produtos sem estoque no final da listagem
Enviado: 16 Jun 2013, 13:36
por MetalHead
denisgomes escreveu:Você deve ativar o relatório de erros do PHP ou então acessar o log do seu servidor para ver qual erra está causando o problema. Por padrão os erros de PHP ficam escondidos para evitar problemas de segurança. Ativando-os você poderá descobrir qual arquivo e linha está causando o problema, pois ele pode não ter relação com a modificação que você fez.
Onde eu ativo o relatório de erros?
Re: [DICA] Produtos sem estoque no final da listagem
Enviado: 16 Jun 2013, 13:41
por denisgomes
Abra o index.php, e na primeira linha após o <?php acrescente
Código: Selecionar todosini_set('display_errors', 1);
ini_set('log_errors', 1);
error_reporting(E_ALL);
Depois de achar o problema remova isto.
Re: [DICA] Produtos sem estoque no final da listagem
Enviado: 16 Jun 2013, 13:54
por MetalHead
denisgomes escreveu:Abra o index.php, e na primeira linha após o <?php acrescente
Código: Selecionar todosini_set('display_errors', 1);
ini_set('log_errors', 1);
error_reporting(E_ALL);
Depois de achar o problema remova isto.
Coloquei e não aparece nada, continua a página em branco. O problema está só na página inicial mesmo, se eu acessar outras páginas, por exemplo:
http://suplementacaoideal.com.br/pre-tr ... oncentrado
entra normal.
O mais esquisito é que mexi em um arquivo q não tem nada a ver com o index
Re: [DICA] Produtos sem estoque no final da listagem
Enviado: 16 Jun 2013, 16:55
por denisgomes
Sem o log de erros é quase impossível descobrir qual é o problema. Acesse o admin do OC, clique em SISTEMA, CONFIGURAÇÕES, na sua loja clique em EDITAR, vá na aba SERVIDOR e então ative a opção EXIBIR ERROS e LOG DE ERROS (não sei se são esses os nomes corretos na tradução PT do OC).
Re: [DICA] Produtos sem estoque no final da listagem
Enviado: 16 Jun 2013, 17:03
por MetalHead
denisgomes escreveu:Sem o log de erros é quase impossível descobrir qual é o problema. Acesse o admin do OC, clique em SISTEMA, CONFIGURAÇÕES, na sua loja clique em EDITAR, vá na aba SERVIDOR e então ative a opção EXIBIR ERROS e LOG DE ERROS (não sei se são esses os nomes corretos na tradução PT do OC).
ativei o log de erros, daí aparece isso:
Código: Selecionar todosNotice: Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY LCASE(pd.name) ASC, LCASE(pd.name) ASC LIMIT 0,6' at line 1
Error No: 1064
SELECT DISTINCT ps.product_id, (SELECT AVG(rating) FROM oc_review r1 WHERE r1.product_id = ps.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM oc_product_special ps LEFT JOIN oc_product p ON (ps.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) GROUP BY ps.product_id LIMIT 5 ORDER BY LCASE(pd.name) ASC, LCASE(pd.name) ASC LIMIT 0,6 in /home/brunorx/public_html/system/database/mysql.php on line 50