guardiano Posted November 11, 2015 Share Posted November 11, 2015 Salve, nella homepage del sito ho un modulo che mi visualizza gli prodotti aggiunti a catalogo (ossia le novità). Avrei la necessità di eliminare dalla query i prodotti che fanno parte di alcune categorie. Ho provato ad andare nella cartella modules/nome modulo ed ho trovato una query nel file php; l'ho commentata per vedere se sul sito il modulo caricasse vuoto o per lo meno andasse in errore ma non è cambiato niente. Purtroppo sono agli inizi e non so ancora come ragiona prestashop per certe cose. Potete aiutarmi a capire dove o in che modo posso trovare la query che mi interessa? Grazie. Link to comment Share on other sites More sharing options...
BBService Posted November 11, 2015 Share Posted November 11, 2015 Ciao controlla se quello che cerchi è dentro la cartella themes/TUOTEMA/modules/NOMEMODULO.Dopo assicurati di aver eliminato ogni forma di cache. Link to comment Share on other sites More sharing options...
guardiano Posted November 11, 2015 Author Share Posted November 11, 2015 (edited) grazie per avermi risposto. provengo da una lunga esperienza con il cms joomla. Lì nel template vengono messi i file di visualizzazione per fare gli override. Guardando nella cartella themes/nome_tema/modules/nome_modulo/.. c'è solo il file .tpl che penso abbia la funzione di override dell'aspetto del modulo (all'interno non vedo query). Sempre confrontando con joomla, le query dovrebbero rimanere nella cartella root/modules/nome_modulo per piacere confermami se le mie sensazioni sono corrette. per quanto riguarda la cache devo svoutare quella del browser? se no come si svuota la cache in prestashop? grazie. ps. il prestashop che stò modificando ha la versione 1.5.6.2 Edited November 11, 2015 by guardiano (see edit history) Link to comment Share on other sites More sharing options...
BBService Posted November 11, 2015 Share Posted November 11, 2015 (edited) io controllerei dentro la cartella del modulo come hai fatto tu, provando pero' a rinominare la cartella della cache della root principale e ricaricarla in originale della versione 1.5.6.2.Se non hai una versione originale, scaricala. Edited November 11, 2015 by BBService (see edit history) Link to comment Share on other sites More sharing options...
guardiano Posted November 11, 2015 Author Share Posted November 11, 2015 ho provato a rinominare la cartella cache nella root. ho aggiornato la pagina del sito ma il risultato è lo stesso. prestashop ha ricreato la cartella cache autonomamente. Il template in uso è un template che fu acquistato prima che io iniziassi a metterci mani. E' possibile che le query si trovino nella stessa cartella del template? Link to comment Share on other sites More sharing options...
BBService Posted November 13, 2015 Share Posted November 13, 2015 Devi ricaricare l'originale "cache" , prestashop la ricrea ma mancherebbero sicuramente dei file. Link to comment Share on other sites More sharing options...
guardiano Posted November 13, 2015 Author Share Posted November 13, 2015 Quindi mi consigli di prelevare la cartella cache dal pacchetto di installazione di prestashop?..se ho ben capito Link to comment Share on other sites More sharing options...
BBService Posted November 14, 2015 Share Posted November 14, 2015 Si esatto in originale.Rinomini la vecchia in cache2 e ricarichi la nuova cartella originale. (poi elimini cache2)Non conosco bene il modulo nuovi prodotti, non so se conserva file di compilazione.... sono prove che dovresti fare. Fai la modifica, rinomini la cartella cache, ricarichi l'originale e vedi se si vede la modifica. Ogni volta che aggiorni con f5 è opportuno ricaricare la cache originale per assicurarsi che tutte le modifiche che hai fatto siano state ricompilate. Ciao fammi sapere. Link to comment Share on other sites More sharing options...
guardiano Posted November 14, 2015 Author Share Posted November 14, 2015 Sei stato molto chiaro, grazie. proverò. Senti .... e se volessi disattivare completamente la cache? ho provato impostando "forza la ricompilazione", "no" su cache smarty e "no" in fondo alla pagina nella sezione cache. Ritieni che sia sufficiente? Link to comment Share on other sites More sharing options...
BBService Posted November 16, 2015 Share Posted November 16, 2015 Si va bene, però se vuoi essere sicuro di eliminare tutte le cache: Svuota la cache da : Prestazioni (back office) e ricarica la cartella cache originale rinominando la vecchia. (dopo puoi eliminare tranquillamente tutte le cartelle rinominate, o metterle tutte in una cartella chiamata cestino) Link to comment Share on other sites More sharing options...
guardiano Posted November 16, 2015 Author Share Posted November 16, 2015 sei stato chiarissimo. grazie. Una domanda, siccome sono nuovo del forum, come faccio adesso a mettere il risolto a questo topic? Link to comment Share on other sites More sharing options...
BBService Posted November 22, 2015 Share Posted November 22, 2015 Quindi hai risolto? Ti sono stati utili i miei consigli? Credo che basti editare il primo post Link to comment Share on other sites More sharing options...
guardiano Posted November 22, 2015 Author Share Posted November 22, 2015 Purtroppo no. Mi trovo in una fase di stallo. il provider mi ha detto che il problema è questa query: SELECT p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, MAX(image_shop.`id_image`) id_image, il.`legend`, m.`name` AS manufacturer_name, product_shop.`date_add` > "2015-10-27" as new, MAX(product_attribute_shop.id_product_attribute) id_product_attribute FROM `ps_product` p INNER JOIN ps_product_shop product_shop ON (product_shop.id_product = p.id_product AND product_shop.id_shop = 1) LEFT JOIN `ps_product_lang` `pl` ON p.`id_product` = pl.`id_product` AND pl.`id_lang` = 3 AND pl.id_shop = 1 LEFT JOIN `ps_image` `i` ON i.`id_product` = p.`id_product` LEFT JOIN ps_image_shop image_shop ON (image_shop.id_image = i.id_image AND image_shop.id_shop = 1 AND image_shop.cover=1) LEFT JOIN `ps_image_lang` `il` ON i.`id_image` = il.`id_image` AND il.`id_lang` = 3 LEFT JOIN `ps_manufacturer` `m` ON m.`id_manufacturer` = p.`id_manufacturer` LEFT OUTER JOIN `ps_product_attribute` pa ON p.`id_product` = pa.`id_product` LEFT JOIN ps_product_attribute_shop product_attribute_shop ON (product_attribute_shop.id_product_attribute = pa.id_product_attribute AND product_attribute_shop.id_shop = 1 AND product_attribute_shop.default_on = 1) LEFT JOIN ps_stock_available stock ON (stock.id_product = p.id_product AND stock.id_product_attribute = IFNULL(`product_attribute_shop`.id_product_attribute, 0) AND stock.id_shop = 1 ) WHERE (product_shop.`active` = 1) AND (product_shop.`visibility` IN ("both", "catalog")) AND (product_shop.`date_add` > "2015-10-27") AND (p.`id_product` IN ( SELECT cp.`id_product` FROM `ps_category_group` cg LEFT JOIN `ps_category_product` cp ON (cp.`id_category` = cg.`id_category`) WHERE cg.`id_group` = 1 )) GROUP BY product_shop.id_product ORDER BY p.`date_add` DESC LIMIT 12 Effettivamente l'ho provata nel navicat e ci mette un sacco di tempo per essere eseguita. Adesso stò cercando di capire da dove viene questa query. Ho trovato il file .tpl che visualizza quei dati e si trova nella cartella /themes/nome_template/modules/nome_modulo Ho pesato quindi di cercare la query nella cartella /modules/nome_modulo/nome_modulo.php ma se la cancello, nel sito non succede niente. Viene caricato tutto comunque quindi non so se stò andando nella direzione corretta. Link to comment Share on other sites More sharing options...
guardiano Posted November 22, 2015 Author Share Posted November 22, 2015 (edited) Casualmente ho commentato questa query in classes/product.php dalla riga 2269 alla riga 2306 e il caricamento dell'home page è diventato molto più veloce $sql = 'SELECT p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity, pl.`description`, pl.`description_short`, MAX(product_attribute_shop.id_product_attribute) id_product_attribute, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, MAX(image_shop.`id_image`) id_image, il.`legend`, m.`name` AS manufacturer_name, DATEDIFF( p.`date_add`, DATE_SUB( NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY ) ) > 0 AS new FROM `'._DB_PREFIX_.'product` p '.Shop::addSqlAssociation('product', 'p').' LEFT JOIN '._DB_PREFIX_.'product_attribute pa ON (pa.id_product = p.id_product) '.Shop::addSqlAssociation('product_attribute', 'pa', false, 'product_attribute_shop.default_on=1').' '.Product::sqlStock('p', 0, false, $context->shop).' LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON ( p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').' ) LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product`)'. Shop::addSqlAssociation('image', 'i', false, 'image_shop.cover=1').' LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON (m.`id_manufacturer` = p.`id_manufacturer`) WHERE product_shop.`active` = 1 AND product_shop.`show_price` = 1 '.($front ? ' AND p.`visibility` IN ("both", "catalog")' : '').' '.((!$beginning && !$ending) ? ' AND p.`id_product` IN ('.((is_array($tab_id_product) && count($tab_id_product)) ? implode(', ', $tab_id_product) : 0).')' : '').' AND p.`id_product` IN ( SELECT cp.`id_product` FROM `'._DB_PREFIX_.'category_group` cg LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`) WHERE cg.`id_group` '.$sql_groups.' ) GROUP BY product_shop.id_product ORDER BY '.(isset($order_by_prefix) ? pSQL($order_by_prefix).'.' : '').pSQL($order_by).' '.pSQL($order_way).' LIMIT '.(int)($page_number * $nb_products).', '.(int)$nb_products; $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); Per sicurezza ho navigato nel sito qua e là ho fatto anche un ordine ed è andato tutto bene. poi dal backoffice ho fatto un po' di modifiche in categorie, prodotti e gestito un ordine per vedere se andava tutto bene, ed effettivamente và tutto bene. Ho provato anche a loggarmi con gruppi clienti diversi per vedere se nel modulo ultimi arrivi cambiavano i prezzi come configurati nel backoffice nei prodotti ed è tutto ok. Questa query poteva influire sul caricamento del modulo degli ultimi arrivi? (vi ricordo che il modulo fa parte di un template acquistato e non è nativo del prestashop. la mia versione è 1.5.6.2)? Cosa ne pensate? Edited November 22, 2015 by guardiano (see edit history) Link to comment Share on other sites More sharing options...
guardiano Posted November 22, 2015 Author Share Posted November 22, 2015 no, è la query dei prodotti speciali, non posso toglierla! Link to comment Share on other sites More sharing options...
Guest locen Posted December 29, 2015 Share Posted December 29, 2015 Ciao a tutti, dovrei scrivere una query che tiri fuori i paesi con il maggior fatturato, il modulo pre-installato considera i prezzi senza sconti mentre se qualcuno ha acquistato con lo sconto non viene considerato. Qualcuno che possa aiutarmi?? Grazie 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