ম্যাজেন্টো 2 মূল ফাইলগুলি পরিবর্তন না করে নতুন থিম যুক্ত করুন। ঘোঁৎ ঘোঁৎ


11

Gruntfile.jsএবং এর মতো মূল ফাইলগুলি স্পর্শ / সম্পাদনা না করে ডিফল্ট ম্যাজেন্টো 2 গ্রান্ট কনফিগারেশন কীভাবে প্রসারিত করবেন dev/tools/grunt/configs/themes.js?

উত্তর:


10

ম্যাজেন্টো 2 এর জন্য নতুন থিম তৈরি করা এমনকি চ্যালেঞ্জ হতে পারে এমনকি ম্যাজেন্টোর সাথে অভিজ্ঞতাও ছিল। শালীন বিকাশকারীরা মূল ম্যাজেন্টো ফাইলগুলি পরিবর্তন করবেন না, পরিবর্তে "মোড়ক" তৈরি করবেন, সুতরাং ভবিষ্যতে প্যাচগুলি ইনস্টল করার সময় এবং আপডেটগুলি করার সময় আপনার সমস্ত পরিবর্তন ওভাররাইড হয়ে গেলে বা ভুলভাবে মার্জ হয়ে গেলে আপনার পরিস্থিতি তৈরি হবে না।

গ্রান্টফিল.জেএস এবং থিম.জেএস ফাইলগুলি প্রসারিত করুন

আসুন ধরা যাক আপনি নতুন থিম তৈরি করেছেন এবং যেমন ম্যাজেন্টো 2 ডক্স ডকুমেন্টেশন থেকে আমরা জানি যে dev/tools/grunt/configs/themes.jsআপনার থিমটি তালিকায় যুক্ত করে ফাইল পরিবর্তন করতে হবে , যাতে গ্রান্ট pub/staticফোল্ডারে সংকলন / সিমিলিং / অনুলিপি সিএসএস / কম ফাইল তৈরি করতে পারে ।

পদক্ষেপ 1: /dev/tools/grunt/configs/themes.yourthemename.jsফাইলটি তৈরি করুন যা ডিফল্ট themes.jsফাইলকে প্রসারিত করে

'use strict';

var defaultThemes   = require('./themes'),
    _               = require('underscore');

var yourTheme = {
    yourthemename: {
        area: 'frontend',
        name: '<vendor>/<yourthemename>',
        locale: 'en_US',
        files: [
            'css/main',
        ],
        dsl: 'less'
    }
};

module.exports = _.extend(defaultThemes, yourTheme);

পদক্ষেপ 2: Gruntfile.jsফাইল সহ প্রসারিত করুনGruntfile.yourthemename.js

'use strict';

var defaultGruntfile    = require('./Gruntfile'),
    _                   = require('underscore');

var yourthemeGruntfile = {};
    yourthemeGruntfile.themes = require('./dev/tools/grunt/configs/themes.yourthemename');

module.exports = _.extend(defaultGruntfile, yourthemeGruntfile);

স্টিপি 3: এখন আপনি আপনার থিমের জন্য গ্রান্ট কাজগুলি চালাতে পারেন যেমন:

grunt --gruntfile=Gruntfile.yourthemename.js clean:yourthemename
grunt --gruntfile=Gruntfile.yourthemename.js exec:yourthemename
grunt --gruntfile=Gruntfile.yourthemename.js less:yourthemename
grunt --gruntfile=Gruntfile.yourthemename.js watch:yourthemename

এই পদ্ধতিটি ব্যবহার করে গ্রান্টফাইলে নতুন কোনও কাজ নিবন্ধিত করা সম্ভব? আমি আমার বর্ধিত ফাইলে "গ্রান্ট" এ অ্যাক্সেস পেতে লড়াই করছি।
তিশ্চ

1
কিভাবে মূর্ত আউট অতিরিক্ত কর্মগুলি সঙ্গে ঘোঁৎ ঘোঁৎ ফাইল প্রসারিত করতে: magento.stackexchange.com/a/152790/28664
Tisch

