Эквивалент директивы CMS {{media url = “…”}} в шаблонах обычных блоков

14

Какой эквивалент {{media url="wysiwyg/image.jpg"}}может быть использован на страницах CMS, если мы хотим использовать это в обычном .phtmlфайле (типа core/template)

Alex
источник

Ответы:

14

Отображение таких URL-адресов выполняется при отображении страниц или блоков CMS в

\Mage_Core_Model_Email_Template_Filter::mediaDirective:

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

Основываясь на этом коде, просто

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

можно использовать в шаблоне

Alex
источник
2
Просто удалите blockquote ( `) из второго фрагмента кода (после ?>image.jpg">). (Я не могу отредактировать менее 6 букв)
hims056
2
+1 а может лучше пройти Mage_Core_Model_Store::URL_TYPE_MEDIAвместо 'media'?
Ник Роландо
12

В файле шаблона phtml:

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

В блоке CMS или на странице:

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

Разница между {{media url="foo"}}и {{store direct_url="media/foo"}}заключается в том, что последний жестко кодирует путь к каталогу мультимедиа как media.
Это может привести к проблемам при использовании CDN или чего-то еще, потому что это обходит Mage::getBaseUrl('media').

Vinai
источник
какая разница между {{store direct_url="media/url"}}а {{media url="foo"}}?
Алекс
Обновил мой ответ соответственно.
Vinai
Спасибо. Я также отредактировал свой вопрос, чтобы сделать его более понятным - я хочу полный URL-адрес изображения. На самом деле я был бы рад принять мой собственный ответ ;-) --- так как я знаю свою проблему лучше всего :-P
Алекс
4
Обратите внимание, что: {{store direct_url = "media / url"}} -> Если mod_rewrite отключен, это может привести к появлению index.php в url, что приведет к нарушению URL носителя.
MagePsycho
1
@MagePsycho: хорошая мысль. К счастью, у меня никогда не было магазина с отключенным mod_rewrite.
Vinai