Právě je 27 črc 2017 20:54

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 5 ] 
Autor Zpráva
 Předmět příspěvku: PrestaShop - Aktualizace pole dostupnosti v košíku
PříspěvekNapsal: 26 čer 2017 13:13 
C4 zákazník

Registrován:
09 bře 2017 14:15
Příspěvky:
16
Dobrý den,


v eshopu mám standardně povoleny objednávky. V prvním kroku objednávky je v poli dostupnost (v případě, že je zboží skladem) vypsáno "Skladem". Řekněmě, že jsou skladem dvě položky. V případě, že v poli množství uvedu množství 3 kusy (tedy o jeden kus více, než je skladem), nedojde k přepsání pole dostupnosti ze "Skladem" na "Není skladem".

Rád bych se zeptal, zdali již někdo podobný problém řešil, resp. jak na to?


S pozdravem

dpkk.cz


Přílohy:
dostupnost.png
dostupnost.png [ 113.86 KiB | Zobrazeno 282 krát ]
Nahoru
 Profil  
 
 Předmět příspěvku: Re: PrestaShop - Aktualizace pole dostupnosti v košíku
PříspěvekNapsal: 28 čer 2017 11:04 
C4 podpora
C4 podpora

Registrován:
30 čer 2009 09:14
Příspěvky:
6087
Dobrý den,

bohužel se jedná o standardní chování aplikace PrestaShop, takže jedinou možností by byla úprava zdrojového kódu na míru. Pokud máte o úpravu zájem, můžete se zkusit obrátit na některého z našich partnerů (příp. vpravo blok PrestaShop partneři), který se aplikaci věnuje.

_________________
Radek Plašil
Webhosting C4
https://www.c4.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PrestaShop - Aktualizace pole dostupnosti v košíku
PříspěvekNapsal: 06 črc 2017 15:08 
C4 zákazník

Registrován:
15 srp 2016 13:22
Příspěvky:
28
Dobrý den. Přikládám vám návrh na řešení. Před, ale vás musím upozornit na pár věcí.
1) Odzkoušeno na verzi 1.6.1.11
2) Pokud si netroufáte na úpravu zdrojových kódů držte se přešlé rady.
3) Předem si zálohujte veškeré soubory které budete upravovat

A teď samotný návod.

Krok 1.

Otevřete si (v PSpad editoru) soubor themes/vase-sablona/shopping-cart-product-line.tpl

Naleznětě řádky:

Kód:
   {if $PS_STOCK_MANAGEMENT}
      <td class="cart_avail"><span class="label{if $product.quantity_available <= 0 && isset($product.allow_oosp) && !$product.allow_oosp} label-danger{elseif $product.quantity_available <= 0} label-warning{else} label-success{/if}">{if $product.quantity_available <= 0}{if isset($product.allow_oosp) && $product.allow_oosp}{if isset($product.available_later) && $product.available_later}{$product.available_later}{else}{l s='In Stock'}{/if}{else}{l s='Out of stock'}{/if}{else}{if isset($product.available_now) && $product.available_now}{$product.available_now}{else}{l s='In Stock'}{/if}{/if}</span>{if !$product.is_virtual}{hook h="displayProductDeliveryTime" product=$product}{/if}</td>
   {/if}


a nahraďte jej těmito řádky:

Kód:
   {if $PS_STOCK_MANAGEMENT}
      <td class="cart_avail"> {if $product.quantity_available < $product.cart_quantity && $product.quantity_available >= 0}<span class="backorderedown">{l s='%d backordered' sprintf=$product.cart_quantity - $product.quantity_available}</span>{else}  {if $product.quantity_available <= 0}<span class="notavailableown">{if $product.allow_oosp}{if isset($product.available_later) && $product.available_later}{$product.available_later}</span>{else}<span class="availableown">{l s='In Stock'}</span>{/if}{else}<span class="backorderedown">{l s='Backordered'}</span>{/if}{else}<span class="availableown">{if isset($product.available_now) && $product.available_now}{$product.available_now}</span>{else}<span class="availableown">{l s='In Stock'}</span>{/if}{/if}{hook h="displayProductDeliveryTime" product=$product} </td> {/if}
   {/if}


Krok 2:

Otevřte si soubor (v PSpad editoru) themes/vase-sablona/js/cart-summary.js
Nalezněte funkci
Kód:
function upQuantity(id, qty)

a ZA!!!!! tuto funkci přidejte následující funkci

