เหตุใด magento 2 จึงสร้างคำสั่งสำหรับรูปภาพสื่อโดยใช้ URL ของผู้ดูแลระบบ
ตัวอย่างเช่นเมื่อฉันเพิ่มภาพในหน้าหมวดหมู่ WYSIWYG มันจะเพิ่ม
<img src="{{media url="wysiwyg/image.jpg"}}" alt="" />
แต่วีโอไอพีจะแยกวิเคราะห์สำหรับส่วนหน้าและเป็นเช่นนี้
<img src="https://domain.co.uk/admin/cms/wysiwyg/directive/___directive/e3ttZWRpYSB1cmw9Ind5c2l3eWcvQ29udmV5b3JfYmVsdHNfZmFzdF9kZWxpdmVyeS5qcGcifX0,/key/b67d0a8069ef28a8443e0bad6d912512704213d60e1d9021b1ec2b9dd34bf390/" alt="">
เนื่องจากการเชื่อมโยงไปยังผู้ดูแลระบบวิธีเดียวที่จะโหลดบนเบราว์เซอร์คือหากคุณลงชื่อเข้าใช้ในการดูแลระบบ นอกจากนี้ยังก่อให้เกิดปัญหาด้านความปลอดภัยเนื่องจากมีการเปิดเผยเส้นทางของผู้ดูแลระบบที่ส่วนหน้า
ฉันดูในผู้ขาย / magento / module-cms / Helper // Wysiwyg / images.php และดูเหมือนว่าฟังก์ชั่นgetImageHtmlDeclaration ()สร้างสิ่งนี้
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;
}
ฉันพยายามใช้ URL คงที่สำหรับสื่อ แต่ก็ยังไม่มีประโยชน์ดังนั้นสิ่งเดียวที่ฉันคิดได้คือแก้ไขฟังก์ชั่นนี้เพื่อใช้ url ส่วนหน้าแทน backend / admin
ความช่วยเหลือเกี่ยวกับเรื่องนี้จะได้รับการชื่นชมอย่างมาก :)
{{media url="wysiwyg/some-image.jpg"}}
รูปแบบที่เราคาดหวังใน Magento