Bem vindo ao brockdev.com, não seja tímido compartilhe suas duvidas e conhecimento. :D

Calcular Frete em Popup

thpenteado Usuário, Novo Usuário
Olá tudo bem?

Instalei a seguinte extensão para calcular frete:
http://referenciamagento.blogspot.com.b ... oduto.html

funciona perfeitinho, porém preciso que seja em pop-up

utilizei o tutorial do mariosam:
http://mariosam.com.br/magento/janelas-popups/

dai pelo tutorial criei uma pagina e adicionei o seguinte:

{{block type="ecomdev_productpageshipping/estimate_form" name="shipping.estimate.form" template="ecomdev/productpageshipping/estimate/form.phtml"}}

e o link para abrir o popup foi:

<li><a id="linkId" title="calculador" onclick="popWin('{{store url="calculador"}}','calculador','width=800,height=600,resizable=yes,scrollbars=yes')" href="#">Calcular Frete</a></li>

ele dá o seguinte erro:

Fatal error: Call to a member function isVirtual() on a non-object in


Acredito eu que ele não consegue visualizar o calculador pois não está indicando nenhum produto para fazer o calculo, mas como posso resolver isso? ou será que existe alguma outra maneira.

Grato desde já, aguardo uma ajuda!
Thiago

Comentários

  • Alessandra Moderador Global
    Olá Thiago!
    Não consegui fazer a pop-up funcionar usando o método do Mario SAM (acho que estou fazendo alguma coisa errada... :? ), mas usei um exemplo de pop-up citado aqui no fórum:
    viewtopic.php?p=1208#p1208

    Colocando o código da pop-up e o do product page shipping direto no view.phtml e funcionou.
    Aqui está o código para você testar:

    &lt;html&gt;
    &lt;head&gt;
    &lt;title&gt;LIGHTBOX EXAMPLE&lt;/title&gt;
    &lt;style&gt;
    .black_overlay{
    display: none;
    position: absolute;
    top: 0%;
    left: 0%;
    width: 100%;
    height: 100%;
    background-color: black;
    z-index:1001;
    -moz-opacity: 0.8;
    opacity:.80;
    filter: alpha(opacity=80);
    }
    .white_content {
    display: none;
    position: absolute;
    top: 25%;
    left: 25%;
    width: 50%;
    height: 50%;
    padding: 16px;
    border: 16px solid orange;
    background-color: white;
    z-index:1002;
    overflow: auto;
    }
    &lt;/style&gt;
    &lt;/head&gt;
    &lt;body&gt;
    &lt;p&gt;&lt;a href = \"javascript&#058;void(0)\" onclick = \"document.getElementById('light').style.display='block';document.getElementById('fade').style.display='block'\"&gt;Calcular Frete&lt;/a&gt;
    &lt;/p&gt;

    &lt;div id=\"light\" class=\"white_content\"&gt;
    &lt;?php echo $this-&gt;getLayout()-&gt;getBlock('shipping.estimate.form')-&gt;toHtml()?&gt;

    &lt;a href = \"javascript&#058;void(0)\" onclick = \"document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none'\"&gt;Fechar&lt;/a&gt;

    &lt;/div&gt;
    &lt;div id=\"fade\" class=\"black_overlay\"&gt;&lt;/div&gt;
    &lt;/body&gt;
    &lt;/html&gt;



    Você pode mudar o estilo de acordo com a sua necessidade.
    Vou testar de novo o do Mario Sam, e caso consiga alguma coisa, posto aqui!
  • thpenteado Usuário, Novo Usuário
    Obrigado Alessandra.. era isso mesmo que buscava, esse modelo é bem mais bonito,

    Só que alterando para esse modelo, surgiu um problema... vou utilizar apenas em alguns produtos o calculador,
    como coloquei no view, ele aparecerá para todos os produtos.

    seria o caso de criar um atributo? mas como eu o faria? tem alguma ideia?

    e novamente obrigado pela ajuda.
    Thiago
  • Alessandra Moderador Global
    Olá Thiago!
    Sua ideia de criar um atributo seria uma boa opção, já que você pode utilizar ele como condição para a exibição desse link.

    - Primeiro, você cria um atributo em Catálogo -> Atributos -> Gerenciar atributos, de formato Sim/Não, com o código frete, por exemplo;

    - Depois, você vai em Catálogo -> Atributos -> Gerenciar Grupo de Atributos, seleciona o grupo Default, arrasta o atributo anteriormente criado (Atributos não utilizados) para o grupo em questão e Salve.

    - Nos produtos em que você quer que o link do frete na página do produto seja exibido, você deverá selecionar Sim no atributo em questão;

    - Então, basta alterar o view.phtml, colocando uma condição naquele código da popup. Para isso, procure seguinte código:


    &lt;p&gt;&lt;a href = \"javascript&#058;void(0)\" onclick = \"document.getElementById('light').style.display='block';document.getElementById('fade').style.display='block'\"&gt;Calcular Frete&lt;/a&gt;
    &lt;/p&gt;



    E coloque-o dentro da condição, assim:

    &lt;?php if ($_product-&gt;getFrete()):?&gt;

    &lt;p&gt;&lt;a href = \"javascript&#058;void(0)\" onclick = \"document.getElementById('light').style.display='block';document.getElementById('fade').style.display='block'\"&gt;Calcular Frete&lt;/a&gt;
    &lt;/p&gt;

    &lt;?php endif; ?&gt;



    Aonde Frete (getFrete) é o código do atributo criado.
  • estava precisando disso mesmo...
    só que eu queria usar no fancybox
    <a rel="iframeLink" href="link">Calcular Frete</a>

    teria como?
  • Jonatan Machado Moderador Global, Administrador
    Ola rtlshop
    Voce pode fazer isso com qualquer lightbox
    Abraço
    Arsenal Web Design.com
    Desenvolvimento de Lojas Virtuais
    Magento | Zend Framework | HTML5 | CSS3 | Blogs
    image
    E-mail: contato@brockdev.com
  • mas qual o link para abrir o calculador?
    por que pelo ensinado acima abre o block, e no caso eu precisaria de um link para abrir o block mas como usar?
    preciso desse caminho
  • Jonatan Machado Moderador Global, Administrador
    Voce usa o mesmo tutorial mais voce vai mudar a penas o lightbox.
    Arsenal Web Design.com
    Desenvolvimento de Lojas Virtuais
    Magento | Zend Framework | HTML5 | CSS3 | Blogs
    image
    E-mail: contato@brockdev.com
  • tentei varios jeito, tentei usar a chamada e nada

    estou usando um modulo de fancybox, e pelo que entendi o ideal seria algo assim:
    <a rel="iframeLink" href="<?php echo $this->getLayout()->getBlock('shipping.estimate.form')->toHtml()?>Calculador</a>

    poderia indicar o caminho?
  • alguém pode me ajudar?
Entre ou Registre-se para fazer um comentário.