Jump to content
  • 0

search.tpl


r4di04ctiv3

Question

Dzien dobry. Czy moze ktos wie jak zrobic zeby na liscie wyszukanych produktow wyswietlalo sie tez pole product.reference i cena?

probowalem  na rozne sposoby ale tylko wyswietla sie  {$product.name} zadne inne {$product.reference} {$product.price}.

kod w tym miejscu wyglada tak:

<td width="90" align="center">
                
                
                                <a href="product.php?id_product={$product.id_product}" class="product_img_link" title="{$product.name|escape:'htmlall':'UTF-8'}">

                <img src="{$product.sciezka_img}" style="border: none"></a>
                
            </td>
            <td>
                &nbsp;&nbsp;
                <a href="product.php?id_product={$product.id_product}" style="text-decoration: none; color: #180000;">
                    {$product.name}
                </a>
            </td>
            
            <td>
                &nbsp;&nbsp;
                <a href="product.php?id_product={$product.id_product}" style="text-decoration: none; color: #180000;">
                    {$product.reference}
                </a>
            </td>

 

Byc moze trzeba w jakims pliku innym cos dodac by przekazywal zawartosc product_reference i cen tutaj ?

Prestashop 1.4.4.1

Dziekuje

Link to comment
Share on other sites

28 answers to this question

Recommended Posts

  • 0

Zajrzyj do pliku /classes/Search.php, metoda find, jest tam m.in. taki kod:

