wdrożenia PrestaShop

Wyszukiwarka Ajax wyświetla ceny netto

  • 2 Odpowiedzi
  • 2313 Wyświetleń

0 użytkowników i 1 Gość przegląda ten wątek.

*

lukaszwojcik

  • Gość
Wyszukiwarka Ajax wyświetla ceny netto
« dnia: Grudzień 30, 2015, 11:37:25 am »
Witam,



Mam kłopot z wyszukiwaniem Ajax z podpowiedziami produktów, produkty są wyświetlane w cenach netto oraz ze znacznikiem $ zamiast zł, waluty w sklepie są poustawiane prawidłowo, ponieważ po wciśnięciu enter wyniki wyszukiwania są już w prawidłowych cenach i walucie oraz dodaniu do koszyka, na stronie produktu tak samo.



Z czego może wynikać problem ?



Pozdrawiam

*

Offline design4VIP

  • user
  • Mieszkaniec
  • *****
  • 3,866
  • 131
    • design4VIP z innej strony...
  • PrestaShop: PS
  • Status: Programista
Odp: Wyszukiwarka Ajax wyświetla ceny netto
« Odpowiedź #1 dnia: Grudzień 30, 2015, 07:10:27 pm »
z bledow w module wyszukwiarki. pytanie, czy to oryginalny (deault) szablon/modul czy jakis "obcy" bo juz spotkalem sie z takimi modulami, ze wlasnie ceny byly poberane netto a watula $ byla wpisana na stale w kodzie szablonu modulu.
design4VIP z innej strony...

*

lukaszwojcik

  • Gość
Odp: Wyszukiwarka Ajax wyświetla ceny netto
« Odpowiedź #2 dnia: Styczeń 05, 2016, 02:59:31 pm »
poniżej trochę kodów :

Udało mi się wywalić znacznik $ , kod z pliku  blocksearch.js , jednak nie jestem w stanie zmienić cen na brutto,


if (typeof ajaxsearch != 'undefined' && ajaxsearch && typeof blocksearch_type !== 'undefined' && blocksearch_type)
        $("#search_query_" + blocksearch_type).autocomplete(
            search_url,
            {
                minChars: 3,
                max: 15,
                width: (width_ac_results > 0 ? width_ac_results : 500),
                selectFirst: false,
                scroll: true,
                dataType: "json",
                formatItem: function(data, i, max, value, term) {
                    if(data.image!=null)
                                return "<img src=\"" + baseDir + "img/p/" + data.image.split('').join('/')+"/" + data.image + "-small_default.jpg\" alt=\"" + data.pname + "\" />" + "<div class='right-search'>" + value + "</div>";
                        else
                                                                return value;},
                parse: function(data) {
                    var mytab = new Array();
                    for (var i = 0; i < data.length; i++)
                        mytab[mytab.length] = { data: data[i], value: '<h5>' + data[i].pname + '</h5>' + ' <span class="price"> ' + Number(data[i].pprice).toFixed(2) + '</span>'}; // data[i].cname + ' > ' +
                    return mytab;
                },
                extraParams: {
                    ajaxSearch: 1,
                    id_lang: id_lang
                }
            }
        )
        .result(function(event, data, formatted) {
            $('#search_query_' + blocksearch_type).val(data.pname);
            document.location.href = data.product_link;
        });
});

blocksearch.php


<?php
/*
* 2007-2015 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <contact@prestashop.com>
*  @copyright  2007-2015 PrestaShop SA
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*/

if (!defined('_PS_VERSION_'))
    exit;

