Dodaj obraz statyczny na stronie PHTML i blokach CMS: Magento2


33

Jak mogę dodać obraz statyczny na stronie PHTML i blokach CMS do Magento2? w Magento 1.x było to możliwe$this->getSkinUrl('images/xyz.jpg')

Próbuję zastosować metodę do Magento2

W pliku phtml:

<img src=”<?php echo $this->getViewFileUrl(‘images/footer-logo.png’); ?>” alt=”Demo”>

W blokach CMS:

<img src=”{{view url=”images/slide-bg.jpg”}}” alt=”” />

ale to nie działa poprawnie. Proszę, zasugeruj mi moje błędy


Twoja próba wydaje się dobra. Musisz opróżnić pamięć podręczną z zaplecza, a także ręcznie usunąć plik pamięci podręcznej z/var/cache
Praful Rajput

Odpowiedzi:


51

URL obrazu Składnia jest poprawna zarówno dla, jak static blocki phtml, ale upewnij się, że podczas pisania tego kodu w bloku statycznym

<img src="{{view url="images/slide-bg.jpg"}}" alt="test" />

z przodu wygląda jak

http: //localhost/magento2new/pub/static/frontend/Magento/luma/en_US/images/slide-bg.jpg

Gdzie Magento/lumajest packageimię i themenazwisko, możesz zastąpić swoim imieniem packagei themenazwiskiem

Więc musisz uważać, ponieważ slide-bg.jpgistnieje

pub/static/frontend/Magento/luma/en_US/images informator.

W Twoim przypadku,

<img src='<?php echo $this->getViewFileUrl('images/footer-logo.png'); ?>' alt="Demo">

Składnia wydaje się w porządku, ale w interfejsie Wygląda na to

http: //localhost/magento2new/pub/static/frontend/Magento/luma/en_US/images/footer-logo.png

Musisz więc upewnić się, że footer-logo.pngistnieje

pub/static/frontend/Magento/luma/en_US/images informator.

I nie zapomnij o "[quotation marks]


viewdla pub/static/frontend/Namespace/theme/locale store
adresu

15

Dla niestandardowego modułu utwórz strukturę katalogów podobną do

Company/Module/view/frontend/web/images/image-icon.png

i w phtml użyj następującego kodu

<img src='<?php echo $this->getViewFileUrl('Company_Module::images/image-icon.png'); ?>' alt="image-icon" width="30" height="25">

dzięki, zaoszczędziłem dużo czasu na wyszukiwanie: D
ZFNerd

@ZFNerd Most Welcome
Manish

7

Proste rozwiązanie:

  1. Umieść swój obraz na ścieżce Magento 2:

    /app/design/frontend/< Vendor >/< theme >/web/images
  2. Użyj tego kodu, aby wywołać obraz w pliku phtml:

    echo $block->getViewFileUrl('images/demo.jpg'); 

1

Jeśli chcesz również zachować trochę więcej porządku, możesz dodać obrazy do zastąpionych modułów podstawowych w niestandardowym motywie. Na przykład potrzebuję obrazu do formularza biuletynu. Dodałem obraz w

app/design/frontend/<Vendor>/<theme>/Magento_Newsletter/web/images/envelope.png

i w moim app/design/frontend/<Vendor>/<theme>/Magento_Newsletter/templates/subscribe.phtmlpliku użyłem go jak poniżej, aby uzyskać źródło obrazu

$this->getViewFileUrl('Magento_Newsletter::images/envelope.png');

Używam Magento v2.2


0

Innym sposobem na to jest użycie obrazu wbudowanego:

<?php
// get contents of a file into a string
$filename = "path/to/image.jpg";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
$imagedata = base64_encode($content);
fclose($handle);
?>

<img src="data:image/jpeg;base64, <?= $imagedata; ?>" alt="alt text" />

0
$imageUrl = $this->helper('Magento\Catalog\Helper\Image')
                        ->init($mainProduct, 'product_base_image')
                        ->constrainOnly(TRUE)
                        ->keepAspectRatio(TRUE)
                        ->keepTransparency(TRUE)
                        ->keepFrame(FALSE)
                        ->resize(281, 281)->getUrl();
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.