Jump to content

Immagini automatiche random delle sottocategorie


infotech

Recommended Posts

Innanzitutto complimenti a tutti, davvero un ottimo lavoro, sono nuovo nel mondo prestashop ma ne sono rimasto subito affascinato, apprezzo molto la vostra preparazione.

 

Premesse:

Nel prestashop che stò mettendo su ho fatto un import di un listino csv. Per non appesantire il server e velocizzare l'importazione le immagini le sto facendo visualizzare prendendole direttamente dal server del fornitore (infatti si chiamano come l'id dei prodotti 23123.jpg ecc ecc)

 

Ecco il codice che ha ovviamente funzionato per il product.tpl:

 {assign var=productid value="`$product->reference`"}
    {assign var=linkbpm value="http://www.linkdelmiofornitore.it/immagini/"}
    {assign var=estensione value=".jpg"}
    {assign var=linkimg value= "$linkbpm$productid$estensione"}
    {if $product->id != 0}
	    <img src="{$linkimg}" alt="" title="{$product->name|escape:'htmlall':'UTF-8'}" width="				    {$largeSize.width}" height="{$largeSize.height}" />
    {/if}

Il problema però si pone per il file category.tpl, volevo modificarlo per far visualizzare in automatico un immagine random di un prodotto relativo a quella sottocategoria.

In automatico il prestashop cerca le immagini delle sottocategorie nelle cartelle dedicate che si devono chiamare come l'id della categoria. Io devo costruire il link con il source dell'immagine come ho fatto per la pagina del prodotto, ma in questo caso mi serve il reference del prodotto (che uso come id) in base al id_parent.

 

Ho aperto il file in category.php della cartella classes e ho aggiunto questa funzione con la query sql che mi serve per fare quello che ho bisogno di fare.

 

public function referenceinsubcategory($id_lang, $active = true)
{
if (!Validate::isBool($active))
   die(Tools::displayError());
 $groups = FrontController::getCurrentCustomerGroups();
 $sqlGroups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1');

 $result1 = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
    SELECT p.reference
 FROM `ps_category` c
 LEFT JOIN `ps_product` p ON ( c.`id_category` = p.`id_category_default` )
 WHERE `id_parent` = '.(int)($this->id).'
 ORDER BY RAND( )
 LIMIT 1 ');
		    return $result1;
}

 

Ora nel file tpl come richiamo utilizzo questa function? inoltre è la strada giusta quella che stò percorrendo?

 

Grazie

Link to comment
Share on other sites

Ho provato a modificare direttamente il metodo che costruisce le sottocategorie, sicuramente c'è un errore di sintassi, qualcuno lo può trovare? dovrebbe funzionare in questa maniera :(

 

public function getSubCategories($id_lang, $active = true)
{
  if (!Validate::isBool($active))
   die(Tools::displayError());
 $groups = FrontController::getCurrentCustomerGroups();
 $sqlGroups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1');
 $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
 SELECT  c.*, cl.id_lang, cl.name, cl.description, cl.link_rewrite, cl.meta_title, cl.meta_keywords, cl.meta_description
 FROM `'._DB_PREFIX_.'category` c
 LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category` AND `id_lang` = '.(int)($id_lang).')
 LEFT JOIN `'._DB_PREFIX_.'category_group` cg ON (cg.`id_category` = c.`id_category`)
    WHERE `id_parent` = '.(int)($this->id).'
 '.($active ? 'AND `active` = 1' : '').'
 AND cg.`id_group` '.$sqlGroups.'
 GROUP BY c.`id_category`
 ORDER BY `level_depth` ASC, c.`position` ASC');

 foreach ($result AS &$row)
 {
	  $ref = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
    SELECT p.reference
 FROM `ps_category` c
 LEFT JOIN `ps_product` p ON ( c.`id_category` = p.`id_category_default` )
 WHERE `id_parent` = '.(int)($this->id).'
    '.($active ? 'AND `active` = 1' : '').'
 ORDER BY RAND( )
 LIMIT 1 ');
	 $row['id_image'] = (_BPM_IMG_DIR_.$row['ref'].'.jpg') ? (int)($row['id_category']) : Language::getIsoById($id_lang).'-default';
  $row['legend'] = 'no picture';

 }

 return $result;
}

Link to comment
Share on other sites

  • 2 years later...

Salve, ho un problema similare.

 

Ho realizzato un software che mi carica i prodotti in automatico e aggiorna i prezzi, per le immagini sono in un percorso esterno al prestashop. Il nome delle immagini è il campo $product.ean13.jpg

 

Il problema è visualizzare la miniatura nella lista prodotti e comunque dovunque compare il prodotto, modalità lista o scheda singola.

 

Grazie a tutti.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...