ম্যাজেন্টো 2 এর ভিউ.এক্সএমএল ফাইলটিতে "বাদ" ট্যাগটি কী করে


17

ম্যাজেন্টো 2 "ফাঁকা" থিমটিতে নিম্নলিখিত ট্যাগ শ্রেণিবিন্যাস অন্তর্ভুক্ত রয়েছে।

<exclude>
    <item type="file">Lib::jquery/jquery-ui-1.9.2.js</item>
    <item type="file">Lib::jquery/jquery.ba-hashchange.min.js</item>
    <item type="file">Lib::jquery/jquery.details.js</item>
    <item type="file">Lib::jquery/jquery.details.min.js</item>
    <item type="file">Lib::jquery/jquery.hoverIntent.js</item>
    <item type="file">Lib::jquery/jquery.min.js</item>
    <item type="file">Lib::mage/captcha.js</item>
    <item type="file">Lib::mage/dropdown_old.js</item>
    <item type="file">Lib::mage/list.js</item>
    <item type="file">Lib::mage/loader_old.js</item>
    <item type="file">Lib::mage/webapi.js</item>
    <item type="file">Lib::moment.js</item>
    <item type="file">Lib::requirejs/require.js</item>
    <item type="file">Lib::date-format-normalizer.js</item>
    <item type="file">Lib::legacy-build.min.js</item>
    <item type="directory">Lib::modernizr</item>
    <item type="directory">Lib::tiny_mce</item>
    <item type="directory">Lib::varien</item>
    <item type="directory">Lib::jquery/editableMultiselect</item>
    <item type="directory">Lib::jquery/jstree</item>
    <item type="directory">Lib::jquery/fileUploader</item>
    <item type="directory">Lib::css</item>
    <item type="directory">Lib::lib</item>
    <item type="directory">Lib::extjs</item>
    <item type="directory">Lib::prototype</item>
    <item type="directory">Lib::scriptaculous</item>
    <item type="directory">Lib::mage/requirejs</item>
    <item type="directory">Lib::mage/adminhtml</item>
    <item type="directory">Lib::mage/backend</item>
    <item type="directory">Magento_Swagger::swagger-ui</item>
</exclude>

এটি এখানে কিসের জন্য। অর্থাত্ কি থেকে বাদ দেওয়া হচ্ছে? কোথায় এবং কখন ম্যাজেন্টো 2 সিস্টেম কোড এই তথ্য অ্যাক্সেস করতে পারে?


5
অ্যালান, যেখানে আমরা আপনাকে এই তথ্য থেকে বাদ দিয়েছিলাম সেখানে একই স্থানে এটি মূল্যায়ন করা হয়।
বেনমার্ক

6
@ বেনমার্কগুলি একটি নির্দিষ্ট সিস্টেমের প্রয়োগের বিবরণ থেকে বাদ দেওয়া আমাকে ম্যাজেন্টো ইনক এর বেশিরভাগ কর্মচারীর সাথে ঘনিষ্ঠতা অনুভব করে;)
অ্যালান ঝড়

উত্তর:


10

ম্যাজেন্টো 2 জেএস / এইচটিএমএল ফাইলগুলির বান্ডিল সমর্থিত। <exclude>নোড এমন সংস্থানসমূহের তালিকা নির্ধারণ করে যেগুলি বান্ডিল করা উচিত নয়। দেখতে \Magento\Framework\View\Asset\Bundle\Managerবিস্তারিত জানার জন্য


2
Bundling? ওটার মানে কি? ম্যাজেন্টো একটি রুবি প্যাকেজ ম্যানেজার সমর্থন করে?
অ্যালান ঝড়

'বান্ডিলিং' অর্থ একক প্যাকেজ / ফাইলে একাধিক সংস্থানকে একত্রিত করা। এটি সার্ভারের অনুরোধের পরিমাণ হ্রাস করে অগ্রণী কর্মক্ষমতা উন্নতি।
কান্দি

