URL e Caminhos Físicos do Magento (URL PATH e SERVER PATH)
23 de outubro de 2009Aqui na Indexa temos desafios diários com a plataforma Magento. Uma das últimas empreitadas foi a montagem de uma loja-base que poderá ser instalada em várias subpastas, ou seja, todo o código tem de funcionar independente da localização do arquivo no servidor (e, no geral, sempre é bom se trabalhar com URLs relativas e não fixas).
O Magento tem algumas funções que te ajudam a se localizar em desafios deste tipo, a maioria criadas estaticamente dentro da classe Mage, estando assim disponíveis em qualquer arquivo dentro do Magento sem a necessidade de se instanciar um objeto para tal. Aqui vão algumas:
echo "<BR />".Mage::getBaseUrl(); // http://www.meusitemagento.com/ - O mesmo que passando URL_TYPE_LINK echo "<BR />".Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB); // http://www.meusitemagento.com/ - A url (porção com o nome do servidor) atualmente sendo utilizada para acessar o Magento (leva em conta se está usando https) echo "<BR />".Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK); // http://www.meusitemagento.com/ - A url base do Magento (não leva em conta se está usando https) echo "<BR />".Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA); // http://www.meusitemagento.com/media - A url da pasta "media" echo "<BR />".Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN); // http://www.meusitemagento.com/skin - A url da pasta "skin" echo "<BR />".Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS); // http://www.meusitemagento.com/js - A url da pasta "js" echo "<BR />".Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_DIRECT_LINK); // http://www.meusitemagento.com/ - A url base do Magento sem levar em conta a Loja atual echo "<BR />".Mage::getRoot(); // /home/domains/meusitemagento.com/public_html/app - O caminho físico da pasta "app" da instalação atual do Magento
Note que a função Mage::getBaseUrl() retorna por padrão o mesmo que retornaria se passássemos Mage_Core_Model_Store::URL_TYPE_LINK como parâmetro, que é a URL base http, independente se no momento o site estiver em modo seguro (https) ou inseguro (http).
Dicas:
- Um jeito rápido de descobrir qual o seu diretório de trabalho no servidor (um nível acima da pasta app do seu magento):
echo "<BR />".substr(Mage::getRoot(),0,strlen(Mage::getRoot())-4); // /home/domains/meusitemagento.com/public_html/
- Para descobrir URLs e subdiretórios:
echo "<BR />".Mage::getUrl('');
// http://www.meusitemagento.com/ - A url do seu site
echo "<BR />".Mage::getUrl('customer/account');
// http://www.meusitemagento.com/customer/account/ - A url para o painel da conta do usuário
echo "<BR />".Mage::getUrl('', array('_secure'=>true));
// https://www.meusitemagentoseguro.com/ - Força a recuperação da URL configurada para ser utilizada quando em modo seguro (HTTPS)
A função Mage::getUrl() aceita um segundo parâmetro, que, como no último exemplo acima, é um array. Este array contém nas chaves uma ou mais das opções que desejarmos passar, e, em cada parâmetro, o valor pode ser false ou true. Sendo assim, além de “_secure” podemos ter:
- _current : A URL atual
- _use_rewrite : Força o uso de URL rewrite
- _nosid : URL sem o ID da sessão do PHP (o SID sempre é passado quando se muda da url insegura para a url segura e vice-versa, ou em qualquer mudança de url aonde a sessão seria perdida caso o SID não fosse passado)
- … Entre outros parâmteros encontrados em app/code/core/Mage/Core/Model/Url.php
- Descobrir facilmente arquivos da pasta “skin”:
echo "<BR />".$this->getSkinUrl();
// http://www.meusitemagento.com/skin/frontend/MEU-PACKAGE/MEU-TEMA/
echo "<BR />".$this->getSkinUrl("images/icon_rss.gif");
// http://www.meusitemagento.com/skin/frontend/MEU-PACKAGE/MEU-TEMA/images/icon_rss.gif - O Magento tenta achar esta imagem dentro do tema configurado, caso ele não ache ele tenta dentro de http://www.meusitemagento.com/skin/frontend/default/default, nesta ordem.
- Dentro do arquivo app/code/core/Mage/Core/Model/Url.php existe no cabeçalho um esquema (praticamente em ASCII-art, hehe) explicando a nomenclatura que o Magento usa para cada porção da estrutura de uma URL.
Abraço!
Tags: Caminhos Físicos, diretórios, Magento, resolver url, SERVER PATH, URL, URL PATH


21 de agosto de 2010 às 11:54 am
valeu a dica !