1
জেভ তুমি দৌড়ালে exec:yourthemenameকি পাবে Warning: Required config property "clean.yourthemename" missing. Used --force, continuing.?? এটি অদ্ভুত যে আমি clean:yourthemenameকমান্ডটি দিয়ে আমার থিমটি পরিষ্কার করতে সক্ষম হয়েছি কিন্তু আমি অনুভব করি execকমান্ডটি ত্রুটি ছাড়াই এটি করা উচিত।
ড্যারেন ফেল্টন

1
আমি লক্ষ করেছি যে প্রচুর ফাইল dev/tools/grunt/configsএকটি সম্পাদন করে require('./themes'), উদাহরণগুলি হ'ল clean.jsএবং সেগুলির exec.jsভিতরে কনফিগারেশন ডিরেক্টরি থাকে। যা আমাকে বিশ্বাস করতে পরিচালিত করে যে এই ফাইলগুলি তখন থেকে আমাদের নতুন যুক্ত হওয়া থিমটি হারিয়ে যাবে themes.yourthemename.js। তবুও এই সেটআপটি কাজ করে আমি কেবল আমার Required config property "clean.yourthemename" missing.ত্রুটির কারণটি নির্ধারণ করতে পারি না ...
ড্যারেন ফেলটন

2

যখন জেভ মোকরোসভের সমাধান আপনার পক্ষে উপযুক্ত নয়, আপনি চেষ্টা করতে পারেন এমন দুটি বিকল্প রয়েছে:

সুরকার পোস্ট ইনস্টল কমান্ড

magento/magento2-baseপ্যাকেজটি ইনস্টল করার সময় ফাইল Gruntfile.jsএবং ফোল্ডারটি dev/toolsপ্যাকেজ থেকে আপনার মূল ফোল্ডারে অনুলিপি করে কোনও বিদ্যমান ফাইল ওভাররাইট করে, যা ম্যাজেন্টো 2 বেস composer.jsonম্যাপিংয়ের কারণে ঘটে ( vendor/magento/magento2-base/composer.jsonআপনার প্রকল্পে দেখুন):

{
    "extra": {
        "map": [
            [
                "dev/tools",
                "dev/tools"
            ],
            [
                "Gruntfile.js",
                "Gruntfile.js"
            ]
        ]
    }
}

আপনি আপনার সংস্করণগুলি Gruntfile.jsএবং dev/tools/grunt/configs/themes.jsঅন্য কোথাও রাখতে পারেন (আমরা সেগুলি আমাদের বিল্ড ডিরেক্টরি কাঠামোর ভিতরে রেখেছি build/tools/grunt/)।

এখন নির্দিষ্ট সুরকার ইভেন্টের আগে বা পরে অতিরিক্ত কমান্ড বা স্ক্রিপ্ট যুক্ত করার সম্ভাবনা রয়েছে । আমরা post-install-cmdম্যাগন্টোসের মূল বিষয়গুলির মধ্যে এই ফাইলগুলির আমাদের সংস্করণটি অনুলিপি করতে সুরকারের ইভেন্টে প্রবেশ করতে পারি। আপনার আপনার প্রকল্পের এটিতে যুক্ত করা উচিত composer.json:

{
    "scripts": {
        "post-install-cmd": "cp -vfp build/tools/grunt/Gruntfile.js . && cp -vfp build/tools/grunt/themes.js dev/tools/grunt/configs/"
    }
}

এটি আপনাকে দেখাবে:

> cp -vfp build/tools/grunt/Gruntfile.js . && cp -vfp build/tools/grunt/themes.js dev/tools/grunt/configs/
build/tools/grunt/Gruntfile.js -> Gruntfile.js
build/tools/grunt/themes.js -> dev/tools/grunt/configs/themes.js


সুরকার মডিউল হিসাবে থিম

শুধু magento/magento2-baseপ্যাকেজ (উপরে বর্ণিত) প্রকল্পের মূল ফাইল ম্যাপিং হয় এছাড়াও আপনি এই নিজে করতে পারেন।

আপনি আলাদা আলাদা সুরকার প্যাকেজে আপনার থিম রাখতে পারেন। এর জন্য আপনাকে একটি পৃথক ভান্ডার তৈরি করতে হবে। ম্যাজেন্টো ডক্স ইতিমধ্যে এই প্রক্রিয়াটির বর্ণনা দিচ্ছে: "আপনার থিমকে একটি সুরকার প্যাকেজ তৈরি করুন" দেখুন