কোন বান্ডিলিং বাদ পড়ে? মনে হয় একাধিক জায়গাগুলি ম্যাজেন্টো ফ্রন্টএন্ড সম্পদ "বান্ডিল আপ" করেছে।
অ্যালান ঝড়

আমি অনুমান করছি এটি যদি একটি .js ফাইল হয় তবে এটি পৃথকভাবে লোড হবে। যদি এটি বাদ না দেওয়া হয় তবে এটি এমএস-তে জেএস মার্জ বিকল্পের সাথে আমরা যেমন ব্যবহার করেছি তেমন কোনও জেএস ফাইলে মিশে যাবে। কোনও দির বাদ দিলে, সেই দির সমস্ত ফাইল পৃথকভাবে লোড হবে।
পিটার জাপ ব্লাকমিয়ার

হালনাগাদ; এই পদ্ধতিটি আমার সন্দেহকে নিশ্চিত করে; github.com/magento/magento2/blob/…
পিটার জাপ ব্লাকমিয়ার

9

আপনি যখন কমান্ডটি কার্যকর করেন তখন এই কনফিগারেশনটি অ্যাক্সেস করা হয়

bin/magento setup:static-content:deploy

ফাংশনে \Magento\Deploy\Model\Deployer::deployFile, নিম্নলিখিত দুটি কল আগ্রহী:

$this->assetPublisher->publish($asset);
$this->bundleManager->addAsset($asset);

প্রথম কলটি ফাইল সিস্টেমে সম্পদ ফাইল যুক্ত করবে। দ্বিতীয় কলটি ঠিক কী করবে তা আমি নিশ্চিত নই। আমি এখানে হারিয়ে যাচ্ছি।

তবে, আপনি যদি এই দ্বিতীয় কলটি অনুসরণ করেন, আপনি কিছু বৈধতা ফাংশন পাবেন, যা শেষ পর্যন্ত বাড়ে

// \Magento\Framework\Config\View

/**
 * Get excluded file list
 *
 * @return array
 */
public function getExcludedFiles()
{
    $items = $this->getItems();
    return isset($items['file']) ? $items['file'] : [];
}

/**
 * Get excluded directory list
 *
 * @return array
 */
public function getExcludedDir()
{
    $items = $this->getItems();
    return isset($items['directory']) ? $items['directory'] : [];
}

/**
 * Get a list of excludes
 *
 * @return array
 */
protected function getItems()
{
    $this->initData();
    return isset($this->data['exclude']) ? $this->data['exclude'] : [];
}

তবে, এখানে কয়েকটি বিষয় রয়েছে।

প্রথমত, ফাংশনটি \Magento\Framework\Config\View::getItemsসর্বদা একটি খালি অ্যারে ফিরিয়ে দেয় বলে মনে হয়।

দ্বিতীয়ত, ফাংশন \Magento\Framework\View\Asset\Bundle\Manager::isExcludedFileসর্বদা ফিরে আসবেfalse

/**
 * Check if asset file is excluded
 *
 * @param string $filePath
 * @param LocalInterface $asset
 * @return bool
 */
protected function isExcludedFile($filePath, $asset)
{
    /** @var $asset LocalInterface */
    $filePathInfo = $this->splitPath($filePath);
    if ($filePathInfo && $this->compareModules($filePathInfo, $asset)) {
        return $asset->getSourceFile() == $filePathInfo['excludedPath'];
    }
    return false;
}

কারণ $asset->getSourceFile()সম্পদ ফাইলের পরম পাথ, যখন $filePathInfo['excludedPath']একটি আপেক্ষিক পথ।

সুতরাং, আমি যতদূর দেখতে পাচ্ছি <exclude>কনফিগারেশনটি কোনওভাবেই কাজ করবে না। তবে যদি এটি কাজ করে তবে সম্পত্তিটি বাদ দেওয়া হবে \Magento\Framework\View\Asset\Bundle

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