আপনি কাস্টম থিমটিতে কীভাবে কম ওভাররাইড করবেন?


34

পুরো magento-blankথিমটি অনুলিপি না করে কীভাবে একটি কাস্টম থিমটি সঠিকভাবে তৈরি করা যায় এবং বিদ্যমান / কম / সিএসএস কীভাবে প্রসারিত করা যায় সে সম্পর্কে একটি স্পষ্ট গাইড সন্ধান করার চেষ্টা করার জন্য আমি এই সপ্তাহের ভাল অংশটি ব্যয় করেছি ।

অফিসিয়াল ডকুমেন্টেশন ওভাররাইডিং ভেরিয়েবলের বিষয়ে বেসিক দেয় তবে এর ব্যবহার সীমিত। উদাহরণস্বরূপ সোনাসির মতো বিদ্যমান নির্দেশিকাগুলি ম্যাজেন্টো 2-এর বিটা প্রকাশের উপর ভিত্তি করে উপস্থিত হয়।

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

উত্তর:


58

দ্রষ্টব্য 1: এটি সর্বদা ধরে নিবে আপনি প্রসারিত করছেন magento-blank

নোট 2: <theme-dir>হয়app/design/frontend/Vendor/theme/

বেসিকগুলি: বেস ভেরিয়েবলগুলি পরিবর্তন করা

(টিএল; ডাঃ, উপসংহারে এড়িয়ে যান)

বেশিরভাগ গাইড আমি পেয়েছি কেবলমাত্র কম পদক্ষেপে এই পদক্ষেপটি কভার করে, তাই আমি এটিকে ছোট রাখার চেষ্টা করব। ম্যাজেন্টো 2 এ ভেরিয়েবলগুলির একটি বেস সেট রয়েছে যা একটি থিমের সাধারণত ব্যবহৃত দিকগুলি সংজ্ঞায়িত করে। রঙ, ফন্ট, পৃষ্ঠা শিরোনামের স্টাইল এবং আরও এই ভেরিয়েবলগুলিতে সংজ্ঞায়িত করা হয়।

এতে <magento-root>/lib/web/css/source/lib/variables/আপনি স্বজ্ঞাতভাবে নামকরণ করা অনেকগুলি এলইএসএস ফাইল পাবেন। এর প্রত্যেকটিতে আপনি Magento 2 এ প্রচলিত সাধারণ উপাদানগুলির জন্য ভেরিয়েবলগুলিকে নির্ধারিত মানগুলি পেতে পারেন।

এই ভেরিয়েবলগুলির কোনও পরিবর্তন করতে, কেবল একটি ফাইল তৈরি করুন <theme-dir>/web/css/source/_theme.lessউদাহরণ:

@newPrimary: #1980fe;
@primary__color: @newPrimary;


@link__color: @newPrimary;
@link__visited__color: lighten(@link__color, 10%);

প্রযুক্তিগতভাবে, আপনি এখানে যে কোনও সিএসএস বা কম রাখতে পারেন এবং এটি সফলভাবে আপনার সাইটে প্রযোজ্য হবে (তবে এটি করবেন না)। আমি কীভাবে এটি একটি মুহুর্তে কাজ করে তা ব্যাখ্যা করব।

নতুন সিএসএস ফাইল যুক্ত করা হচ্ছে

আপনার সমস্ত টেম্পলেট পৃষ্ঠাগুলির শীর্ষে আপনি নতুন সিএসএস যুক্ত করতে পারেন।

তৈরি করুন <theme-dir>/Magento_Theme/layout/default_head_blocks.xml:

<?xml version="1.0"?>
    <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
        <head>
            <css src="css/myStyle.css" />
        </head>
    </page>

এবং তারপরে আপনি আপনার নতুন সিএসএস বা কম ব্যবহার করে একটি ফাইল তৈরি করুন:

<theme-dir>/web/css/myStyle.less। আপনি এখানে কম বা সিএসএস লিখতে পারেন।

ওভাররাইডিং বিদ্যমান স্টাইলগুলি

আমি দেখতে পেলাম যে ম্যাজেন্টো 2 কম সহজেই একটি নতুন সিএসএস ফাইল যুক্ত করে ছাড়ানো হয় না। এবং এখান থেকেই আমি হারিয়ে যেতে শুরু করেছি এবং আমি ব্যাখ্যা করব কীভাবে ম্যাজেন্টো 2 এর কম ফাইলগুলি সন্ধান করে।

ডিফল্টরূপে, ম্যাজেন্টো 2 এর মধ্যে এই ফাইলগুলি অন্তর্ভুক্ত থাকবে (এবং শেষ পর্যন্ত ফিরে আসবে):