class 
BlockSearch extends Module
{
    public function 
__construct()
    {
        
$this->name 'blocksearch';
        
$this->tab 'search_filter';
        
$this->version '1.7.0';
        
$this->author 'PrestaShop';
        
$this->need_instance 0;

        
parent::__construct();

        
$this->displayName $this->l('Quick search block');
        
$this->description $this->l('Adds a quick search field to your website.');
        
$this->ps_versions_compliancy = array('min' => '1.6''max' => _PS_VERSION_);
    }

    public function 
install()
    {
        if (!
parent::install() || !$this->registerHook('top') || !$this->registerHook('header') || !$this->registerHook('displayMobileTopSiteMap') || !$this->registerHook('displaySearch'))
            return 
false;
        return 
true;
    }

    public function 
hookdisplayMobileTopSiteMap($params)
    {
        
$this->smarty->assign(array('hook_mobile' => true'instantsearch' => false));
        
$params['hook_mobile'] = true;
        return 
$this->hookTop($params);
    }

    
/*
public function hookDisplayMobileHeader($params)
    {
        if (Configuration::get('PS_SEARCH_AJAX'))
            $this->context->controller->addJqueryPlugin('autocomplete');
        $this->context->controller->addCSS(_THEME_CSS_DIR_.'product_list.css');
    }
*/

    
public function hookHeader($params)
    {
        
$this->context->controller->addCSS(($this->_path).'blocksearch.css''all');

        if (
Configuration::get('PS_SEARCH_AJAX'))
            
$this->context->controller->addJqueryPlugin('autocomplete');

        if (
Configuration::get('PS_INSTANT_SEARCH'))
            
$this->context->controller->addCSS(_THEME_CSS_DIR_.'product_list.css');

        if (
Configuration::get('PS_SEARCH_AJAX') || Configuration::get('PS_INSTANT_SEARCH'))
        {
            
Media::addJsDef(array('search_url' => $this->context->link->getPageLink('search'Tools::usingSecureMode())));
            
$this->context->controller->addJS(($this->_path).'blocksearch.js');
        }
    }

    public function 
hookLeftColumn($params)
    {
        return 
$this->hookRightColumn($params);
    }

    public function 
hookRightColumn($params)
    {
        if (
Tools::getValue('search_query') || !$this->isCached('blocksearch.tpl'$this->getCacheId()))
        {
            
$this->calculHookCommon($params);
            
$this->smarty->assign(array(
                
'blocksearch_type' => 'block',
                
'search_query' => (string)Tools::getValue('search_query')
                )
            );
        }
        
Media::addJsDef(array('blocksearch_type' => 'block'));
        return 
$this->display(__FILE__'blocksearch.tpl'Tools::getValue('search_query') ? null $this->getCacheId());
    }

    public function 
hookTop($params)
    {
        
$key $this->getCacheId('blocksearch-top'.((!isset($params['hook_mobile']) || !$params['hook_mobile']) ? '' '-hook_mobile'));
        if (
Tools::getValue('search_query') || !$this->isCached('blocksearch-top.tpl'$key))
        {
            
$this->calculHookCommon($params);
            
$this->smarty->assign(array(
                
'blocksearch_type' => 'top',
                
'search_query' => (string)Tools::getValue('search_query')
                )
            );
        }
        
Media::addJsDef(array('blocksearch_type' => 'top'));
        return 
$this->display(__FILE__'blocksearch-top.tpl'Tools::getValue('search_query') ? null $key);
    }

    public function 
hookDisplayNav($params)
    {
        return 
$this->hookTop($params);
    }

    public function 
hookDisplaySearch($params)
    {
        return 
$this->hookRightColumn($params);
    }

    private function 
calculHookCommon($params)
    {
        
$this->smarty->assign(array(
            
'ENT_QUOTES' =>        ENT_QUOTES,
            
'search_ssl' =>        Tools::usingSecureMode(),
            
'ajaxsearch' =>        Configuration::get('PS_SEARCH_AJAX'),
            
'instantsearch' =>    Configuration::get('PS_INSTANT_SEARCH'),
            
'self' =>            dirname(__FILE__),
        ));

        return 
true;
    }
}


blocksearch.tpl

