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

Bloco Estático para loja multi língue

Abraao Marques Moderador Global
editado February 2014 em Blocos Estáticos
Olá, boa tarde.

Estou com um problema pois preciso criar um logo estático no rodapé da página para que seja exibido na visão inglês da loja virtual. Ele precisa ser diferente, pois o da visão português já está funcionando e os links deles já redirecionam para páginas com conteúdo em Português. Eu criei o bloco estático em Inglês, mas não sei como fazê-lo aparecer no rodapé da página no lugar o rodapé que está em Português quando a sua visão é alterada para inglês.

Alguém saberia me dizer como posso fazer isso? Não estou sabendo como incluir esse bloco na página do rodapé.


Obrigado pela ajuda!

Comentários

  • Jonatan Machado Moderador Global, Administrador
    Ola Abraao Marques
    Voce pode alterar o footer.phtml de cada template e chamar o block statico com php.
    Eu não sei se existe outro jeito.
    Arsenal Web Design.com
    Desenvolvimento de Lojas Virtuais
    Magento | Zend Framework | HTML5 | CSS3 | Blogs
    image
    E-mail: contato@brockdev.com
  • Abraao Marques Moderador Global
    Jonatan, obrigado pela resposta!

    Eu já tinha feito exatamente isso que você informou e deu certo. Fiquei buscando neste fórum alguma coisa relacionada bloco estático. Achei esse post viewtopic.php?f=21&t=8 e nele você explicou como inserir bloco estático com PHP. Depois, fui a caça do footer.phtml. Testei e funcionou redondinho!


    Valeu pela ajuda!!!


    Abraços,

    Abraão Marques.
  • Jonatan Machado Moderador Global, Administrador
    Que bom que deu certo.
    Abraço
    Arsenal Web Design.com
    Desenvolvimento de Lojas Virtuais
    Magento | Zend Framework | HTML5 | CSS3 | Blogs
    image
    E-mail: contato@brockdev.com
  • Abraao Marques Moderador Global
    Bom dia!!!

    Preciso de mais uma ajuda.

    Estou alterando outras partes do bloco estático footer da minha loja virtual.

    No momento, há o seguinte bloco estático:


    <?php if ($static_html = $this->getChildHtml('custom_footer')): ?>
    <div class=\"footer-block\">
    <div class=\"site-container\">
    <div class=\"container_12\">
    <div class=\"grid_12\">
    <div class=\"custom-footer-blocks\">
    <?php // Predefined Static Block
    echo $static_html;
    ?>
    </div>
    </div>
    <div class=\"clear\"></div>
    </div>
    </div>
    </div>
    <?php endif; ?>




    Eu preciso criar mais outros dois que serão exibidos de acordo com a visão da loja. Então, por uma questão de teste, criei apenas um em inglês e fico com o ID "custom_footer_english". O bloco "custom_footer_english" deve ser exibido com a visão da loja é alterada para Inglês.

    Então, eu acrescentei a seguinte regra:


    <?php
    if ($static_html = $this->getChildHtml('custom_footer')): ?>
    <div class=\"footer-block\">
    <div class=\"site-container\">
    <div class=\"container_12\">
    <div class=\"grid_12\">
    <div class=\"custom-footer-blocks\">
    <?php // Predefined Static Block
    echo $static_html;
    ?>
    </div>
    </div>
    <div class=\"clear\"></div>
    </div>
    </div>
    </div>
    <?php
    elseif ($static_html = $this->getChildHtml('custom_footer_english')): ?>

    <div class=\"footer-block\">
    <div class=\"site-container\">
    <div class=\"container_12\">
    <div class=\"grid_12\">
    <div class=\"custom-footer-blocks\">
    <?php // Predefined Static Block
    echo $static_html;
    ?>
    </div>
    </div>
    <div class=\"clear\"></div>
    </div>
    </div>
    </div>

    endif;
    ?>


    Quando a visão está em Português o primeiro bloco é exibido sem falhas, quando em Inglês o segundo bloco não é exibido. Então, fiz o seguinte: dei um var_dump no primeiro bloco:
    <?php var_dump($static_html = $this->getChildHtml('custom_footer'));?>
    e retornou o resultado de string(4332), mas se faço no segundo bloco:
    <?php var_dump($static_html = $this->getChildHtml('custom_footer_english'));?>
    o resultado que retornar é string(0).

    Alguém sabe me dizer como posso fazer para resolver isso?

    Estou utilizando um template personalidade, meigee theme.


    Obrigado pela ajuda!


    Abraão Marques.
  • Abraao Marques Moderador Global
    Para maiores informações, quando criei o bloco "custom_footer_english" eu o determinei para a visão loja em Inglês.


    Valeu!!!
  • Abraao Marques Moderador Global
    Eu fiz alguns procedimentos e testei do seguinte modo:


       <?php
    if ($static_html = $this->getChildHtml('custom_footer')): ?>
    <div class=\"footer-block\">
    <div class=\"site-container\">
    <div class=\"container_12\">
    <div class=\"grid_12\">
    <div class=\"custom-footer-blocks\">
    <?php // Predefined Static Block
    echo $static_html;
    ?>
    </div>
    </div>
    <div class=\"clear\"></div>
    </div>
    </div>
    </div>
    <?php
    else: ?>

    <div class=\"footer-block\">
    <div class=\"site-container\">
    <div class=\"container_12\">
    <div class=\"grid_12\">
    <div class=\"custom-footer-blocks\">
    <?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('custom_footer_3')->toHtml() ?>
    </div>
    </div>
    <div class=\"clear\"></div>
    </div>
    </div>
    </div>

    endif;
    ?>





    Dessa forma, quando eu altero para a visão inglês, o bloco estático em inglês é exibido sem problemas. Porém, eu precisarei de outro bloco estático, com a visão em Espanhol. O que faz necessário que eu tenho algo como:


    <?php 

    if():

    bloco em Português

    elseif

    bloco em Inglês

    else:

    bloco em Espanhol

    endif;

    ?>



    O problema é que não estou conseguindo encontrar uma regra para isso.
  • Abraao Marques Moderador Global
    Amigos, para quem está acompanhando esse post, resolvemos o problema.

    Não sei por que razão mais o método:

    <?php $this->getChildHtml('custom_footer')): ?>


    Não estava funcionando, quando o chamo para fazer uma estrutura de controle com if else. Acredito que seja uma particularidade do próprio tema que estou usando. Então, pesquisando, encontramos uma solução.

    O script do footer.phtml, uma parte dele, originalmente:

    <?php if ($static_html = $this->getChildHtml('custom_footer')): ?>
    <div class=\"footer-block\">
    <div class=\"site-container\">
    <div class=\"container_12\">
    <div class=\"grid_12\">
    <div class=\"custom-footer-blocks\">
    <?php // Predefined Static Block
    echo $static_html;
    ?>
    </div>
    </div>
    <div class=\"clear\"></div>
    </div>
    </div>
    </div>
    <?php endif; ?>



    Fizemos a seguinte alteração:


    <?php
    $store = Mage::app();
    $idloja = $store->getStore()->getId();
    ?>
    <div class=\"footer-block\">
    <div class=\"site-container\">
    <div class=\"container_12\">
    <div class=\"grid_12\">
    <div class=\"custom-footer-blocks\">
    <?php
    if($idloja == 1):
    echo $this->getChildHtml('custom_footer');
    elseif ($idloja == 2):
    echo $this->getLayout()
    ->createBlock('cms/block')
    ->setBlockId('custom_footer_english')
    ->toHtml();
    elseif ($idloja == 3):
    echo $this->getLayout()
    ->createBlock('cms/block')
    ->setBlockId('custom_footer_spanish')
    ->toHtml();
    endif;
    ?>
    </div>
    </div>
    <div class=\"clear\"></div>
    </div>
    </div>
    </div>



    Explicando:


    //chamamos o método do Mage
    $store = Mage::app();


    //criamos a variável $idloja.
    $idloja = $store->getStore()->getId();

    //Usamos a função do Magento para pegar o id da loja e da visão loja.
    $store->getStore()->getId();




    <?php

    if($idloja == 1): // verificando qual o id da visão da loja.


    echo $this->getChildHtml('custom_footer'); // de acordo com o id da visão loja, chamamos o id do bloco estático criado.

    elseif ($idloja == 2): // verificando qual o id da visão da loja.

    echo $this->getLayout()
    ->createBlock('cms/block')
    ->setBlockId('custom_footer_english'); // de acordo com o id da visão loja, chamamos o id do bloco estático criado.
    ->toHtml();

    elseif ($idloja == 3): // verificando qual o id da visão da loja.

    echo $this->getLayout()
    ->createBlock('cms/block')
    ->setBlockId('custom_footer_spanish'); // de acordo com o id da visão loja, chamamos o id do bloco estático criado.
    ->toHtml();

    endif;
    ?>




    Atualizamos o cachê e problema resolvido.

    Para quem está acompanhando, fica aí o conhecimento.

    Espero conseguir ajudar alguém do fórum, também!


    Um abraço a todos!


    Abraão Marques.
  • Jonatan Machado Moderador Global, Administrador
    Que bom que você conseguiu e postou a resposta.
    Abraço
    Arsenal Web Design.com
    Desenvolvimento de Lojas Virtuais
    Magento | Zend Framework | HTML5 | CSS3 | Blogs
    image
    E-mail: contato@brockdev.com
Entre ou Registre-se para fazer um comentário.