infotech Posted December 19, 2011 Share Posted December 19, 2011 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 More sharing options...
infotech Posted December 19, 2011 Author Share Posted December 19, 2011 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 More sharing options...
infotech Posted December 20, 2011 Author Share Posted December 20, 2011 Autorisolto, mi rimane solo il problema che alcune sottocategorie non hanno prodotti al suo interno ma altre sottocategorie. Non essendoci prodotti non posso pescare il reference e sono senza immagini Link to comment Share on other sites More sharing options...
Nemesi2000 Posted May 7, 2014 Share Posted May 7, 2014 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now