Magento 2 WYSIWYG मीडिया छवि निर्देशक url का उपयोग कर


15

क्यों Magento 2 व्यवस्थापक यूआरएल का उपयोग कर मीडिया छवियों के लिए निर्देश बना रहा है?

उदाहरण के लिए जब मैं श्रेणी पेज 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 / मॉड्यूल-सेमी / हेल्पर // 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;
    }

मैंने मीडिया के लिए स्थैतिक यूआरएल का उपयोग करने की कोशिश की, लेकिन अभी भी कोई उपयोग नहीं है, इसलिए केवल मेरे आस-पास के काम के बारे में सोच सकता है, इस फ़ंक्शन को बैकेंड / व्यवस्थापक के बजाय फ्रंटएंड यूआरएल का उपयोग करने के लिए संपादित करना है

इस पर कोई मदद बहुत सराहना की जाएगी :)


जब आप 'HTML स्रोत संपादित करें' विंडो में टैग देखते हैं, तो wysiwyg संपादक में छवियां 'व्यवस्थापक / cms / wysiwyg / निर्देश' URL का उपयोग करती दिखाई देती हैं, लेकिन आगे के भाग पर आपको 'pub / static / wysiwyg /' देखना चाहिए। 'उन्हीं छवियों के लिए URL।
एरोन एलन

व्यवस्थापक / सेमी / wysiwyg / निर्देश मेरे magento 2 स्थापित करने पर सीमा पर है
स्टीव बी

मैं एक ही मुद्दे का सामना कर रहा हूं। Magento 2.1.2 WYSIWYG मेरे लिए छवियों के लिए व्यवस्थापक URL भी बना रहा है।
एजाज

इस पर कोई भी समाचार?
सिमौन्थिसोएसर

2
इस आखिरी रात में कई घंटों के बाद, इस पर सबसे अच्छी सिफारिश (निश्चित रूप से समाधान नहीं है) "सहेजें / छिपाएं संपादक" बटन पर क्लिक करें। WYSIWYG संपादक को बंद करते समय, Magento डायरेक्टिव URL को उस {{media url="wysiwyg/some-image.jpg"}}फॉर्मेट में बदल देगा जो हम Magento में उम्मीद के लिए आए हैं
डैरेन फेल्टन

जवाबों:


8

यह एक ज्ञात बग है जो सीई 2.1.5 में अभी भी मौजूद है।

ज्ञात फिक्स 'add_directives' => trueको getConfigफंक्शन में जोड़ना है vendor/magento/module-cms/Model/Wysiwyg/Config.php

सबसे अच्छा तरीका है कि एक इंटरसेप्टर लिखना है ।

  1. अपने कस्टम Magento 2 एक्सटेंशन etc/di.xmlफ़ाइल में:

    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
      <type name="Magento\Cms\Model\Wysiwyg\Config">
       <plugin name="add_wysiwyg_data" type="Vendor\Module\Plugin\WysiwygConfig" sortOrder="30" />
      </type>
    </config>
  2. Vendor\Module\Plugin\WysiwygConfig.php:

    namespace Vendor\Module\Plugin;
    
    class WysiwygConfig
    {
     public function afterGetConfig($subject, \Magento\Framework\DataObject $config)
     {
       $config->addData([
        'add_directives' => true,
       ]);
    
       return $config;
     }
    }
  3. इसे स्थापित करो php bin/magento setup:upgrade

  4. महत्वपूर्ण: स्थापना के बाद आपको प्रभावित श्रेणी विवरणों को फिर से संपादित करने और छवियों को फिर से अपलोड करने की आवश्यकता है।

इस फिक्स एक्सटेंशन का आइडिया मेरा नहीं बल्कि इस लड़के का है । वह भी यह सब आप के लिए डाउनलोड करने के लिए जीथब पर पैक किया ।

मैंने CE 2.1.4 पर खुद इसका परीक्षण किया और यह ठीक काम करता है।


3

सबसे सरल समाधान में getImageHtmlDeclaration()फ़ंक्शन को अद्यतन करना हैvendor/magento/module-cms/Helper//Wysiwyg/images.php

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 {
         $html = $fileurl;
        //if ($this->isUsingStaticUrlsAllowed()) {
        //    $html = $fileurl; // $mediaPath;
        //} else {
        //    $directive = $this->urlEncoder->encode($directive);
        //    $html = $this->_backendData->getUrl('cms/wysiwyg/directive', ['___directive' => $directive]);
        //}
    }
    return $html;
}

यह सबसे अच्छा तरीका नहीं हो सकता है, लेकिन यह काम करता है।


1

मुझे सीई 1.9 के साथ एक ही मुद्दा मिला और यहां समाधान है: विचार चर $ एचटीएमएल को बदलने की कोशिश कर रहा है (आप डि, प्लगिन या पैच packagist.org/packages का उपयोग कर सकते हैं )

Magento \ Cms \ Helper \ Wysiwyg \ Images.php लाइन 180

$html = $this->_backendData->getUrl('cms/wysiwyg/directive', ['___directive' => $directive]);

इससे हटाएं

$html = $this->_backendData->getUrl(
                'cms/wysiwyg/directive',
                [
                    '___directive' => $directive,
                    '_escape_params' => false,
                ]
            );

संदर्भ: github.com/PieterCappelle


0

अपने कस्टम Magento 2 एक्सटेंशन आदि / di.xml फ़ाइल में:

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\Catalog\Observer\CatalogCheckIsUsingStaticUrlsAllowedObserver">
        <plugin name="cms_wysiwyg_images_static_urls_allowed_plugin" type="Vendor\Module\Plugin\CatalogCheckIsUsingStaticUrlsAllowedObserver" sortOrder="10" disabled="false"  />
    </type>
</config>

विक्रेता \ मॉड्यूल \ प्लगइन \ CatalogCheckIsUsingStaticUrlsAllowedObserver.php

namespace Vendor\Module\Plugin;

class CatalogCheckIsUsingStaticUrlsAllowedObserver
{
    public function aroundExecute(
        \Magento\Catalog\Observer\CatalogCheckIsUsingStaticUrlsAllowedObserver $subject, 
        \Closure $proceed, 
        $observer)
    {
        $objectManager =  \Magento\Framework\App\ObjectManager::getInstance();        
        $storeManager  = $objectManager->get('\Magento\Store\Model\StoreManagerInterface');
        $catalogData  = $objectManager->get('\Magento\Catalog\Helper\Data');
        $storeID = $storeManager->getStore()->getStoreId(); 
        $result = $observer->getEvent()->getData('result');
        $result->isAllowed = $catalogData->setStoreId($storeID)->isUsingStaticUrlsAllowed();
    }
}

मेरे लिए काम करना!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.