Equivalente à Diretiva CMS {{media url = “…”}} nos modelos de bloco normal

14

Qual é o equivalente do {{media url="wysiwyg/image.jpg"}}qual pode ser usado nas páginas do CMS, se quisermos usá-lo em um .phtmlarquivo normal (do tipo core/template)

Alex
fonte

Respostas:

14

A renderização desses URLs é feita ao exibir páginas ou blocos do CMS em

\Mage_Core_Model_Email_Template_Filter::mediaDirective:

public function mediaDirective($construction)
{
    $params = $this->_getIncludeParameters($construction[2]);
    return Mage::getBaseUrl('media') . $params['url'];
}

Com base nesse código, apenas um

<img src="<?php echo Mage::getBaseUrl('media') ?>image.jpg">

pode ser usado no modelo

Alex
fonte
2
Apenas remova o blockquote ( `) do segundo trecho de código (depois ?>image.jpg">). (Não consigo editar menos de 6 letras)
hims056
2
+1 Mas pode ser melhor passar em Mage_Core_Model_Store::URL_TYPE_MEDIAvez de 'media'?
9114 Nick Rolando
12

Em um arquivo de modelo phtml:

Mage::getBaseUrl('media') . $url;

Em um bloco ou página do CMS:

{{store direct_url="media/url"}}

A diferença entre {{media url="foo"}}e {{store direct_url="media/foo"}}é que o último codifica o caminho do diretório de mídia como media.
Isso pode levar a problemas ao usar uma CDN ou algo assim, porque ignora Mage::getBaseUrl('media').

Vinai
fonte
qual é a diferença entre {{store direct_url="media/url"}}e {{media url="foo"}}?
21413 Alex
Atualizei minha resposta de acordo.
Vinai
Obrigado. Também editei minha pergunta para torná-la mais clara - quero o URL completo de uma imagem. Na verdade, eu ficaria feliz em aceitar a minha própria resposta ;-) --- como eu sei que o meu problema melhor :-P
Alex
4
Observe que: {{store direct_url = "media / url"}} -> Se o mod_rewrite estiver desativado, isso poderá introduzir o index.php no URL, interrompendo o URL da mídia.
MagePsycho
1
@ Magia Psico: bom ponto. Por sorte, nunca tive uma loja com o mod_rewrite desativado.
Vinai