Jump to content

Produtos com o Preço reduzido


Recommended Posts

Bom dia,

Eu segui um tutorial para mudar o default theme do prestashop e configurar o layout seguindo os meus próprio interesses.

Mas tenho uma situação que não consigo resolver já há algum tempo e gostava de saber se alguém aqui me consegue ajudar.

Os produtos com "preço reduzido" não disponibilizam do devido link para adicionar ao carrinho, eu tentei de tudo e o mais perto que consegui chegar foi assim:

 

http://www.fivil.pt/index.php?id_category=3&controller=category&id_lang=7

 

Como podem ver nesse link, se carregarem em comprar no produto que tem preço reduzido, em vez de adicionar o produto ao carrinho, ele redirecciona o espectador para o carrinho em si, mas não adicionando o producto, apenas como se fosse efectuar o devido checkout.

 

Anteriormente ás minhas experiências, o botão que aparecia, não disponibilizava qualquer link, era como se não existisse o producto em stock e não deixava carregar no botão de compra sequer.

 

Será que alguém me consegue ajudar ?

 

Cumprimentos,

Sérgio Madureira

Link to comment
Share on other sites

Os links dos 2 butões são bem diferentes.

Ao alterares o tpl respectivo, se calhar alteraste isso.

Procura por <div class="btnbox">, este está a funcionar, segundo dizes.

Tenta copiar o mesmo código para onde está o código do botão que não funciona, que algo como "exclusive", esse nem está dentro de uma div "btnbox", nem o link pertence à class "button ajax_add_to_cart_button exclusive".

Não consigo fazer/explicar melhor, sem ver o tpl.

Link to comment
Share on other sites

Sim, é exclusive como disse e não está dentro de nenhuma div com o ID/class de btnbox, é esse o problema ?

Inicialmente era um <span> com a classe de exclusive, o que eu fiz foi alterar o <span> para <a> e copiei a href dos botões normais para o link com a classe de exclusive.

 

Vou fazer as alterações que recomendou e veremos se se trata disso.

Obrigado

 

Com os melhores agradecimentos,

Sérgio Madureira

Link to comment
Share on other sites

Peço desculpa pela minha ignorância neste assunto, mas nunca mexi com ficheiros .tpl por isso não percebo grande coisa, mas acho que já percebi onde está o erro.

Transcrevo parte do código onde se situam os botões:

"

{if ($product.allow_oosp || $product.quantity > 0)}

 

{*{if isset($static_token)}

 

<a class="button ajax_add_to_cart_button exclusive" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart',false, NULL, "add&id_product={$product.id_product|intval}&token={$static_token}", true)}" title="{l s='Add to cart'}"><span></span>{l s='Add to cart'}</a>

 

{else}*}

 

<div class="btnbox">

 

<a class="button ajax_add_to_cart_button exclusive" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart',false, NULL, "add&id_product={$product.id_product|intval}", true)}" title="{l s='Add to cart'}"><span></span>{l s='Add to cart'}</a>

 

</div>

 

{*{/if}*}

 

{else}

 

<a class="exclusive" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart',false, NULL, "add&id_product={$product.id_product|intval}", true)}" title="{l s='Add to cart'}"><span></span>{l s='Add to cart'}</a><br />

 

{/if}

"

 

Pelo que eu consigo perceber aqui, o erro deve ser precisamente o local onde está situado o "exclusive".

«{if ($product.allow_oosp || $product.quantity > 0)}» isto implica que a quantidade seja maior que 0, certo ?

Pois o exclusive encontra-se depois do "{else}" ou seja, não adiciona porque o "{else}" implica que a quantidade seja 0 ou menos que 0, correcto ?

 

Não sei se consegui ser suficientemente explicito, mas de qualquer das formas, não sei se posso ou devo coloca-lo antes do else, mas será essa a solução que procuro ?

Link to comment
Share on other sites

Realmente nesse artigo, não está a considerar o stock.

 

Entretanto, deixo a parte que tenho desse tpl.

{if ($product.allow_oosp || $product.quantity > 0)}

{if isset($static_token)}

<a class="button ajax_add_to_cart_button exclusive" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart',false, NULL, "add&id_product={$product.id_product|intval}&token={$static_token}", false)}" title="{l s='Add to cart'}"><span></span>{l s='Add to cart'}</a>

{else}