<!-- Block search module -->
<div id="search_block_left" class="block exclusive">
    <h4 class="title_block">{l s='Search' mod='blocksearch'}</h4>
    <form method="get" action="{$link->getPageLink('search', true)|escape:'html'}" id="searchbox">
        <p class="block_content">
            <label for="search_query_block">{l s='Search products:' mod='blocksearch'}</label>
            <input type="hidden" name="controller" value="search" />
            <input type="hidden" name="orderby" value="position" />
            <input type="hidden" name="orderway" value="desc" />
            <input class="search_query" type="text" id="search_query_block" name="search_query" value="{$search_query|escape:'html':'UTF-8'|stripslashes}" />
            <input type="submit" id="search_button" class="button_mini" value="{l s='Go' mod='blocksearch'}" />
        </p>
    </form>
</div>
{include file="$self/blocksearch-instantsearch.tpl"}
<!-- /Block search module -->


blocksearch-instantsearch.tpl


{if $ajaxsearch}
<script type="text/javascript">
// <![CDATA[
$('document').ready(function() {

    var $input = $("#search_query_{$blocksearch_type}");

    $input.autocomplete(
    '{if $search_ssl == 1}{$link->getPageLink('search', true)|addslashes}{else}{$link->getPageLink('search')|addslashes}{/if}',
    {
        minChars: 3,
        max: 10,
        width: 500,
        selectFirst: false,
        scroll: false,
        dataType: "json",
        formatItem: function(data, i, max, value, term) {
            return value;
        },
        parse: function(data) {
            var mytab = [];
            for (var i = 0; i < data.length; i++)
                mytab[mytab.length] = { data: data[i], value: data[i].cname + ' > ' + data[i].pname };
            return mytab;
        },
        extraParams: {
            ajaxSearch: 1,
            id_lang: {$cookie->id_lang}
        }
    })
    .result(function(event, data, formatted) {
        $input.val(data.pname);
        document.location.href = data.product_link;
    });
});
// ]]>
</script>
{/if}

{if $instantsearch}
<script type="text/javascript">
// <![CDATA[
function tryToCloseInstantSearch()
{
    var $oldCenterColumn = $('#old_center_column');
    if ($oldCenterColumn.length > 0)
    {
        $('#center_column').remove();
        $oldCenterColumn.attr('id', 'center_column').show();
        return false;
    }
}

instantSearchQueries = [];
function stopInstantSearchQueries()
{
    for(var i=0; i<instantSearchQueries.length; i++) {
        instantSearchQueries[i].abort();
    }
    instantSearchQueries = [];
}

$('document').ready(function() {

    var $input = $("#search_query_{$blocksearch_type}");

    $input.on('keyup', function() {
        if ($(this).val().length > 4)
        {
            stopInstantSearchQueries();
            instantSearchQuery = $.ajax({
                url: '{if $search_ssl == 1}{$link->getPageLink('search', true)|addslashes}{else}{$link->getPageLink('search')|addslashes}{/if}',
                data: {
                    instantSearch: 1,
                    id_lang: {$cookie->id_lang},
                    q: $(this).val()
                },
                dataType: 'html',
                type: 'POST',
                headers: { "cache-control": "no-cache" },
                async: true,
                cache: false,
                success: function(data){
                    if($input.val().length > 0)
                    {
                        tryToCloseInstantSearch();
                        $('#center_column').attr('id', 'old_center_column');
                        $('#old_center_column').after('<div id="center_column" class="' + $('#old_center_column').attr('class') + '">'+data+'</div>').hide();
                        // Button override
                        ajaxCart.overrideButtonsInThePage();
                        $("#instant_search_results a.close").on('click', function() {
                            $input.val('');
                            return tryToCloseInstantSearch();
                        });
                        return false;
                    }
                    else
                        tryToCloseInstantSearch();
                }
            });
            instantSearchQueries.push(instantSearchQuery);
        }
        else
            tryToCloseInstantSearch();
    });
});
// ]]>
</script>
{/if}