Sexo: Masculino
Edad: 21 años
Ubicación: Poza Rica, Veracruz
País:
Mensajes: 1269
|
Mmm... veo que ese CMS, maneja su propia funcion para obtener filas aleatorias, lo normal es usar la funcion rand(), sobre el query, pero igual es válido.
También veo que ambos archivos tienen un diseño diferente, como ya se habia mencionado y aquel que funciona con los productos aleatorios, solo muestra pocas opciones...
Esos archivos new_products, son exclusivos de la página principal?
Para mi lo más fácil, seria usar la función rand() del mysql, y los cambios serían los siguientes:
Cambiar "order by p.products_date_added desc" por "order by rand()".
La parte a modificar seria esta:
Código 
if ( (!isset($new_products_category_id)) || ($new_products_category_id == '0') ) {
$new_products_query = tep_db_query("select p.products_id, p.products_image, p.products_tax_class_id, if(s.status, s.specials_new_products_price, p.products_price) as products_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id where products_status = '1' order by p.products_date_added desc limit " . MAX_DISPLAY_NEW_PRODUCTS);
} else {
$new_products_query = tep_db_query("select distinct p.products_id, p.products_image, p.products_tax_class_id, if(s.status, s.specials_new_products_price, p.products_price) as products_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_CATEGORIES . " c where p.products_id = p2c.products_id and p2c.categories_id = c.categories_id and c.parent_id = '" . (int)$new_products_category_id . "' and p.products_status = '1' order by p.products_date_added desc limit " . MAX_DISPLAY_NEW_PRODUCTS);
}
El código modificado podria quedar mas o menos asi:
Código 
if ( (!isset($new_products_category_id)) || ($new_products_category_id == '0') ) {
$new_products_query = tep_db_query("select distinct p.products_id, p.products_image, p.products_tax_class_id, if(s.status, s.specials_new_products_price, p.products_price) as products_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id where products_status = '1' order by rand() limit " . MAX_DISPLAY_NEW_PRODUCTS);
} else {
$new_products_query = tep_db_query("select distinct p.products_id, p.products_image, p.products_tax_class_id, if(s.status, s.specials_new_products_price, p.products_price) as products_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_CATEGORIES . " c where p.products_id = p2c.products_id and p2c.categories_id = c.categories_id and c.parent_id = '" . (int)$new_products_category_id . "' and p.products_status = '1' order by rand() limit " . MAX_DISPLAY_NEW_PRODUCTS);
}
Si el primer query muestra productos repetidos, se podria cambiar: "select p.products_id", por "select distinct p.products_id".
Obviamente los cambios se harian en el archivo new_products original, y despues de haber hecho una copia de respaldo. A propósito, los dos queries trabajan diferente, por asi decirlo, uno muestra productos cualquiera, sin categorizar, y el otro categorizados. Y además por defeto se ordenan por fecha... lo cual es lo que se esta cambiando.
La palabra clave "DISTINCT" sirve para mostrar productos distintos, vaya que por nada se repitan.
En teoria los cambios hechos, harán que esos productos siempre se muestren aleatoriamente, y sin repetirse, esten o no categorizados.
Bueno, haces las pruebas y ya veremos.
|