You are on page 1of 4

Ol pessoal!

Recentemente, recebi um e-mail do Douglas pedindo um tutorial sobre como


colocar o clculo de frete na pgina do produto.
Para esse propsito, existe a extenso do Alex Braga, a extenso da EcomDev e o
Tutorial Premium no blog do Mario SAM.
As duas primeiras opes eu j havia testado e ambas funcionam bem com os
produtos simples, mas do erro no peso do produto ao calcular o frete de produtos
configurveis:

Nessa dica irei utilizar a extenso Estimate Shipping on the Product Page e
mostrarei uma alterao que solucionar o problema em relao aos produtos
configurveis!
Para isso, siga os seguintes passos:
1 Baixe a extenso no seguinte link
https://github.com/IvanChepurnyi/EcomDev_ProductPageShipping/archive/dev.zip
Descompacte o arquivo baixado e instale ela manualmente na sua loja!
Obs: No aconselho baixar a extenso no Magento Connect, j que ela est bem
desatualizada.
2 Abra o arquivo Estimate.php (app -> code -> community -> EcomDev ->
ProductPageShipping -> Model) e substitua o seguinte cdigo:
1
2
3
4
public function getProduct()
{
return $this->_product;
}
Por esse:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public function getProduct()
{
//Verify if the product is configurable, since configurable products doesnt have weight to estimate
if($this->_product->isConfigurable()){
//For convenience, creates a new variable just for our product
$configurableProduct = $this->_product;
//Load an array with all the associated products
$associated_products = $configurableProduct->loadByAttribute('sku', $configurableProduct->getSku())->getTypeInstance()->getUsedProducts();
//Run foreach just once to get the first of the associated products
foreach($associated_products as $assoc){
$this->_product = $assoc;
break;
}
//Return the product
return $this->_product;
}
return $this->_product;
}
Essa alterao solucionar o problema em relao aos produtos configurveis!
3 Em Sistema -> Configurao -> CATLOGO -> Product Page Shipping,
habilite a extenso, escolha aonde ela ser exibida (coluna da esquerda, direita
etc) e que campos iro aparecer (cep, cidade, estado etc).

Caso voc queira deixar a caixa para o clculo dentro das informaes do
produto (como mostrado na imagem abaixo), selecione em Display In a opo
Layout Personalizado e cole o seguinte cdigo no seu view.phtml (app -> design ->
frontend -> default -> SeuTema -> template -> catalog -> product):
1 <?php echo $this->getLayout()->getBlock('shipping.estimate.form')->toHtml()?>
Nesse caso, coloquei aps o seguinte cdigo:
1
<?php echo $this->getChildHtml('extrahint') ?>

Postagem Editada 19/06/2013
4 (Bnus!) Desde que eu utilizava a verso 1.6.2.0 do Magento, essa extenso
apresenta um bug ao tentar comentar algum produto, exibindo o erro:
Fatal error: Call to a member function toHtml() on a non-object in ../view.phtml on
line XX
Se voc tiver esse problema, v at o arquivo config.xml (app->code->community-
>EcomDev->ProductPageShipping->etc) e procure a seguinte linha:
1 <controller_actions>
Logo aps ela, insira o seguinte:
1
2
<review_product_list />
<review_product_view />
Postagem Editada 08/07/2013
5 (Bnus!) Retirar a obrigatoriedade do campo CEP.
Para que o preenchimento do campo CEP no seja obrigatrio, necessrio fazer
o seguinte:
- No arquivo form.phtml (app->design->frontend->base->default->template-
>ecomdev->productpageshipping->estimate), procure pelo seguinte trecho:
1
<input class="input-text validate-postcode<?php if ($this->isFieldRequired('postcode')):?> required-entry<?php endif;?>" type="text"
id="estimate_postcode" name="estimate[postcode]" value="<?php echo $this->htmlEscape($this->getFieldValue('postcode')) ?>" />
E substitua ele todo por esse:
1
<input class="input-text validate-postcode" type="text" id="estimate_postcode" name="estimate[postcode]" value="<?php echo $this-
>htmlEscape($this->getFieldValue('postcode')) ?>" />
Ento isso, qualquer dvida, sugesto ou correo, deixe um comentrio!
Fonte: http://www.ecomdev.org/2010/06/22/estimate-the-product-shipping-rate-on-
its-page.html#comment-4015