Mengapa magento 2 membuat arahan untuk gambar media menggunakan url admin?
misalnya ketika saya menambahkan gambar pada halaman kategori WYSIWYG yang ditambahkannya
<img src="{{media url="wysiwyg/image.jpg"}}" alt="" />
tapi kemudian Magento mem-parsing untuk frontend dan seperti ini
<img src="https://domain.co.uk/admin/cms/wysiwyg/directive/___directive/e3ttZWRpYSB1cmw9Ind5c2l3eWcvQ29udmV5b3JfYmVsdHNfZmFzdF9kZWxpdmVyeS5qcGcifX0,/key/b67d0a8069ef28a8443e0bad6d912512704213d60e1d9021b1ec2b9dd34bf390/" alt="">
karena tautannya ke admin satu-satunya cara memuat di browser adalah jika Anda masuk ke admin. Ini juga menimbulkan masalah keamanan karena mengungkapkan jalur admin di frontend.
Saya melihat di vendor / magento / module-cms / Helper // Wysiwyg / images.php dan sepertinya fungsi getImageHtmlDeclaration () menghasilkan ini
public function getImageHtmlDeclaration($filename, $renderAsTag = false)
{
$fileurl = $this->getCurrentUrl() . $filename;
$mediaUrl = $this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
$mediaPath = str_replace($mediaUrl, '', $fileurl);
$directive = sprintf('{{media url="%s"}}', $mediaPath);
if ($renderAsTag) {
$html = sprintf('<img src="%s" alt="" />', $this->isUsingStaticUrlsAllowed() ? $fileurl : $directive);
} else {
if ($this->isUsingStaticUrlsAllowed()) {
$html = $fileurl; // $mediaPath;
} else {
$directive = $this->urlEncoder->encode($directive);
$html = $this->_backendData->getUrl('cms/wysiwyg/directive', ['___directive' => $directive]);
}
}
return $html;
}
Saya mencoba menggunakan url statis untuk media tetapi masih tidak digunakan sehingga satu-satunya cara yang dapat saya pikirkan adalah mengedit fungsi ini untuk menggunakan url frontend alih-alih backend / admin
bantuan apa pun akan sangat dihargai :)
sumber
{{media url="wysiwyg/some-image.jpg"}}
format yang kami harapkan di MagentoJawaban:
Ini adalah bug yang dikenal yang masih ada di CE 2.1.5.
Cara mengatasinya dikenal adalah dengan menambahkan
'add_directives' => true
kegetConfig
fungsivendor/magento/module-cms/Model/Wysiwyg/Config.php
.Cara terbaik untuk melakukannya adalah dengan menulis interseptor .
Dalam
etc/di.xml
file ekstensi Magento 2 khusus Anda :Vendor\Module\Plugin\WysiwygConfig.php
:Pasang itu
php bin/magento setup:upgrade
Penting: setelah instalasi Anda perlu mengedit kembali deskripsi kategori yang terpengaruh dan mengunggah kembali gambar.
Ide ekstensi perbaikan ini bukan milik saya tetapi orang ini . Ia juga mengemas semuanya di github untuk Anda unduh .
Saya mengujinya sendiri pada CE 2.1.4 dan bekerja dengan baik.
sumber
Solusi paling sederhana adalah memperbarui
getImageHtmlDeclaration()
fungsi divendor/magento/module-cms/Helper//Wysiwyg/images.php
Ini mungkin bukan pendekatan terbaik, tetapi berhasil.
sumber
Saya mendapat masalah yang sama dengan CE 1.9 Dan di sini adalah solusinya: idenya adalah mencoba mengubah variabel $ html (Anda dapat menggunakan Di, Plugin atau Patch packagist.org/packages )
Magento \ Cms \ Helper \ Wysiwyg \ Images.php baris 180
$html = $this->_backendData->getUrl('cms/wysiwyg/directive', ['___directive' => $directive]);
ganti ke
Rujuk: github.com/PieterCappelle
sumber
Dalam file etc / di.xml ekstensi Magento 2 kustom Anda:
Vendor \ Module \ Plugin \ CatalogueCheckIsUsingStaticUrlsAllowedObserver.php
Bekerja untukku!
sumber