if ($ajax)
{
    return $db->ExecuteS('
    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.')
    INNER JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.(int)$id_lang.')
    WHERE p.`id_product` '.$productPool.'
    ORDER BY position DESC LIMIT 10');
}


Na początek musisz dodać do zapytania sql pola które potrzebujesz

 

Link to comment
Share on other sites

  • 0
Dnia 06.05.2018 o 8:30 PM, atomek napisał:

Zajrzyj do pliku /classes/Search.php, metoda find, jest tam m.in. taki kod:


if ($ajax)
{
    return $db->ExecuteS('
    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.')
    INNER JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.(int)$id_lang.')
    WHERE p.`id_product` '.$productPool.'
    ORDER BY position DESC LIMIT 10');
}


Na początek musisz dodać do zapytania sql pola które potrzebujesz

 

jak to zrobic? potrzebuje tylko by wyswietlala mi sie cena netto obok .

W pliku search.tpl dodalem takie cos na wzor $product.name :
<td>
                &nbsp;&nbsp;
                <a href="product.php?id_product={$product.id_product}" style="text-decoration: none; color: #180000;">
                    {$product.name}
                </a>
            </td>
            
            <td>
                &nbsp;&nbsp;
                <span class="price" style="display: inline;">
                    {convertPrice price=$product.price_tax_exc}
                </span>
                
            </td>

 

Po dodaniu tego wyswietla mi sie Nazwa productu ktorego szukalem, dalej wyswietla mi sie cena ale zawsze 0,00zł czyli z tego co rozumiem plik search.php nie przekazuje do plika search.tpl ceny produktu bo nie ma tego pola w zapytaniu sql?

Jesli mozna prosze napisac co tam mam i gdzie wkleic zeby takie zapytanie jednak bylo.

dziekuje

Link to comment
Share on other sites

  • 0

witam ponownie.

Dodalem w tym zapytaniu p.price wyglada to teraz tak:

if ($ajax)
        {
            return $db->ExecuteS('
            SELECT DISTINCT p.price, 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.')
            INNER JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.(int)$id_lang.')
            WHERE p.`id_product` '.$productPool.'
            ORDER BY position DESC LIMIT 10');
        }

 

tylko chyba zle to zrobilem bo nic sie nie zmienilo 😀

prosze o dalsza podpowiedz

dzieki

Link to comment
Share on other sites

  • 0

jeszcze jedno zapytam... czy po takiej zmianie w pliku /classes/Search.php  dobrze robie ze w pliku /themes/prestashop/search.tpl wpisuje takie cos w miejscu gdzie chce by ta cena wyswietlala sie:
 <td>
                &nbsp;&nbsp;
                <a href="product.php?id_product={$product.id_product}" style="text-decoration: none; color: #180000;">
                    {$product.price}
                </a>
               
            </td>

 

czy jakos inaczej mam tu napisac nie {$product.price} tylko {$product.unit_price} czy jeszcze jakos inaczej?

Link to comment
Share on other sites

  • 0
42 minuty temu, design4VIP napisał:

Zdumpuj sobie zmienna $product i dostaniesz wszystkie podzmienne jakie zwraca

{$product|var_dump} 

zrobilem to i niestety nie zwraca nic z cena sa tylko takie:

{ ["id_product"]["id_lang"]["description"] ["description_short"]["link_rewrite"]["meta_description"] ["meta_keywords"]["meta_title"]["name"]["available_now"] ["available_later"] ["id_image"]["position"] ["cover"] ["sciezka_img"] }

czyli cos gdzies trzeba zmienic jeszcze zeby zwracalo cene?

Link to comment
Share on other sites

  • 0

Troche juz "zdziadzialem" bo od 3 lat nie dzialam na presta. Nie pamietam dokladnie w ktorej tabeli trzymane sa ceny, czy aby napewno w ps_product?

Druga sprawa... SELECT DISTING, takie sformuowanie pobiera tylko unikalne dane, czy pobierze cene jak beda wystepowac takiebsame ceny roznych produktow?

Link to comment
Share on other sites

  • 0
18 minut temu, design4VIP napisał:

Troche juz "zdziadzialem" bo od 3 lat nie dzialam na presta. Nie pamietam dokladnie w ktorej tabeli trzymane sa ceny, czy aby napewno w ps_product?

Druga sprawa... SELECT DISTING, takie sformuowanie pobiera tylko unikalne dane, czy pobierze cene jak beda wystepowac takiebsame ceny roznych produktow?

niestety nie znam sie na tym kompletnie, jedyne nad czym zastanawiam sie czemu np klikajac na ktoras z kategorii na liscie sa wyswietlane wszystkie te dane? Znalazlem fragment kodu w pliku product-list.tpl ktory wyswietla wlasnie ta cene ale po wklejeniu tego fragmentu do pliku search.tpl nadal nic 😀.

wyswietla sie zawsze albo cena 0.00zl albo zadna .

Metoda atomka tez nie dziala u mnie bo nie ma w ps1.4 nawet takich plikow w tych folderach jak w ps1.6 albo sa z inna zawartoscia  wiec nie wiem tak naprawde co gdzie zmieniac i szukac.

chce by bylo tak jak na liscie produktow:

image.png.5db0a080230ced48a9953293cede5cd8.png

a mam  niestety tak :

image.png.b559850ee81901f8786426a577b1e988.png

Pomocy pls!!!

 

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

  • 0
1 godzinę temu, atomek napisał:

Chyba masz jakiś inny problem, presta w wersji 1.4.4.1 standardowo wyświetla ceny produktów w wynikach wyszukiwania i nie są potrzebne żadne przeróbki.

Aby wyświetlić kod produktu wystarczy dodać {$product.reference} w pliku product-list.tpl.

sprobowalem wyszukac w innym  sklepie (konkurencji)  opartym tez na ps1.4.4.1 no i tez po wpisywaniu w wyszukiwarce sklepowej jakiegos artykulu w pojawiajacej sie liscie znalezionych produktow jest tylko zdjecie, nazwa i przycisk szczegoly, nic wiecej. Wiec nie wiem czy 1.4.4.1 standardowo to wyswietla,  sprobuje w najblizszym czasie zainstalowac 1.4.4.1 (sciagnalem ta wersje juz ze stony) na jakims darmowym hostingu i zobaczyc.

Co do kodu produktu nie potrzebuje go by sie wyswietlal ale on akurat wyswietla sie, nie wyswietla sie tylko cena, ja mozna zobaczyc dopiero na stronie produktu klikajac w przycisk szczegoly

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

  • 0

To, ze wyswietla sie na innych stronach to kwestia kontrolerow. Zmiany, zeby wyswietlilo sie w wyszukiwarce musisz naniesc w konyrolerze modulu BlockSearch. Tam musisz namierzyc skad z tabeli pobierane sa dane i jakie. Dalej dokonac zmian czy to w saamym module czy w konyrolerze glownym strony, jezeli do takowego sie odnosi. 

Link to comment
Share on other sites

  • 0
11 godzin temu, atomek napisał:

Chyba masz jakiś inny problem, presta w wersji 1.4.4.1 standardowo wyświetla ceny produktów w wynikach wyszukiwania i nie są potrzebne żadne przeróbki.

Aby wyświetlić kod produktu wystarczy dodać {$product.reference} w pliku product-list.tpl.

atomek chyba masz racje. porownalem oryginalny plik search.tpl ze swoim sa takie same do linijki 35. od linijki 36 oryginalny wyglada tak:

{if !$nbProducts}
    <p class="warning">
        {if isset($search_query) && $search_query}
            {l s='No results found for your search'}&nbsp;"{if isset($search_query)}{$search_query|escape:'htmlall':'UTF-8'}{/if}"
        {elseif isset($search_tag) && $search_tag}
            {l s='No results found for your search'}&nbsp;"{$search_tag|escape:'htmlall':'UTF-8'}"
        {else}
            {l s='Please type a search keyword'}
        {/if}
    </p>
{else}
    <h3><span class="big">{$nbProducts|intval}</span>&nbsp;{if $nbProducts == 1}{l s='result has been found.'}{else}{l s='results have been found.'}{/if}</h3>
    {if !isset($instantSearch) || (isset($instantSearch) && !$instantSearch)}{include file="$tpl_dir./product-sort.tpl"}{/if}
    {include file="$tpl_dir./product-list.tpl" products=$search_products}
    {if !isset($instantSearch) || (isset($instantSearch) && !$instantSearch)}{include file="$tpl_dir./pagination.tpl"}{/if}
{/if}


a moj tak:
{foreach from=$results item=product}
    <table width="100%" border="0" cellpadding="0" cellspacing="0" style="margin-top: 1px; margin-bottom: 1px; background-color: #E5E2D4;">
        <tr height="90">
            <td width="90" align="center">
                                <a href="product.php?id_product={$product.id_product}" class="product_img_link" title="{$product.name|escape:'htmlall':'UTF-8'}">
                <img src="{$product.sciezka_img}" style="border: none"></a>
            </td>
            <td>
                &nbsp;&nbsp;
                <a href="product.php?id_product={$product.id_product}" style="text-decoration: none; color: #180000;">
                    {$product.name}
                </a>
            </td>
            <td>
                &nbsp;&nbsp;
                <a href="product.php?id_product={$product.id_product}" style="text-decoration: none; color: #180000;">
                    <span class="price">{convertPrice price=$product.price_tax_exc}</span>
                </a>
            </td>        
            <td align="right">
                <a href="product.php?id_product={$product.id_product}" style="text-decoration: none;">
                    <img src="{$base_dir}themes/prestashop/img/btn_szczegoly.png" border="0">
                </a>&nbsp;
            </td>
        </tr>
    </table>
{/foreach}

Z tym ze ta kolumne <td> z convertprice </td> dodalem juz ja .

Sprobowalem tez podmienic ten moj plik na oryginalny ale niestety zamiast wyszukiwac cos zawsze wydaje blad typu "No results found" nawet jesli chcesz wyszukac produkt ktory na 100% jest.

Link to comment
Share on other sites

  • 0

Sprawdź SearchController.php, wygląda na to że został zmieniony, możesz mieć nadpisany w folderze override/controllers/ lub zmieniony w oryginalnej lokalizacji

do Twojej niestandardowej templatki informacje o produktach są przekazywane w zmiennej $results, oryginalna templatka pobiera dane z $search_products

sprawdź też w klasie Search.php i w module blocksearch, może są tam jakieś niestandardowe rozwiązania

Link to comment
Share on other sites

  • 0
1 godzinę temu, atomek napisał:

Sprawdź SearchController.php, wygląda na to że został zmieniony, możesz mieć nadpisany w folderze override/controllers/ lub zmieniony w oryginalnej lokalizacji

do Twojej niestandardowej templatki informacje o produktach są przekazywane w zmiennej $results, oryginalna templatka pobiera dane z $search_products

sprawdź też w klasie Search.php i w module blocksearch, może są tam jakieś niestandardowe rozwiązania

w SearchController.php z tego co widze jest duzo zmian, znalazlem tam taki kod mysle ze to on przekazuje niektore informacje bo akurat 3 ostatnie z dumpowania to chyba te z tego kodu:

$query = 'SELECT * FROM ps_product_lang pl LEFT JOIN ps_image i ON(i.id_product = pl.id_product AND i.position = 1) WHERE pl.id_lang=6 AND pl.name LIKE "%'.$query.'%"';
        $results = Db::getInstance()->ExecuteS($query);
        //echo sizeof($results);
        foreach($results as &$row)
        {
            $res = Product::getCover($row['id_product']);
            $cover = new Image($row['id_image'], $id_lang);
            //$rewrite =
            $row['sciezka_img'] = $cover->id.'-home/'.$row['link_rewrite'].'.jpg';
        }


czy mozna tutaj cos dodac zeby przekazywalo tez cene? czy jest to bardziej skomplikowane?

Link to comment
Share on other sites

  • 0
4 hours ago, r4di04ctiv3 said:

{if isset($search_query) && $search_query}
            {l s='No results found for your search'}&nbsp;"{if isset($search_query)}{$search_query|escape:'htmlall':'UTF-8'}{/if}"

Jak dla mnie to w r

Tym niby oryginalnym pliku jest blad. Wg tego zapytania/zaleznosci tlumaczac: 

Jezeli jest element wyszukanu to "nie ma elementu"

Jezeli jest element wyszukany "to jest element" 

 

Czyli jedno z drugim sie wyklucza. W pierwszej zaleznosci brakuje wykrzyknikow czyli "nie"

Link to comment
Share on other sites

  • 0
14 minutes ago, r4di04ctiv3 said:

czy mozna tutaj cos dodac zeby przekazywalo tez cene? czy jest to bardziej skomplikowane?

Tutaj ktos robil wersje z wyswietlaniem obrazkow. Masz tylko polaczone tabele image i lang. Czyli za bardzo nie byloby z czego wyciagnac ceny. Mozesz dodac przez JOIN tabele gdzie pobierze cene i pobrac zmienna price

Link to comment
Share on other sites

  • 0
1 minutę temu, design4VIP napisał:

Tutaj ktos robil wersje z wyswietlaniem obrazkow. Masz tylko polaczone tabele image i lang. Czyli za bardzo nie byloby z czego wyciagnac ceny. Mozesz dodac przez JOIN tabele gdzie pobierze cene i pobrac zmienna price

no racja, chyba przerabiali po to by obrazki byly. Co do oryginalnego pliku to jest on pobrany ze strony prestashop wiec moze od samego poczatku byl taki blad nie wiem, ale i tak bym wolal zostawic wersje przerobiona z obrazkami ale tez jakos ta cene dodac. Czy mozna dokladniej z tym JOIN, krok po kroku co i gdzie zrobic, czy to jest trudne i nie ogranicza sie "wklej to tu...wytnij to stad" ?

Link to comment
Share on other sites

  • 0

po
$row['sciezka_img'] = $cover->id.'-home/'.$row['link_rewrite'].'.jpg';

dodaj
$row['price'] = Product::getPriceStatic($row['id_product']);


w templatce search.tpl odwołaj się do $product.price


ps.

nie prościej było by przywrócić oryginalne pliki, co teraz masz w wynikach wyszukiwani, czego nie było wcześniej?

Link to comment
Share on other sites

  • 0
4 minuty temu, atomek napisał:

po
$row['sciezka_img'] = $cover->id.'-home/'.$row['link_rewrite'].'.jpg';

dodaj
$row['price'] = Product::getPriceStatic($row['id_product']); 


w templatce search.tpl odwołaj się do $product.price


ps.

nie prościej było by przywrócić oryginalne pliki, co teraz masz w wynikach wyszukiwani, czego nie było wcześniej?

atomek , jestes super : ) to dziala , jeden minus ze wyswietla cene brutto czyli z VAT , czy mozna jakos zrobic zeby byla to cena NETTO ? dodam ze  $product.price_tax_exc nie dziala tylko $product.price

Link to comment
Share on other sites

  • 0
23 minutes ago, r4di04ctiv3 said:

.Wiem ze kazda praca kosztuje tak ze jestem gotowy zaplacic za udzielone podpowiedzi, prosze smialo pisac w priw.

Moze i dostales od atomka gotowca ale kombinowales i nie czekales na niego jak (nieublizajac nikomu) wiekszosc povzatkujacych na tym i wielu innych polach. Zasluzyles na to rozwiazanie. Moim zadniem nietaktem bylo by czerpac z tego korzysci :)

tobie tez najlepszego w Nowym Roku i prostych sciezek do poznania Presta 

Link to comment
Share on other sites

  • 0

Poprostu nawet jesli czegos nie potrafie i ktos mi chce pomoc odplatnie, bardziej mnie satysfakcjonuje taka wlasnie pomoc kiedy moge robic tez cos przy pomocy innych niz poprostu kupic gotowa modyfikacje czy zaplacic komus kto to zrobie za mnie od A do Z. A tak  cos jednak zostanie i w mojej glowie  wiec nauka tez kosztuje . Przyznam ze juz wczesniej grzebalem w tym pliku SearchControler i akurat w tym miejscu cos juz probowalem dodawac wiec bylem blisko, ale jednak zabraklo mi mojej wiedzy by to dokonczyc. Tak ze jestem bardzo wdzieczny ze nie zostalem olany jak to czesto jest . Z ta przerobka walczylem juz dlugo i w reszcie dzieki Wam udalo mi sie to zrobic. Drobnostka niby, ale jestem MEGA zadowolony.

Dzieki!

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