<a class="button ajax_add_to_cart_button exclusive" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart',false, NULL, "add&id_product={$product.id_product|intval}", false)} title="{l s='Add to cart'}" ><span></span>{l s='Add to cart'}</a>

{/if}

{else}

<span class="exclusive"><span></span>{l s='Out of stock'}</span>

{/if}

 

Isso só acontece quando activas o preço reduzido?

Link to comment
Share on other sites

Sim, e não sei como solucionar este problema.

No meu caso, o <span class="exclusive"> inicialmente estava assim:

 

<span class="exclusive"><span></span>{l s='Add to cart'}</span>

 

A única diferença em relação ao seu é precisamente a parte «{l s='Add to cart'}». Mas pelo que eu percebo, o meu refere-se a produtos com o preço reduzido e o seu refere-se a produtos que não estão em stock, estou correcto ?

Link to comment
Share on other sites

O que está nesse else, só deveria executar se não for permitido comprar produtos sem stock e se o produto estiver a 0 "ou menos".

Basta ter stock, ou permitires comprar de artigos sem stock, que nem deveria executar essa parte. Para executar, poderá algo estar errado, ou na estrutura do tpl, ou na base de dados.

Se quiseres, coloca o ficheiro completo, pois quanto ao ultimo caso, não posso ajudar.

 

Tenta adicionar button ajax_add_to_cart_button á class do ultimo botão, o que aparece 'a class="exclusive"'

 

Entretanto, comparar está mal traduzido...

Link to comment
Share on other sites

Sim, no meu site não é permitido comprar produtos sem stock, mas no caso deste produto existem 10 em stock, e 10 em várias cores, por isso o problema só poderá estar no código. O meu problema não é neste produto em si, porque é um dos produtos default e vou elimina-lo, mas se o problema acontece com este produto, acontece também com todos os outros que eu ponha preço reduzido e é isso que eu quero solucionar.

 

Quanto á tradução, é uma das áreas que ainda tenho de investigar, mas suponho que tenha de mudar na base de dados ?

Eu gostava de mudar a checkbox para comparar produtos de "selecionar para comparar" para apenas "comparar" mas como eu disse, ainda não investiguei bem a área das traduções.

Quanto a esse erro em particular, obrigado ainda nem tinha reparado !

 

Aqui fica o ficheiro completo, a partir da linha onde começa o código:

 

{if isset($products)}

 

<!-- Products list -->

 

<ul id="product_list" class="clearfix">

 

{foreach from=$products item=product name=products}

 

<li class="ajax_block_product {if $smarty.foreach.products.first}first_item{elseif $smarty.foreach.products.last}last_item{/if} {if $smarty.foreach.products.iteration%3 == 0}last_row_item{else}item{/if}">

 

<a href="{$product.link|escape:'htmlall':'UTF-8'}" class="product_img_link" title="{$product.name|escape:'htmlall':'UTF-8'}">

 

<img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home_default')}" alt="{$product.legend|escape:'htmlall':'UTF-8'}" {if isset($homeSize)} width="{$homeSize.width}" height="{$homeSize.height}"{/if} />

 

{if isset($product.new) && $product.new == 1}<span class="new">{l s='New'}</span>{/if}

 

</a>

 

<p class="clear"></p>

 

<h3><a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.name|escape:'htmlall':'UTF-8'}">{$product.name|escape:'htmlall':'UTF-8'|truncate:26:'...':true}</a></h3>

 

<div class="content_price">

 

{if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}<span class="price" style="display: inline;">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span><br />{/if}

 

{if isset($product.available_for_order) && $product.available_for_order && !isset($restricted_country_mode)}<span class="availability">{if ($product.allow_oosp || $product.quantity > 0)}{l s='Available'}{elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)}{l s='Product available with different options'}{else}{l s='Out of stock'}{/if}</span>{/if}

 

{if isset($product.on_sale) && $product.on_sale && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}<span class="on_sale">{l s='On sale!'}</span>

 

{elseif isset($product.reduction) && $product.reduction && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}<span class="discount">{l s='Reduced price!'}</span>

 

{else}

 

<span style="height:16px; margin: 5px 0; display: block"></span>

 

{/if}

 

{if isset($comparator_max_item) && $comparator_max_item}

 

<p class="compare">

 

