Jump to content
  • 0

Wyświetlanie cen w wyszukiwarce dynamicznej


kubert

Question

Witam

 

To mój pierwszy post. Proszę o wyrozumiałość i delikatnie mnie potraktować. 
Z PrestaShop raczkuję ....

 

Mam taki problem, muszę wyświetlić w wynikach dynamicznych wyszukiwarki AJAX cenę brutto produktów.

 

Przestudiowałem ten wątek:

https://www.prestashop.com/forums/topic/260934-zdjecie-produktu-w-wyszukiwarce-moje-rozwiazanie/page-3

Jest tam taki zapis:

+ Number((data[i].pprice)*1.23).toFixed(2)+ ' € ' };

Oczywiście udało mi się właczyć to, Pięknie wyświetlają się ceny.

Ale jak widać jest tu zastosowany podatek wat 23%. 

 

A w moim sklepie znajdują się produkty na 23% i 8% co mogę z tym zrobić aby to przeskoczyć i wyświetlać cenę brutto np z widoku produktu. Bo standardowe wyświetlane ceny mam w brutto, ceny netto na produktach dorabiałem. 

 

Dziękuję za wszelką pomoc. 
Jako że napisałem że raczkuję proszę o odpowiedzi ŁOPATOLOGICZNE :)

 

Pozdrawiam

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

nie chce mi sie sledzic calego wspomnianego watku... ja osobiscie zrezygnowalbym z takich "twardych" wpisow jak przeliczanie przez 1.23 i stala wartosc waluty bo jest to dosc niebezpieczna metoda i dajaca malo mozliwosci rozwiojowych dla sklepu. a co jezeli produkt bedzie mial atrybuty i cena domyslna nie bedzie cena najnizsza (impact=0) ? 

 

po to presta budowana jest na klasach zeby z nich korzystac. wystarczy zagladnac w odpowiednie kontrolery i wybrac konretna fukcje zeby w prosty sposob utrzymac tak cene juz z podatkiem jak i sam podatek (kontrolery price albo tax) i to samo z odpowiednia waluta (currency). mozna tez analogicznie rozbudowac kontroler samej wyszukiwarki i w niej zastosowac osobne fukcje zwracajace tak cene juz zrabatowana jak i jej walute i przekazac to do szablonu jedna zmienna, ale po co  "wynajdowac kolo na nowo" jezeli juz te fukcje sa wbudowane. 

 

przegladnij sobie klasy product.php getPrice() czy getStaticPrice() ale przede wszystkim convertPrice() 

 

 

pobierznie przegladajac powyzszego linka tez mialbym zastrzezenia do samego wstawienia zdjecia: 

return "<img src=\"" + baseDir + "img/p/" + data.image.split('').join('/')+"/" + data.image+ "-cart_default.jpg\" alt=\"" + value + "\" />" + value;

to tez dosc "wprost" nie dajace zadnych mozliwosci rozwojowych dla sklepu. tutaj na spokojnie mozna by obec to w rownie szybki sposob jak i ceny, tym samym kontrolerem uzywajac klasy getCover()... nei wiem po co sie meczyc jezeli w presta wszystko jest "na tacy" ;)

Edited by design4VIP (see edit history)
Link to comment
Share on other sites

  • 0

 spróbuj tak
 
 
 fragment kodu z pliku  /classes/Search.php, funkcja find, najlepiej nadpisz tą metodę w folderze /override
 

 if ($ajax) {
            $sql = 'SELECT DISTINCT p.id_product, pl.name pname, cl.name cname,
                        cl.link_rewrite crewrite, pl.link_rewrite prewrite '.$score.'
                    FROM '._DB_PREFIX_.'product p
                    INNER JOIN `'._DB_PREFIX_.'product_lang` pl ON (
                        p.`id_product` = pl.`id_product`
                        AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').'
                    )
                    '.Shop::addSqlAssociation('product', 'p').'
                    INNER JOIN `'._DB_PREFIX_.'category_lang` cl ON (
                        product_shop.`id_category_default` = cl.`id_category`
                        AND cl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('cl').'
                    )
                    WHERE p.`id_product` '.$product_pool.'
                    ORDER BY position DESC LIMIT 10';
                    
                // zmiany
                $produkty = $db->executeS($sql, true, false);
                
                $context = Context::getContext();
                
                $currency = new Currency($context->currency->id);
                $usetax = (Product::getTaxCalculationMethod((int)$context->customer->id) != PS_TAX_EXC);
                
                foreach ( $produkty as &$produkt ) {
                    $produkt['cena'] = Tools::displayPrice(Product::getPriceStatic((int)$produkt['id_product'], $usetax), $currency);
                        
                }

                return $produkty;
                
                // end zmiany
            
            
            
            //  $db->executeS($sql, true, false); // oryginalne
        }

       
    
    
w pliku /TWOJ_SZABLON/js/modules/blocksearch/blocksearch.js okolo 50 wiersza zmień na
   

mytab[mytab.length] = { data: data[i], value: data[i].cname + ' > ' + data[i].pname + data[i].cena};


powinno działać, dostosuj wygląd do swoich potrzeb,

robione na szybko na wersji 1.6.1.9, przetestuj
 

Link to comment
Share on other sites

  • 0

 spróbuj tak

 

 

 fragment kodu z pliku  /classes/Search.php, funkcja find, najlepiej nadpisz tą metodę w folderze /override

 

 if ($ajax) {
            $sql = 'SELECT DISTINCT p.id_product, pl.name pname, cl.name cname,
                        cl.link_rewrite crewrite, pl.link_rewrite prewrite '.$score.'
                    FROM '._DB_PREFIX_.'product p
                    INNER JOIN `'._DB_PREFIX_.'product_lang` pl ON (
                        p.`id_product` = pl.`id_product`
                        AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').'
                    )
                    '.Shop::addSqlAssociation('product', 'p').'
                    INNER JOIN `'._DB_PREFIX_.'category_lang` cl ON (
                        product_shop.`id_category_default` = cl.`id_category`
                        AND cl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('cl').'
                    )
                    WHERE p.`id_product` '.$product_pool.'
                    ORDER BY position DESC LIMIT 10';
                    
                // zmiany
                $produkty = $db->executeS($sql, true, false);
                
                $context = Context::getContext();
                
                $currency = new Currency($context->currency->id);
                $usetax = (Product::getTaxCalculationMethod((int)$context->customer->id) != PS_TAX_EXC);
                
                foreach ( $produkty as &$produkt ) {
                    $produkt['cena'] = Tools::displayPrice(Product::getPriceStatic((int)$produkt['id_product'], $usetax), $currency);
                        
                }

                return $produkty;
                
                // end zmiany
            
            
            
            //  $db->executeS($sql, true, false); // oryginalne
        }

       

    

    

w pliku /TWOJ_SZABLON/js/modules/blocksearch/blocksearch.js okolo 50 wiersza zmień na

   

mytab[mytab.length] = { data: data[i], value: data[i].cname + ' > ' + data[i].pname + data[i].cena};

powinno działać, dostosuj wygląd do swoich potrzeb,

 

robione na szybko na wersji 1.6.1.9, przetestuj

 

 

atomek,

 

Dzięki za odpowiedź. Źle to zabrzmi ale nie do końca rozumiem o czym piszesz. Co i Gdzie podmienić. 

Wiem że na pewno napisałeś to tak że inni rozumieją ale mi coś kurde nie idzie.

 

Mogę prosić o małe tłumaczenie? 

Dziękuję z góry 

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...