<Magento_Blank_theme_dir>/web/css/styles-m.less //Mobile Styles
<Magento_Blank_theme_dir>/web/css/styles-l.less //Desktop enhancements
<Magento_Blank_theme_dir>/web/css/print.less //Print Styles

এই ফাইলগুলির মধ্যে অন্যান্য এলইএসএস ফাইল অন্তর্ভুক্ত রয়েছে (আমদানি করা), যা প্রায়শই আরও বেশি কম ফাইল অন্তর্ভুক্ত করে। এবং এখানেই অন্য গাইডগুলি আমার কাছে অসহায় হয়ে পড়েছিল এবং আমি যা পেয়েছি তা ব্যাখ্যা করব, সর্বোপরি আমার পক্ষে।

উত্স / lib যাদু

ইন styles-m.less, সেখানে লাইন হল: @import 'source/lib/_responsive.less';। আপনি খেয়াল করবেন থিমটিতে কোনও source/libডিরেক্টরি নেই magento-blank। এটি স্পষ্টতই যে ম্যাজেন্টো 2 স্টাইলগুলি শেষ পর্যন্ত ফিরে আসে <magento-root>/lib/web/css/। এটি আপনি খুঁজে পাবেন source/lib/_responsive.less

থিমটিতে আমদানি করা _theme.lessকোনও source/libফাইলের কারণে আপনি যে ভেরিয়েবলগুলি ব্যবহার করেন সেগুলি উপলব্ধ magento-blankদ্রষ্টব্য: _theme.less ডিফল্ট থিমগুলির মধ্যে একটি খালি ফাইল। এটি কেন নোট করা গুরুত্বপূর্ণ তা জানতে পড়া চালিয়ে যান

"স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত" কম ফাইলগুলি ESS

আমি পেয়েছি এমন কয়েকটি গাইড আপনি জোর দিয়েছিলেন যে আপনি তৈরি করতে পারেন <theme-dir>/web/css/_styles.lessকারণ ম্যাজেন্টো স্বয়ংক্রিয়ভাবে সেই ফাইলটি সন্ধান করে এবং এতে অন্তর্ভুক্ত রয়েছে। আমি এটি খারাপ পরামর্শ বলে মনে করেছি।

আপনি যদি তৈরি করেন তবে <theme-dir>/web/css/_styles.lessআপনার সাইটটি ভেঙে যাবে। theme-frontend-blank/web/css/styles-m.lessআমদানি করে _styles.less, যার ফলে আরও 3 টি .বিহীন ফাইল আমদানি হয়, যা প্রত্যেকে আরও বেশি .বিহীন ফাইল আমদানি করে।

আপনি যদি একটি তৈরি করেন তবে আপনি _styles.lessএটিকে ওভাররাইড করছেন। ওভাররাইড করে _styles.lessআপনি যে ফাইলগুলি আমদানি করেন সে সমস্ত ফাইল এবং সেই ফাইলগুলি আমদানি করে এমন সমস্ত ফাইলকে আপনি ওভাররাইড করছেন।

সম্পর্কে দ্রষ্টব্য _theme.less: এই ফাইলটি ডিফল্ট থিমগুলিতে খালি রয়েছে, এবং তাই আপনি নিজের থিমটি কোনও ডিফল্টর উপর ভিত্তি করে রাখলে কেবল তৈরি করা এবং যুক্ত করা নিরাপদ। তবে, আপনি যদি ইতিমধ্যে একটি ডিফল্ট প্রসারিত কোনও থিম প্রসারিত করেন তবে সম্ভাবনা_theme.lessইতিমধ্যে ব্যবহৃত হয়েছে is এটি আবার তৈরি করা এটিকে ওভাররাইড করবে।

যাদুকরী

ইন styles-m.lessআপনি খুঁজে মন্তব্য লাইনের একটি দম্পতি দেখতে পাবেন:

//@magento_import 'source/_module.less'; // Theme modules
//@magento_import 'source/_widgets.less'; // Theme widgets

এই লাইনগুলি আসলে মন্তব্য করে না! ম্যাজেন্টো 2 এর সাথে শুরু হওয়া লাইনের জন্য বিশেষ হ্যান্ডলিং রয়েছে //@magento_import। এই লাইনগুলি কেবলমাত্র ফাইলগুলিতে অন্তর্ভুক্ত করা যেতে পারে <theme-dir>/web/css

উপরের লাইনগুলি ম্যাজেন্টো 2 কে প্রদত্ত প্যাটার্ন অনুসরণ করে থিমের মধ্যে যে কোনও ফাইল অন্তর্ভুক্ত করার নির্দেশ দেয়। সুতরাং উপরের লাইনগুলি স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত হবে:

