Vetrina specifica per una categoria

Postate qui discussioni di carattere generale riguardo a problemi di installazione e configurazione di osCommerce

Moderatore: mod Generali

Rispondi
Avatar utente
uzumaki
membro Junior
membro Junior
Messaggi: 40
Iscritto il: 29/11/2005, 8:12

Vetrina specifica per una categoria

Messaggio da uzumaki »

Un saluto a tutti, sto cercando di capire come si può far puntare la vetrina della home page solo ad una categoria specifica. Ho trovato una contribution (display_category, in realtà è una semplice mod del file new_products.php), che riesce a far sì che la vetrina "randomizzi" una categoria per volta.

Purtroppo non mi basta, mi serve che la vetrina punti soltanto ad una categoria specifica, ignorando le altre, ad esempio inserendo il suo ID. Riporto qui il codice ottenuto dopo la mod di cui sopra, per chiedervi cortesemente come posso intervenire sul codice per soddisfare questo requisito.

Il p.products_quantity l'ho aggiunto io, visto che la mod originariamente ignorava del tutto le quantità disponibili, sbattendo in vetrina anche i prodotti terminati. Questione comunque risolta per l'appunto con l'aggiunta di "p.products_quantity" nella query.

Codice: Seleziona tutto

if ( (!isset($new_products_category_id)) || ($new_products_category_id == '0') ) {
	$category_query = tep_db_query("select distinct categories_id from ". TABLE_PRODUCTS_TO_CATEGORIES );
	$cids = array();
	while ($categories = tep_db_fetch_array($category_query)) {
		array_push($cids, $categories["categories_id"]);
	}
	$cid = $cids[rand(0, count($cids) - 1)];

	  // removed order by p.products_date_added desc
	  
	$new_products_query = tep_db_query(
		"select p.products_id, p.products_quantity, 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 " .
		"where p.products_id = p2c.products_id and products_status = '1' and p2c.categories_id = $cid " .
		"order by rand() limit " . MAX_DISPLAY_NEW_PRODUCTS);
  } else {
    $new_products_query = tep_db_query("select distinct p.products_id, p.products_quantity, 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);
  }
Avatar utente
uzumaki
membro Junior
membro Junior
Messaggi: 40
Iscritto il: 29/11/2005, 8:12

Messaggio da uzumaki »

Sto facendo qualche tentativo, facendo un progresso significativo ma purtroppo non definitivo. Applicando infatti queste modifiche:

Codice: Seleziona tutto

"where p.products_id = p2c.products_id and products_status = '1' and p2c.categories_id = $cid and p.products_quantity >0 and categories_id = '1' " .
Ho ottenuto che in vetrina vadano effettivamente i prodotti appartenenti alla categoria "1", ma il problema è che il controllo viene fatto dopo, ovvero la query va a prendersi comunque i prodotti random, poi SE appartengono alla categoria "1" li pubblica in vetrina, altrimenti ecco una bella vetrina vuota.

Suggerimenti ? Possibile che nessuno abbia mai sentito l'esigenza di avere una vetrina dedicata solo ad una categoria specifica ? :shock: :P
Rispondi