Kód:
function updateCartAvailability(json)
{
   var i;
   var product_list = new Array();

   if (typeof json == 'undefined')
      return;
      
   $('div.error').fadeOut();      

   for (i=0;i<json.products.length;i++)
      product_list[json.products[i].id_product + '_' + json.products[i].id_product_attribute + '_' + json.products[i].id_address_delivery] = json.products[i];
      
   for (i in product_list)
   {
      var key_for_blockcart_nocustom = product_list[i].id_product + '_' + product_list[i].id_product_attribute + '_' + ((product_list[i].quantity_without_customization != product_list[i].quantity)? 'nocustom' : '0') + '_' + product_list[i].id_address_delivery;
      
      if (product_list[i].quantity_available - product_list[i].cart_quantity >= 0) {
            $('#product_' + key_for_blockcart_nocustom + ' .cart_ref').html('<span class="availableown">{l s='In Stock'}</span>');
         } else if (product_list[i].quantity_available - product_list[i].cart_quantity < 0 && product_list[i].allow_oosp) {
            $('#product_' + key_for_blockcart_nocustom + ' .cart_ref').html('<span class="backorderedown">{l s='%d backordered' sprintf=$product.cart_quantity - $product.quantity_available}</span>');
         } else if (product_list[i].quantity_available - product_list[i].cart_quantity < 0 && !product_list[i].allow_oosp) {
            $('#product_' + key_for_blockcart_nocustom + ' .cart_ref').html('<span class="availableown">{l s='Out of stock'}</span>');
         }
   }

}


Krok 3: Oba soubory uložte na FTP kam patří.
Krok 4: V nástroje / výkon - proveďte vynoucenou kompilaci bez cache paměti ulož te a vrať zpět.
Krok 5: V nástroje / výkon - Vyčistit mezipaměť
Krok 6: Vyzkoušet a HOTOVO

V případě nejasností se na nás obraťte na mail: info@profi-prestashop.cz


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PrestaShop - Aktualizace pole dostupnosti v košíku
PříspěvekNapsal: 10 črc 2017 21:35 
C4 zákazník

Registrován:
09 bře 2017 14:15
Příspěvky:
16
Dobrý den,


aplikoval jsem Vaše řešení a i přes drobný problém (na stránce nefunguje javascript) máte ode mne opravdu velký palec nahoru za kus dobře odvedené práce. :)


Ještě jednou díky a mějte se

dpkk.cz


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PrestaShop - Aktualizace pole dostupnosti v košíku
PříspěvekNapsal: 21 črc 2017 17:41 
C4 zákazník

Registrován:
15 srp 2016 13:22
Příspěvky:
28
Zdravím.

Jelikož mé předchozí řešení má problém s některými moduly přináším opravené řešení přes ajax.

1) V souboru themes/vase_sablona/shoping-cart-product-line.tpl
najděte řádky:
Kód:
   {if $PS_STOCK_MANAGEMENT}
      <td class="cart_avail"><span class="label{if $product.quantity_available <= 0 && isset($product.allow_oosp) && !$product.allow_oosp} label-danger{elseif $product.quantity_available <= 0} label-warning{else} label-success{/if}">{if $product.quantity_available <= 0}{if isset($product.allow_oosp) && $product.allow_oosp}{if isset($product.available_later) && $product.available_later}{$product.available_later}{else}{l s='In Stock'}{/if}{else}{l s='Out of stock'}{/if}{else}{if isset($product.available_now) && $product.available_now}{$product.available_now}{else}{l s='In Stock'}{/if}{/if}</span>{if !$product.is_virtual}{hook h="displayProductDeliveryTime" product=$product}{/if}</td>
   {/if}


a nahraďte jej řádky:
Kód:
{if $PS_STOCK_MANAGEMENT}
    <td class="pp_cart_stock">
        {if $product.quantity_available-$product.cart_quantity >= 0}
            <img src="{$img_dir}skladem.png" alt="{l s='Available'}" title="{l s='Available'}">
        {else if $product.quantity_available-$product.cart_quantity < 0 && $product.allow_oosp}
            <img src="{$img_dir}naskladneni.png" alt="{l s='On Backorder'}" title="{l s='On Backorder'}">
        {else if $product.quantity_available-$product.cart_quantity < 0 && !$product.allow_oosp}
            <img src="{$img_dir}neni_skladem.png" alt="{l s='Out Of Stock'}" title="{l s='Out Of Stock'}">       
        <script type="text/javascript">
            // <![CDATA[
            var prod_name = "{$product.name}";
            {if isset($product.attributes) && $product.attributes}
                prod_name += ' - ' + "{$product.attributes|escape:'htmlall':'UTF-8'}"
            {/if}

            unavailable_products.push(prod_name);

            // ]]>
        </script>
        {/if}
    </td>  {/if}