<input type="checkbox" class="comparator" id="comparator_item_{$product.id_product}" value="comparator_item_{$product.id_product}" {if isset($compareProducts) && in_array($product.id_product, $compareProducts)}checked="checked"{/if} />

 

<label for="comparator_item_{$product.id_product}">{l s='Select to compare'}</label>

 

</p>

 

{/if}

 

<a class="button lnk_view" href="{$product.link|escape:'htmlall':'UTF-8'}" title="{l s='View'}">{l s='View'}</a>

 

</div>

 

{if ($product.id_product_attribute == 0 || (isset($add_prod_display) && ($add_prod_display == 1))) && $product.available_for_order && !isset($restricted_country_mode) && $product.minimal_quantity <= 1 && $product.customizable != 2 && !$PS_CATALOG_MODE}

 

{if ($product.allow_oosp || $product.quantity > 0)}

 

{*{if isset($static_token)}

 

<a class="button ajax_add_to_cart_button exclusive" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart',false, NULL, "add&id_product={$product.id_product|intval}&token={$static_token}", true)}" title="{l s='Add to cart'}"><span></span>{l s='Add to cart'}</a>

 

{else}*}

 

<div class="btnbox">

 

<a class="button ajax_add_to_cart_button exclusive" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart',false, NULL, "add&id_product={$product.id_product|intval}", true)}" title="{l s='Add to cart'}"><span></span>{l s='Add to cart'}</a>

 

</div>

 

{*{/if}*}

 

{else}

 

<a class="exclusive" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart',false, NULL, "add&id_product={$product.id_product|intval}", true)}" title="{l s='Add to cart'}"><span></span>{l s='Add to cart'}</a><br />

 

{/if}

 

{/if}

 

</li>

 

{/foreach}

 

</ul>

 

<!-- /Products list -->

 

{/if}

 

Penso que não seja possível anexar ficheiros, por isso fica apenas o conteúdo dentro do mesmo.

 

 

Obrigado pela ajuda que tem disponibilizado.

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

Boa tarde, novamente

 

Estive a "brincar" um pouco com todas as funcionalidades do prestashop, mudei para o theme default, reduzi preços, retirei stocks e tudo mais, para tentar identificar o problema e nenhuma das reduções, ficou com o botão igualmente como ficou aquele produto em especifico. Dito e descoberto isto, concentrei-me em perceber todas as opções e variações do produto em questão e acho que encontrei a fonte do problema (que não é bem um problema, sabendo o que sei agora).

 

Já que o amigo dedicou um pouco do seu tempo a tentar ajudar-me, coisa que hoje em dia poucos o fazem em troca de nada, ao menos devo esclarecer-me perante si.

A razão de o botão não funcionar (como já referi no comentário a cima, retornei a css da class exclusive e o código do ficheiro .tpl desta mesma classe ás suas origens, e agora pode ver, que o botão se encontra sem qualquer efeito :hover, e o cursor é default. A bem dizer, é um botão morto e a <span> nem sequer um link contem) é que o produto tanto é possuidor de várias cores diferentes, como outras opções adicionais, o que faz com que o prestashop não deixe o cliente comprar sem primeiro entrar na descrição completa do produto onde pode escolher a cor e essas "opções adicionais", que são, neste caso, os GB do IPOD.

Sendo que o cliente não pode comprar sem escolher os GB que pretende, e assim o prestashop desactivou o botão, para que o cliente entre dentro do produto e escolha todas as definições consoante os seus interesses.

 

Peço desculpa pela bravo texto, e por fazê-lo perder o seu tempo e ao mesmo tempo agradeço-o !

Vou passar os próximos dias a tentar arranjar uma solução prática, onde produtos com opções adicionais mostrem as mesmas e seja possível escolhê-las na lista dos produtos e comprar, ao invés de ter que entrar nas características do produto para as poder escolher e comprar.

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

Obrigado pela explicação. É sempre bom saber estas particularidades, nunca se sabe quando não temos o mesmo problema.

Como opção para ter os atributos/combinações na lista de produtos existe um módulo, só que não é gratuito, mas funciona bem, é o "product list attributes" da presto-changeo.

Link to comment
Share on other sites

De nada, não era mais que o meu dever !

Já estou a ver que muitos aspectos importantes vão depender de quanto a empresa está disposta a investir.

 

Muito obrigado pela ajuda que disponibilizou

Link to comment
Share on other sites

×
×
  • Create New...