'<theme-dir>/Magento_Catalog/web/css/source/_widgets.less';
'<theme-dir>/Magento_Catalog/web/css/source/_module.less';

'<theme-dir>/Magento_Cms/web/css/source/_widgets.less';
'<theme-dir>/Magento_Cms/web/css/source/_module.less';

'<theme-dir>/Magento_Reports/web/css/source/_widgets.less';
'<theme-dir>/Magento_Reports/web/css/source/_module.less';
...and so on

ফাইল নাম জোড়া _widgets.lessএবং _module.less হবে স্বয়ংক্রিয়ভাবে পাওয়া যায় এবং অন্তর্ভুক্ত করা, এমনকি যদি তার একটি নতুন মডিউল বা একটি মডিউল ইতিমধ্যে যে ফাইল নেই।

সচেতন থাকুন যে বেশিরভাগ মডিউলগুলির জন্য ম্যাজেন্টো-ব্লঙ্ক those ফাইলগুলি অন্তর্ভুক্ত করে এবং আপনি যদি এই পদ্ধতিটি ব্যবহার করতে চান তবে আপনাকে মূলগুলি কপি-পেস্ট করতে হবে (যদি আপনি একটি সম্পূর্ণ পুনরায় লেখার চেষ্টা না করেন)।

উপসংহার

(পড়ুন: ব্যবহার করবেন না _styles.less)।

আপনি যখন কোনও উপাদানটির সিএসএস পরিবর্তন করতে চাইছেন তখন আপনি যে ফাইলটি স্টাইলটি সংজ্ঞায়িত করেছেন তা সর্বাধিক করতে চান। কখনও কখনও আপনাকে যা করতে হবে তা হল একটি ভেরিয়েবল পরিবর্তন করা _theme.less। বেশির ভাগ সময়ই, আমি সন্দেহ, আপনি শুধু কপি-পেস্ট করতে হবে _module.lessবা _widgets.lessআপনার থিম মধ্যে এবং করতে পরিবর্তন।

আপনি যদি একটি নতুন মডিউল তৈরি করেছেন, বা নতুন এইচটিএমএল উপাদান রয়েছে, আপনার একটি কম ফাইল তৈরি করতে হবে এবং এটি <head>প্রতিটি পৃষ্ঠার পৃথকভাবে অন্তর্ভুক্ত করতে হবে ।

জটিল ক্ষেত্রে আপনার একটি নতুন তৈরি করতে হবে @importবা @magento_import। আপনি সর্বনিম্ন সন্তানের সন্ধান করতে চান যা আপনি যা করছেন তা বোঝায়, সুতরাং আপনি অনাবশ্যক ফাইলগুলির একগুচ্ছ অনুলিপি করছেন বা বিভ্রান্তিকর @importলাইন যুক্ত করছেন না যা কোথাও পৌঁছেছে বলে মনে হচ্ছে।


1
সুন্দরভাবে সম্পন্ন হয়েছে, আমি এটিও সম্মত করি যে আপনার নিজস্ব উপাদানগুলি তৈরি করার সময় মাথায় একটি পৃথক সিএসএস ফাইল অন্তর্ভুক্ত করা আরও ভাল অনুশীলন (যদি তারা সমস্ত পৃষ্ঠায় লোড না হয়)। আমি প্রতিটি পৃষ্ঠায় সমস্ত শৈলী যুক্ত ম্যাগেন্টো থিমগুলির অনুরাগী নই।
বেন ক্রুক

1
বিস্তারিত উত্তরটি পছন্দ করুন। কেবলমাত্র একটি সতর্কতামূলক যে আপনি যদি // @ এমজেন্টো_আইম্পোর্ট নির্দেশাবলী ব্যবহার করেন তবে তৃতীয় পক্ষের কম সংকলক যেমন গল্পে অন্তর্ভুক্ত রয়েছে তা ব্যবহার করা সম্ভব নয় যা আমাদের মধ্যে অনেকে গতি বাড়াতে করছে।
রবার্ট এগিগিন্টন

দুর্দান্ত ব্যাখ্যা! এর জন্য কয়েক মিলিয়ন ধন্যবাদ। আমি ম্যাজেন্টো ২.১.০ এ আছি এবং var/view_preprocessed/css/frontend/VENDOR/THEME/loca_LE/css/*
সিএসএসটি

হে! আমি অ্যাপ্লিকেশন / ডিজাইন / ফ্রন্টএন্ড / বিক্রেতার / থিম / সিএসএস / উত্সে _extends.less এর জন্য এই নতুন কোডটি এই নতুন ক্লাসে যুক্ত করার চেষ্টা করব। তবে এটি কাজ করে না। দয়া করে সহায়তা magento.stackexchange.com/questions/151940/...
Sylon

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