প্রথম এবং সর্বাগ্রে, আমি আপনাকে পিএইচপি আর্কিটেক্ট থেকে পিডিএফ / ই-বুক কিনতে পরামর্শ দিচ্ছি । এটি 20 মার্কিন ডলার, তবে কেবলমাত্র সোজা "ম্যাজেন্টো কীভাবে কাজ করে" এই উত্সটি আমি খুঁজে পেতে সক্ষম হয়েছি। আমি নিজের ওয়েবসাইটে ম্যাজেন্টো টিউটোরিয়াল লেখাও শুরু করেছি ।
দ্বিতীয়ত, আপনার যদি পছন্দ হয় এবং আপনি যদি অভিজ্ঞ প্রোগ্রামার না হন বা অভিজ্ঞ প্রোগ্রামার অ্যাক্সেস না পেয়ে থাকেন (আদর্শভাবে পিএইচপি এবং জাভাতে), তবে অন্য একটি কার্ট বেছে নিন । ম্যাজেন্টো ভাল ইঞ্জিনিয়ারড, তবে এটি শপিং কার্ট সমাধান হিসাবে ইঞ্জিনিয়ার হয়েছিল যা অন্যান্য প্রোগ্রামাররা উপরে মডিউল তৈরি করতে পারে। স্মার্ট যারা, কিন্তু প্রোগ্রামার নন তাদের দ্বারা সহজেই বোঝার জন্য এটি ইঞ্জিনিয়ার হয়নি।
তৃতীয়, ম্যাজেন্টো এমভিসি রেল অন রেলস , জ্যাঙ্গো , কোডইগনিটার , কেকপিএইচপি ইত্যাদির থেকে খুব আলাদা M এমভিসি মডেল যা এই দিনগুলিতে পিএইচপি বিকাশকারীদের কাছে জনপ্রিয়। আমি মনে করি এটি জেন্ড মডেল ভিত্তিক , এবং পুরো জিনিসটি খুব জাভা ওওপি-এর মতো। আছে দুই কন্ট্রোলার আপনার সম্পর্কে উদ্বিগ্ন করা প্রয়োজন। মডিউল / সম্মুখ নাম নিয়ামক এবং তারপরে এমভিসি নিয়ামক।
চতুর্থত, আপনি যে একই মডিউল সিস্টেমটি ব্যবহার করবেন তা ব্যবহার করে ম্যাজেন্টো অ্যাপ্লিকেশনটি নিজেই তৈরি করা হয়েছে, সুতরাং মূল কোডটির চারপাশে খোঁচা দেওয়া একটি দরকারী শেখার কৌশল। এছাড়াও, আপনি ম্যাগেন্টো দিয়ে যা করছেন তা প্রচুর বিদ্যমান ক্লাসগুলিকে ওভাররাইড করে । আমি এখানে যা আচ্ছাদন করছি তা নতুন কার্যকারিতা তৈরি করছে, ওভাররাইডিং নয়। আপনি যখন কোড নমুনার বাইরে দেখছেন তখন এটি মনে রাখবেন।
একটি নির্দিষ্ট ইউআরএলের প্রতিক্রিয়া জানাতে একটি নিয়ামক / রাউটার কীভাবে সেটআপ করবেন তা আপনাকে দেখিয়ে আমি আপনার প্রথম প্রশ্নটি শুরু করব। এটি একটি ছোট উপন্যাস হবে। মডেল / টেমপ্লেট সম্পর্কিত বিষয়গুলির জন্য আমার পরে সময় থাকতে পারে তবে এখনের জন্য, আমি তা করি না। আমি তবে আপনার এসকিউএল প্রশ্নের সাথে সংক্ষেপে কথা বলব।
ম্যাজেন্টো একটি EAV ডাটাবেস আর্কিটেকচার ব্যবহার করে । যখনই সম্ভব, আপনার প্রয়োজনীয় তথ্য পাওয়ার জন্য সিস্টেমটি যে মডেলগুলি সরবরাহ করে তা ব্যবহার করার চেষ্টা করুন। আমি জানি এটি এসকিউএল টেবিলগুলিতে রয়েছে, তবে কাঁচা এসকিউএল কোয়েরি ব্যবহার করে ডেটা ধরার কথা ভাবাই ভাল নয়, আপনি পাগল হয়ে যাবেন।
চূড়ান্ত অস্বীকৃতি। আমি প্রায় দুই বা তিন সপ্তাহ ধরে ম্যাজেন্টো ব্যবহার করছি, তাই সতর্কতা অবলম্বনকারী। স্ট্যাক ওভারফ্লোতে যতটা সহায়তা করা যায় ততটুকু এটি আমার মাথায় সোজা পাওয়ার জন্য অনুশীলন।
একটি মডিউল তৈরি করুন
ম্যাগেন্টোতে সমস্ত সংযোজন এবং কাস্টমাইজেশন মডিউলগুলির মাধ্যমে সম্পন্ন হয়। সুতরাং, আপনাকে প্রথমে যা করতে হবে তা হল একটি নতুন মডিউল তৈরি করা। নীচে app/modules
নামে একটি এক্সএমএল ফাইল তৈরি করুন
cd /path/to/store/app
touch etc/modules/MyCompanyName_HelloWorld.xml
<?xml version="1.0"?>
<config>
<modules>
<MyCompanyName_HelloWorld>
<active>true</active>
<codePool>local</codePool>
</MyCompanyName_HelloWorld>
</modules>
</config>
MyCompanyName আপনার পরিবর্তনগুলির জন্য একটি অনন্য নেমস্পেস, এটি আপনার সংস্থার নাম হতে হবে না, তবে প্রস্তাবিত কনভেনশনটি আমার ম্যাজেন্টো। HelloWorld
আপনার মডিউলটির নাম।
অ্যাপ্লিকেশন ক্যাশে সাফ করুন
এখন যে মডিউল ফাইলটি রয়েছে, আমাদের ম্যাজেন্টোকে এটি সম্পর্কে জানাতে হবে (এবং আমাদের কাজ পরীক্ষা করুন)। অ্যাডমিন অ্যাপ্লিকেশন এ
- সিস্টেম-> ক্যাশে পরিচালনায় যান
- সমস্ত ক্যাশে মেনু থেকে রিফ্রেশ নির্বাচন করুন
- ক্যাশে সেটিংস সংরক্ষণ করুন ক্লিক করুন
এখন, আমরা নিশ্চিত করেছি যে ম্যাজেন্টো মডিউল সম্পর্কে জানে
- সিস্টেম-> কনফিগারেশন এ যান
- উন্নত ক্লিক করুন
- "মডিউল আউটপুট অক্ষম করুন" সেটিংস বাক্সে, "মাইকম্পানি নাম_হেলো ওয়ার্ল্ড" নামে আপনার নতুন মডিউলটি সন্ধান করুন
আপনি যদি পারফরম্যান্সটি ধীরে ধীরে বেঁচে থাকতে পারেন তবে আপনি বিকাশ / শেখার সময় অ্যাপ্লিকেশন ক্যাশেটি বন্ধ করতে চাইতে পারেন। কিছুই বেশি হতাশার পরে ক্যাশেটি পরিষ্কার করে ভুলে গিয়ে ভাবছেন যে কেন আপনার পরিবর্তনগুলি প্রদর্শিত হচ্ছে না।
ডিরেক্টরি কাঠামো সেটআপ করুন
এর পরে, আমাদের মডিউলটির জন্য একটি ডিরেক্টরি কাঠামো সেটআপ করতে হবে। আপনার এই সমস্ত ডিরেক্টরি প্রয়োজন হবে না, তবে সেগুলি এখনই সেট আপ করার কোনও ক্ষতি নেই।
mkdir -p app/code/local/MyCompanyName/HelloWorld/Block
mkdir -p app/code/local/MyCompanyName/HelloWorld/controllers
mkdir -p app/code/local/MyCompanyName/HelloWorld/Model
mkdir -p app/code/local/MyCompanyName/HelloWorld/Helper
mkdir -p app/code/local/MyCompanyName/HelloWorld/etc
mkdir -p app/code/local/MyCompanyName/HelloWorld/sql
এবং একটি কনফিগারেশন ফাইল যুক্ত করুন
touch app/code/local/MyCompanyName/HelloWorld/etc/config.xml
এবং কনফিগারেশন ফাইলের অভ্যন্তরে নিম্নলিখিতটি যুক্ত করুন যা মূলত একটি "ফাঁকা" কনফিগারেশন।
<?xml version="1.0"?>
<config>
<modules>
<MyCompanyName_HelloWorld>
<version>0.1.0</version>
</MyCompanyName_HelloWorld>
</modules>
</config>
জিনিসগুলি অপরিবর্তিত করে, এই কনফিগারেশন ফাইলটি আপনাকে ম্যাজেন্টোকে বলতে দেবে আপনি কোন কোডটি চালাতে চান।
রাউটার স্থাপন করা হচ্ছে
এর পরে, আমাদের মডিউলটির রাউটারগুলি সেটআপ করতে হবে। এটি সিস্টেমকে জানতে দেবে যে আমরা কোনও URL গুলি আকারে পরিচালনা করছি
http://example.com/magento/index.php/helloworld
সুতরাং, আপনার কনফিগারেশন ফাইলে, নিম্নলিখিত বিভাগটি যুক্ত করুন।
<config>
<!-- ... -->
<frontend>
<routers>
<!-- the <helloworld> tagname appears to be arbitrary, but by
convention is should match the frontName tag below-->
<helloworld>
<use>standard</use>
<args>
<module>MyCompanyName_HelloWorld</module>
<frontName>helloworld</frontName>
</args>
</helloworld>
</routers>
</frontend>
<!-- ... -->
</config>
আপনি এখানে যা বলছেন তা হ'ল হেলোর্ল্ডের সম্মুখ নাম সহ যে কোনও URL ...
http://example.com/magento/index.php/helloworld
সামনের নাম নিয়ামক MyCompanyName_elloWorld ব্যবহার করা উচিত "।
সুতরাং, জায়গায় উপরের কনফিগারেশনটি সহ, আপনি উপরের হেলিওর্ল্ড পৃষ্ঠাটি লোড করার পরে, আপনি একটি 404 পৃষ্ঠা পাবেন। কারণ আমরা আমাদের নিয়ামকের জন্য একটি ফাইল তৈরি করি নি। এখন এটি করা যাক।
touch app/code/local/MyCompanyName/HelloWorld/controllers/IndexController.php
এখন পৃষ্ঠাটি লোড করার চেষ্টা করুন। অগ্রগতি! 404 এর পরিবর্তে, আপনি একটি পিএইচপি / ম্যাজেন্টো ব্যতিক্রম পাবেন
Controller file was loaded but class does not exist
সুতরাং, আমরা সবে তৈরি করা ফাইলটি খুলুন এবং নিম্নলিখিত কোডটিতে পেস্ট করুন। শ্রেণীর নামটি আপনার রাউটারে সরবরাহ করা নামের উপর ভিত্তি করে করা দরকার।
<?php
class MyCompanyName_HelloWorld_IndexController extends Mage_Core_Controller_Front_Action{
public function indexAction(){
echo "We're echoing just to show that this is what's called, normally you'd have some kind of redirect going on here";
}
}
আমরা এখন যা সেটআপ করেছি তা হ'ল মডিউল / সামনের নাম নিয়ামক। এটি মডিউলটির ডিফল্ট নিয়ামক এবং ডিফল্ট ক্রিয়া। আপনি যদি কন্ট্রোলার বা ক্রিয়াগুলি যুক্ত করতে চান তবে আপনাকে মনে রাখতে হবে যে ম্যাজেন্টো ইউআরএলের প্রথম অংশ গাছটি অপরিবর্তনীয় তারা সর্বদা এই পথে চলবেhttp://example.com/magento/index.php/frontName/controllerName/actionName
সুতরাং আপনি যদি এই url এর সাথে মেলে চান
http://example.com/magento/index.php/helloworld/foo
আপনার কাছে একটি FooController থাকতে হবে, যা আপনি এইভাবে করতে পারেন:
touch app/code/local/MyCompanyName/HelloWorld/controllers/FooController.php
<?php
class MyCompanyName_HelloWorld_FooController extends Mage_Core_Controller_Front_Action{
public function indexAction(){
echo 'Foo Index Action';
}
public function addAction(){
echo 'Foo add Action';
}
public function deleteAction(){
echo 'Foo delete Action';
}
}
অনুগ্রহ করে নোট করুন যে ডিফল্ট নিয়ামক সূচক নিয়ন্ত্রণকারী এবং ডিফল্ট ক্রিয়া সূচকঅ্যাকশন অন্তর্নিহিত দ্বারা পারে তবে এর পরে যদি কিছু আসে তবে তা স্পষ্ট করতে হবে। সুতরাং http://example.com/magento/index.php/helloworld/foo
কন্ট্রোলার FooController এবং অ্যাকশন সূচির সাথে মিলবে এবং সূচক নিয়ন্ত্রণকারীটির অ্যাকশন fooAction নয়। আপনি যদি কোনও ফুঅ্যাকশন রাখতে চান তবে নিয়ামক সূচক কন্ট্রোলারে আপনাকে এই নিয়ামকটিকে এইভাবে স্পষ্টভাবে কল করতে হবে: http://example.com/magento/index.php/helloworld/index/foo
কারণ ইউআরএলের
দ্বিতীয় অংশটি সর্বদা নিয়ামক নাম হবে। এই আচরণটি ম্যাজেন্টোতে বান্ডিল করা জেন্ড ফ্রেমওয়ার্কের উত্তরাধিকার।
আপনি এখন নিম্নলিখিত ইউআরএল হিট করতে এবং আপনার প্রতিধ্বনি বিবৃতি ফলাফল দেখতে সক্ষম হওয়া উচিত
http://example.com/magento/index.php/helloworld/foo
http://example.com/magento/index.php/helloworld/foo/add
http://example.com/magento/index.php/helloworld/foo/delete
সুতরাং, এটি আপনাকে ম্যাজেন্টো কীভাবে কোনও নিয়ামককে প্রেরণ করে সে সম্পর্কে একটি প্রাথমিক ধারণা দেওয়া উচিত। এখান থেকে আমি মডেলগুলি এবং টেমপ্লেট / লেআউট সিস্টেমটি কীভাবে ব্যবহার করা উচিত তা দেখার জন্য বিদ্যমান ম্যাজেন্টো কন্ট্রোলার ক্লাসে ঝাঁকুনির পরামর্শ দিয়েছি।