2) v souboru themes/vase-sablona/js/cart-summary.js nalezněte funkci function downQuantity(id, qty)
ZA tuto funkci tedy za poslední závoru } funkce vložte následující dvě funkce:
Kód:
function checkAvailability()
{
    $.ajax({
        type: 'POST',
        headers: { "cache-control": "no-cache" },
        url: baseUri + '?rand=' + new Date().getTime(),
        async: true,
        cache: false,
        dataType: 'json',
        data: 'controller=cart'
            + '&ajax=true'
            + '&getproductprice=true'
            + '&summary=true'
            + '&token=' + static_token
            + '&allow_refresh=1',
        success: function(jsonData)
        {
            if (jsonData.hasError)
            {
                var errors = '';
                for(var error in jsonData.errors)
                    //IE6 bug fix
                    if(error !== 'indexOf')
                        errors += $('<div />').html(jsonData.errors[error]).text() + "\n";
                alert(errors);
            }
            else
            {
                updateCartAvailability(jsonData.summary);       
            }
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            if (textStatus !== 'abort') {
                //alert("TECHNICAL ERROR: unable to verify quantity \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
                }
        }
    });
    setTimeout ('checkAvailability()', 500);
}

a
Kód:
function updateCartAvailability(json)
{
    var i;
    var product_list = new Array();

    if (typeof json == 'undefined')
        return;
       
    $('div.error').fadeOut();       

    for (i=0;i<json.products.length;i++)
        product_list[json.products[i].id_product + '_' + json.products[i].id_product_attribute + '_' + json.products[i].id_address_delivery] = json.products[i];
       
    for (i in product_list)
    {
        var key_for_blockcart_nocustom = product_list[i].id_product + '_' + product_list[i].id_product_attribute + '_' + ((product_list[i].quantity_without_customization != product_list[i].quantity)? 'nocustom' : '0') + '_' + product_list[i].id_address_delivery;
       
        if (product_list[i].quantity_available - product_list[i].cart_quantity >= 0) {
                $('#product_' + key_for_blockcart_nocustom + ' .pp_cart_stock').html('<img src="'+ img_dir + 'skladem.png" alt="{l s=\'Available\'}" title="{l s=\'Available\'}">');
            } else if (product_list[i].quantity_available - product_list[i].cart_quantity < 0 && product_list[i].allow_oosp) {
                $('#product_' + key_for_blockcart_nocustom + ' .pp_cart_stock').html('<img src="' + img_dir + 'naskladneni.png" alt="{l s=\'On Backorder\'}" title="{l s=\'On Backorder\'}">');
            } else if (product_list[i].quantity_available - product_list[i].cart_quantity < 0 && !product_list[i].allow_oosp) {
                $('#product_' + key_for_blockcart_nocustom + ' .pp_cart_stock').html('<img src="' + img_dir + 'neni_skladem.png" alt="{l s=\'Out Of Stock\'}" title="{l s=\'Out Of Stock\'}">');
            }
    }

}


3) themes/vase_sablona/js/cart-summary.js nalezněte:
Kód:
checkAvailability();

a přídejte přesně za funkci toto:
Kód:
cleanSelectAddressDelivery();


4)nahrajte na ftp do složky theme/vase-sablona/img tři obrázky, které budete chtít. Tyto "tlačítka" si samozřejmě můžete graficky nakreslit jak se vám osobně budou líbit. Pokud chce mohu vám tlačítka nakreslit.

tlačítka se musí jmenovat:
"skladem.png" - Pro zobrazení zboží, které je skladem
"naskladneni.png" - Pro zobrazení zboží, které naskladníte třeba do týdne
"neni_skladem.png" - Pro zboží, které skladem není a dlouho nebude :D

Nezapomeňte obrázky nahrát v adekvátní velikosti ať nemusíte upravovat velikost ve stylech a tím spomalovat jejich načítání.

Samozřejmě si všechny soubory předem zálohujte.

Pokud si netroufáte na úpravy zdrojových kódů kontaktujte nás na adrese: info@profi-prestashop.cz

S přáním hezkého dne Majkis


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 5 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
FTP Uploader
Staňte se naším zákazníkem!
Hledáme kolegy
PrestaShop partneři
PrestaShop Hosting
Návody pro C4

© 2009-2012 ČESKÝ WEBHOSTING s.r.o. Kontaktní e-mail: forum@c4.cz
Diskuzní fórum využívá technologie: phpBB, phpBB-SEO.com, phpBB.cz