Odpowiednik dyrektywy CMS {{media url = „…”}} w szablonach bloków normalnych

14

Jaki ekwiwalent {{media url="wysiwyg/image.jpg"}}może być użyty na stronach CMS, jeśli chcemy użyć tego w normalnym .phtmlpliku (typu core/template)

Alex
źródło

Odpowiedzi:

14

Renderowanie takich adresów URL odbywa się podczas wyświetlania stron CMS lub bloków

\Mage_Core_Model_Email_Template_Filter::mediaDirective:

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

Opieraj się na tym kodzie, po prostu

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

może być użyty w szablonie

Alex
źródło
2
Po prostu usuń blockquote ( `) z drugiego fragmentu kodu (po ?>image.jpg">). (Nie mogę edytować mniej niż 6 liter)
hims056
2
+1 Ale może lepiej przekazać Mage_Core_Model_Store::URL_TYPE_MEDIAzamiast 'media'?
Nick Rolando,
12

W pliku szablonu phtml:

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

W bloku lub stronie CMS:

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

Różnica między {{media url="foo"}}i {{store direct_url="media/foo"}}polega na tym, że ta ostatnia koduje ścieżkę katalogu multimediów jako media.
Może to prowadzić do problemów podczas korzystania z CDN lub czegoś takiego, ponieważ omija Mage::getBaseUrl('media').

Vinai
źródło
Jaka jest różnica między {{store direct_url="media/url"}}i {{media url="foo"}}?
Alex
Zaktualizowałem odpowiednio moją odpowiedź.
Vinai
Dziękuję Ci. Zredagowałem również moje pytanie, aby było bardziej jasne - chcę pełny adres URL zdjęcia. Właściwie chętnie przyjmuję własną odpowiedź ;-) --- jak najlepiej znam swój problem :-P
Alex
4
Zauważ, że: {{store direct_url = "media / url"}} -> Jeśli mod_rewrite jest wyłączony, może to wprowadzić index.php w adresie URL, co spowoduje uszkodzenie adresu mediów.
MagePsycho
1
@MagePsycho: good point. Na szczęście nigdy nie miałem sklepu ha z wyłączonym mod_rewrite.
Vinai