এখন আপনার থিমের composer.jsonফাইলটিতে এটি যুক্ত করুন:

{
    "extra": {
        "map": [
            [
                "dev/tools/grunt/configs/themes.js",
                "dev/tools/grunt/configs/themes.js"
            ],
            [
                "Gruntfile.js",
                "Gruntfile.js"
            ]
        ]
    }
}

আপনার থিম প্যাকেজের অভ্যন্তরে প্রথম পাথ সঠিক অবস্থানের দিকে লক্ষ্য করছে তা নিশ্চিত করুন। পাথগুলি থিমের composer.jsonফাইলের অবস্থান থেকে আপেক্ষিক ।


সতর্কতা:
উভয় সমাধানই মূল ফাইলগুলি ওভাররাইট করছে। এটি প্যাচ বা আপগ্রেড সমস্যা তৈরি করতে পারে। প্যাচিং এবং আপগ্রেড করার সময় আপনার সর্বদা যা পরিবর্তন হচ্ছে তা যাচাই করা উচিত এবং এই মূল ফাইলগুলির অনুলিপিগুলিতে এই পরিবর্তনগুলি প্রয়োগ করা উচিত।


2
  • এটি জেভ মোক্রোসভের উত্তরের পরিপূরক উত্তর।
  • ম্যাজেন্টো ২.১ এর জন্য লিখিত (আমাকে বলা হয়েছে ম্যাজেন্টো ২.২ এর সমাধানে আরও ভাল নির্মিত হবে)

যেহেতু আমি নিশ্চিত যে অনেক লোক পুরোপুরি স্ক্র্যাচ থেকে কোনও থিম তৈরির পরিবর্তে পিতামাতার থিমকে প্রসারিত করতে দেখবে , এখানে আপনার themes.yourThemeName.jsফাইলের জন্য দেওয়া কিছুটা আলাদা সিনট্যাক্স রয়েছে । আমাদের থিমের জন্য কনফিগারেশনটি পুরোপুরি স্ক্র্যাচ থেকে সম্পূর্ণরূপে সংজ্ঞায়িত করার পরিবর্তে আমরা এটিকে পিতামাতার কাছ থেকে উত্তরাধিকার সূত্রে পাই এবং তারপরে নতুন / আলাদা যা যুক্ত / সংশোধন করি।

এই উদাহরণে আমরা ফাঁকা কনফিগারেশন থেকে আমাদের থিমের নামটি সেট করে, এবং আমাদের থিমের অতিরিক্ত রুট ফাইল (গুলি) যোগ করছি। এর একটি সুবিধা হ'ল আপনাকে প্যারেন্ট থিম থেকে সমস্ত ফাইল নির্দিষ্টভাবে ঘোষণা করতে হবে না। প্যারেন্ট থিম বাড়ানো লোকদের জন্য যা পর্যায়ক্রমে আপডেটগুলি গ্রহণ করে এটি উপকারী হতে পারে। (এখানে আমার উদাহরণের দৃশ্য হিসাবে খালি ব্যবহার করা সম্ভবত সর্বাধিক প্রযোজ্য পরিস্থিতি নয়, তবে এখানে প্রয়োগ করা ধারণাগুলি বিষয়টিকেই গুরুত্ব দেয়)।

'use strict';

// If your theme's parent has it's own "themes.someOtherName.js" file, 
// require that file instead of Magento's native "themes.js" file.
var defaultThemes   = require('./themes'),
    _               = require('underscore');

// Update "blank" to the name of your parent theme's Grunt config.
// Update "<vendor>/<yourThemeName>"
var yourThemeNameConfig = _.extend(defaultThemes.blank, {name:'<vendor>/<yourThemeName>'});

// Change this to add your root files, add more as necessary
yourThemeNameConfig.files.push('css/new-file');

// Change "yourThemeName" to what you want to reference in your Grunt command.
module.exports = _.extend(defaultThemes, { yourThemeName: yourThemeNameConfig });
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.