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