Escrever url no código não é o mesmo que criar links nas páginas, apesar de todo link possuir uma url, nem toda url gera um link.
Você pode obter a url do navegador para identificar uma consulta, ou carregar uma imagem/vídeo, e ainda importar arquivos css/javascript.
Vamos ver neste post como escrever url nas páginas usando as melhores práticas de desenvolvimento. Chega de hardcoding.
Scriptlets no CMS
Nem sempre nossa página é um arquivo phtml editável, já que podemos criar páginas dinâmicamente utilizando o CMS do Magento. E nesse caso não podemos utilizar as tags do PHP, mas podemos utilizar scriptlet’s que possuem a mesma função.
Então em blocos estáticos e páginas CMS podemos:
{{skin url='images/foto.jpg'}} {{media url='/imagem.jpg'}} {{store url='contato.html'}} {{base url=''}}
Imagino que não seja difícil interpretar cada exemplo citado. Sendo que “base url” é a url configurada no seu sistema para a variável BaseURL. Em “store url” ele recupera a url da sua loja, lembrando que você pode ter uma url para cada loja criada no seu backend. O “media url” recupera o diretório de imagens do sistema. E por fim, “skin url” identifica o caminho do template/tema ativo na sua visão de loja.
Código que gera código
Já no código php/phtml podemos fazer uso das funções do sistema, que já retornam de forma dinâmica a url que queremos montar (ou ler). Então temos basicamente 3 (três) formas de fazer – com suas variações.
$this->getAlgumaCoisa(); Mage::helper('core/url')->getAlgumaCoisa(); Mage::getBaseUrl( uma variável );
Vejamos então suas variações e exemplos.
O $this-> deve ser usado dentro da aplicação (da instalação Magento), e ele faz referência a uma variável global que está carregada na sessão ou request, por isso você consegue obter um retorno ao instanciar algum método.
$this->getUrl(); $this->getJsUrl(); $this->getSkinUrl(); $this->helper('core/url')->getCurrentUrl();
Em Mage::helper você carrega a classe “core/url” e todas as suas funções, podendo assim fazer uso de:
Mage::helper('core/url')->getHomeUrl(); Mage::helper('core/url')->getCurrentUrl(); Mage::helper('core/url')->getEncodedUrl(); Mage::helper('core/url')->getCurrentBase64Url();
E temos o Mage::getBaseUrl que deve ser a melhor maneira de escrever url no código, pois permite passar diversos parâmetros em sua assinatura para criar as url’s de forma dinâmica. Vejamos alguns exemplos:
Mage::getBaseUrl(); Mage::getBaseUrl('link', true); Mage::getBaseUrl('media');
Quando eu informo o parâmetro (‘link’, true), isso me retorna uma url segura HTTPS – que foi configurado no seu backend.
Fora os básicos citamos acima, poderíamos ainda utilizar por exemplo:
Mage::getDesign()->getSkinUrl();
Mas a essa altura você já tem mais do que o necessário para começar a escrever url’s no seu código.
Variáveis constantes
Como estamos falando de boas práticas na hora de desenvolver códigos, não podemos deixar de fora as constantes do Magento.
Pra quem não sabe o que são constantes, a grosso modo, são variáveis declaradas com valores fixos, ou seja, constantes. Que não devem ser alteradas no decorrer do desenvolvimento.
Mas por que estou falando de constantes em um post de url? Porque quando você fizer uso de um Mage::getBaseUrl declarando um tipo de retorno esperado, você pode informar esse tipo usando as constantes do Magento, veja alguns exemplos:
Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK); Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA); Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN); Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB); Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS);
Para ver uma lista de constantes do Magento abra o arquivo:
app > code > core > Mage > Core > Model > Store.php
Todas as “variáveis” declaradas como no exemplo abaixo são constantes:
const LETRAS_MAIUSCULAS_POR_PADRAO = 'valor_fixo';
Lembre-se que para usar estes exemplos nos seus códigos php/phtml você deve usar o script:
Aprenda a traduzir links e url’s da sua loja Magento lendo o post: Traduzindo Links e URL’s. Qualquer dúvida use o fórum da Escola Magento.
Sucesso!