অ্যাডমিন url ব্যবহার করে ম্যাজেন্টো 2 WYSIWYG মিডিয়া চিত্রের নির্দেশিকা


15

কেন ম্যাজেন্টো 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 / মডিউল-CMS / সাহায্যকারী // 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;
    }

আমি মিডিয়াটির জন্য স্ট্যাটিক ইউআরএলগুলি ব্যবহার করার চেষ্টা করেছি তবে এখনও ব্যবহার হয়নি তাই আমি কেবল ভাবতে পারি কেবলমাত্র ব্যাকএন্ড / অ্যাডমিনের পরিবর্তে ফ্রন্টএন্ড ইউআরএল ব্যবহার করতে এই ফাংশনটি সম্পাদনা করা around

এই কোন সাহায্য খুব প্রশংসা করা হবে :)


উইসইভিগ সম্পাদকের চিত্রগুলিতে আপনি 'এইচটিএমএল সোর্স সম্পাদনা করুন' উইন্ডোতে ট্যাগগুলি দেখলে 'অ্যাডমিন / সিএমএস / উইসাইওয়াইগ / ডাইরেক্টিভ' ইউআরএল ব্যবহার করতে দেখা যায়, তবে সম্মুখভাগে আপনাকে একটি 'পাব / স্ট্যাটিক / উইসাইওয়াইগ / দেখতে হবে 'একই চিত্রগুলির জন্য ইউআরএল।
অ্যারন অ্যালেন

অ্যাডমিন / সেন্টিমিটার / উইসিউইগ / নির্দেশিকা আমার ম্যাজেন্টো 2 ইনস্টল
স্টিভ বি

আমি একই সমস্যা সম্মুখীন। ম্যাজেন্টো ২.১.২ ডাব্লুওয়াইএসআইওয়াইজি আমার জন্য চিত্রগুলির জন্য অ্যাডমিন ইউআরএলও তৈরি করছে।
এজাজ

এটাতে কোনো বার্তা আছে কি?
16:41 এ 16

2
এই গত রাতে বেশ কয়েক ঘন্টা পরে, সর্বোত্তম প্রস্তাবনা (অবশ্যই কোনও সমাধান নয়) হ'ল সংরক্ষণের আগে "প্রদর্শন / লুকান সম্পাদক" বোতামটি ক্লিক করা। ডাব্লুওয়াইএসআইডাব্লুওয়াইজি সম্পাদকটি বন্ধ করার সময়, ম্যাগেন্টো {{media url="wysiwyg/some-image.jpg"}}আমরা ম্যাগেন্টো
ড্যারেন ফেল্টন-এ

উত্তর:


8

এটি একটি পরিচিত বাগ যা এখনও সিই ২.১.৫ এ উপস্থিত রয়েছে।

পরিচিত ফিক্সটি যুক্ত 'add_directives' => trueকরতে getConfigহয় vendor/magento/module-cms/Model/Wysiwyg/Config.php

এটি করার সর্বোত্তম উপায় হ'ল একটি ইন্টারসেপ্টর লেখা

  1. আপনার কাস্টম ম্যাজেন্টো 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. গুরুত্বপূর্ণ: ইনস্টলেশন পরে আপনার প্রভাবিত বিভাগের বিবরণগুলি পুনরায় সম্পাদনা করতে হবে এবং চিত্রগুলি পুনরায় আপলোড করতে হবে।

এই ফিক্স এক্সটেনশনের ধারণাটি আমার নয়, এই লোক । আপনাকে ডাউনলোড করার জন্য তিনি এগুলি সমস্ত গিথুব এ রেখেছিলেন ।

আমি নিজে সিই ২.১.৪ এ এটি পরীক্ষা করেছিলাম এবং এটি দুর্দান্ত কাজ করে।


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

আমি সিই ১.৯ এর সাথে একই সমস্যা পেয়েছি এবং এর সমাধান এখানে দেওয়া হয়েছে: ধারণাটি পরিবর্তনশীল $ এইচটিএমএল পরিবর্তন করার চেষ্টা করছে (আপনি ডি, প্লাগিন বা প্যাচ প্যাকেগিস্ট.আর / প্যাকেজ ব্যবহার করতে পারেন )

Magento \ সেমি \ সাহায্যকারী \ 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

আপনার কাস্টম ম্যাজেন্টো 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();
    }
}

আমার জন্য কাজ!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.