Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

#51335
Estou usando a versão 1.5.6, esse último código funcionou, mas mostra todos os produtos (em produtos novos) e quero que mostre apenas a quantidade que eu configurar, como faço?

$results = $this->model_catalog_product->getProducts(10 * (int)$this->config->get('latest_limit'));
srand((float)microtime() * 1000000);
shuffle($results);
$results = array_slice($results, 0, $this->config->get('latest_limit'));
#56520
Nenhum dos códigos informados funcionaram perfeitamente na versão 1.5.5.1, sempre faltava alguma coisa, ou não limitava a quantidade de produtos que estava setado no módulo ou limitava os produtos mas não rotacionava entre todos os produtos cadastrados na loja virtual, apenas os últimos cadastrados na ordem descendente ou ascendente.

Depois de um estudo no código, fiz uma mescla de 2 códigos aqui informados e substituí a seguinte linha:

$results = $this->model_catalog_product->getProducts($data);

Pelo código:

$results = $this->model_catalog_product->getProducts(10 * (int)$this->config->get('limit'));
srand((float)microtime() * 1000000);
shuffle($results);
$results = array_slice($results, 0, $setting['limit']);

Funcionando perfeitamente na minha loja: www.remanos.com.br

Espero ter ajudado.
#67832
Estou usando uma opencart 2.1 e não consegui achar a linha de código em nenhum dos arquivos citados na explicação. Como posso fazer essa alteração para randomizar os produtos na página principal?

Segue abaixo o código completo que tem no arquivo latest.php


application/x-httpd-php latest.php
PHP script text
<?php
class ControllerModuleLatest extends Controller {
public function index($setting) {
$this->load->language('module/latest');

$data['heading_title'] = $this->language->get('heading_title');

$data['text_tax'] = $this->language->get('text_tax');

$data['button_cart'] = $this->language->get('button_cart');
$data['button_wishlist'] = $this->language->get('button_wishlist');
$data['button_compare'] = $this->language->get('button_compare');

$this->load->model('catalog/product');

$this->load->model('tool/image');

$data['products'] = array();

$filter_data = array(
'sort' => 'p.date_added',
'order' => 'DESC',
'start' => 0,
'limit' => $setting['limit']
);

$results = $this->model_catalog_product->getProducts($filter_data);

if ($results) {
foreach ($results as $result) {
if ($result['image']) {
$image = $this->model_tool_image->resize($result['image'], $setting['width'], $setting['height']);
} else {
$image = $this->model_tool_image->resize('placeholder.png', $setting['width'], $setting['height']);
}

if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
} else {
$price = false;
}

if ((float)$result['special']) {
$special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));
} else {
$special = false;
}

if ($this->config->get('config_tax')) {
$tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);
} else {
$tax = false;
}

if ($this->config->get('config_review_status')) {
$rating = $result['rating'];
} else {
$rating = false;
}

$data['products'][] = array(
'product_id' => $result['product_id'],
'thumb' => $image,
'name' => $result['name'],
'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..',
'price' => $price,
'special' => $special,
'tax' => $tax,
'rating' => $rating,
'href' => $this->url->link('product/product', 'product_id=' . $result['product_id'])
);
}

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/latest.tpl')) {
return $this->load->view($this->config->get('config_template') . '/template/module/latest.tpl', $data);
} else {
return $this->load->view('default/template/module/latest.tpl', $data);
}
}
}
}
#69012
Pessoal estou usando a versão 2.2
e a linha para trocar é essa:
Código: Selecionar todos
$results = $this->model_catalog_product->getProducts($filter_data);
é só substituir pelo código
Código: Selecionar todos
   $results = $this->model_catalog_product->getProducts(10 * (int)$setting['limit']);
        srand((float)microtime() * 1000000);
        shuffle($results); 
        $results = array_slice($results, 0, $setting['limit']);
em minha loja funcionou 100%
Espero poder ter ajudado..
não esqueçam de fazer o backup antes...

abraço...
#69013
Troquei em Special (promoção) também e ficou show...
o caminho é o mesmo.
é só encontrar a linha
$results = $this->model_catalog_product->getProducts($filter_data);

essa versão 2.2
caso as versões anteriores não tiverem essa linha é só seguir o padrão _catalog_product->getProducts
e fazer o teste..
abraço a todos...
#69741
Eu olhei o tópico inteiro, mas não consegui descobrir como eu faço para deixar os produtos das categorias no modo aleatório. Eu imaginei que a alteração seria no arquivo catalog/controller/module/category.php, mas neste arquivo não tem a linha "$results = $this->model_catalog_product->getProducts($filter_data);" para substituir.
Qual seria a forma correta para categorias? Se alguém souber e puder ajudar, agradeço enormemente.

Gente preciso de ajuda urgente. Na migraç&a[…]

Caro @reds , muito obrigado pela resposta.

PHP 8+ incompatibilidade

Toda tradução para a versão 3[…]

Ola @alex3257 Se você precisa apenas ver […]