ওপেনকার্ট 1.5.X বিকাশকারী নতুনদের জন্য দ্রুত শুরু গাইড
এই গাইডটি পিএইচপি, ওওপি এবং এমভিসি আর্কিটেকচারের সাথে ইতিমধ্যে পরিচিত বিকাশকারীদের জন্য রচিত
নীচে, আপনি কার্টের ক্যাটালগের পক্ষে উদাহরণগুলি দেখতে পাবেন। প্রাসঙ্গিক বিভাগে উল্লিখিত মতামতগুলি বাদ দিয়ে অ্যাডমিন দিকটি একই রকম
গ্রন্থাগারগুলি বোঝা
কন্ট্রোলার, মডেল এবং দর্শন ব্যবহার করে লাইব্রেরির সমস্ত কার্যকারিতা অ্যাক্সেসযোগ্য $this->library_name। এই সমস্ত /system/library/ফোল্ডারে পাওয়া যাবে । উদাহরণস্বরূপ, বর্তমান শপিং কার্টের পণ্যগুলি অ্যাক্সেস করতে আপনার Cartক্লাসটি ব্যবহার /system/library/cart.phpকরতে হবে , যা রয়েছে এবং এটি ব্যবহার করে অ্যাক্সেস করা যেতে পারে$this->cart->getProducts()
সাধারণত ব্যবহৃত আইটেম
customer.php - গ্রাহক সম্পর্কিত ফাংশন
user.php - প্রশাসক ব্যবহারকারী সম্পর্কিত ফাংশন
cart.php - কার্ট সম্পর্কিত ফাংশন
config.php - সমস্ত সেটিংস এ থেকে লোড করা হয়
url.php - ইউআরএল জেনারেশন ফাংশন
রুট প্যারামিটার বোঝা
ওপেনকার্টের ফ্রেমওয়ার্কটি route=aaa/bbb/cccকী লোড করতে হবে তা জানতে ক্যোরি স্ট্রিং প্যারামিটারের উপর নির্ভর করে এবং প্রতিটি পৃষ্ঠার জন্য আপনার সম্পাদনা করতে হবে এমন ফাইলগুলি সন্ধান করার জন্য অন্তর্নিহিত বৈশিষ্ট্য। বেশিরভাগ রুটের প্রকৃতপক্ষে কেবলমাত্র aaa/bbbদুটি অংশ হিসাবে দেখা উচিত যা ব্যবহার করে তবে কিছু aaa/bbb/cccঅংশে তিনটি অংশ থাকে প্রথম অংশটি aaaসাধারণত জেনেরিক ফোল্ডারের মধ্যে যেমন ফোল্ডার যেমন নিয়ামক বা টেম্পলেট ফোল্ডারগুলির সাথে সম্পর্কিত। দ্বিতীয় অংশটি সাধারণত প্রাসঙ্গিক .phpবা .tplপ্রসার ছাড়াই ফাইলের নামের সাথে সম্পর্কিত । তৃতীয় অংশটি নীচে "বোঝার নিয়ন্ত্রকগুলি" বিভাগে ব্যাখ্যা করা হয়েছে
ভাষা বোঝা
ভাষাগুলি সাবফোল্ডারে /catalog/language/ফোল্ডারে সংরক্ষণ করা হয় your-language। এর মধ্যে, বিভিন্ন পৃষ্ঠাগুলি জুড়ে ব্যবহৃত সাধারণ পাঠ্য মানগুলি your-language.phpফোল্ডারের অভ্যন্তরে থাকা ফাইলে সংরক্ষণ করা হয় , সুতরাং ক্যাটালগের পাশের ইংরেজি ভাষার জন্য আপনি মানগুলি খুঁজে পাবেন catalog/language/english/english.php। নির্দিষ্ট পৃষ্ঠা টেক্সটের জন্য আপনার প্রয়োজন হবে routeপৃষ্ঠার জন্য (এই সাধারণত ক্ষেত্রে দেখা যায়, কিন্তু না সবসময় হিসাবে আপনি আপনার মত কোন ভাষা ফাইল নির্দিষ্ট করতে পারেন)। উদাহরণস্বরূপ, অনুসন্ধান পৃষ্ঠায় রুট হয়েছে product/search, সেইজন্য এবং যে পেজটি ভাষা নির্দিষ্ট টেক্সট খুঁজে পাওয়া যেতে পারে catalog/language/english/product/search.phpবিজ্ঞপ্তি ফাইল নাম এবং subfolder রুট দ্বারা অনুসরণ মেলে ( .php।
নিয়ামকটিতে ভাষা লোড করতে, আপনি ব্যবহার করুন
$this->language->load('product/search');
তারপরে আপনি getনির্দিষ্ট ভাষার পাঠ্য যেমন, যেমন পুনরুদ্ধার করতে ভাষা গ্রন্থাগার ফাংশনটি ব্যবহার করতে পারেন
$some_variable = $this->language->get('heading_title');
ভাষা ভেরিয়েবলগুলি একটি বিশেষ ভেরিয়েবল ব্যবহার করে ভাষা ফাইলটিতে বরাদ্দ করা হয় $_যা কী এবং পাঠ্য মানগুলির একটি অ্যারে। আপনার মধ্যে /catalog/language/english/product/search.phpঅনুরূপ কিছু খুঁজে পাওয়া উচিত
$_['heading_title'] = 'Search';
গ্লোবাল ল্যাঙ্গুয়েজ ফাইলের মানগুলি english/english.phpস্বয়ংক্রিয়ভাবে লোড হয়ে যায় এবং $this->language->loadপদ্ধতি ছাড়াই ব্যবহারের জন্য উপলব্ধ
নিয়ন্ত্রণকারীদের বোঝা
কন্ট্রোলারগুলির উপর ভিত্তি করে লোড করা হয় routeএবং বুঝতে মোটামুটি সোজা এগিয়ে। কন্ট্রোলাররা /catalog/controller/ফোল্ডারে অবস্থিত । শেষ উদাহরণ থেকে চালিয়ে যাওয়া, অনুসন্ধান পৃষ্ঠার জন্য নিয়ামক /product/search.phpএই ফোল্ডারের মধ্যে রয়েছে। আবার লক্ষ্য করুন যে অনুসরণ করা রুটটি .phpব্যবহৃত হয়েছে।
কন্ট্রোলার ফাইলটি খোলার পরে, আপনি Controllerক্লাসকে প্রসারিত করার জন্য একটি পাস্কেল কেস ক্লাসনেম দেখতে পাবেন , যাকে বলে ControllerProductSearch। এটি আবার রুটের সাথে সুনির্দিষ্ট, Controllerএরপরে সাবফোল্ডার নাম এবং ফাইলের নাম এক্সটেনশন মূলধন ছাড়াই। মূলধনটি আসলে প্রয়োজন হয় না, তবে এটি সহজ পাঠযোগ্যতার জন্য প্রস্তাবিত। এটি লক্ষণীয় যে শ্রেণীর নামগুলি সাবফোল্ডার এবং অক্ষর এবং সংখ্যা বাদে ফাইলের নাম থেকে কোনও মান নেয় না। অ্যান্ডস্কোরগুলি সরানো হয়েছে।
শ্রেণীর মধ্যে পদ্ধতিগুলি রয়েছে। ক্লাসে ঘোষিত পদ্ধতিগুলি publicরুট দিয়ে চালানোর জন্য অ্যাক্সেসযোগ্য - privateতা নয়। ডিফল্টরূপে, একটি স্ট্যান্ডার্ড দুই অংশের রুট ( aaa/bbbউপরে) দিয়ে একটি ডিফল্ট index()পদ্ধতি বলা হয়। যদি কোনও রুটের তৃতীয় অংশ ( cccউপরে) ব্যবহার করা হয় তবে পরিবর্তে এই পদ্ধতিটি চালানো হবে। উদাহরণস্বরূপ, ফাইল এবং ক্লাস account/return/insertলোড করবে /catalog/controller/account/return.phpএবং insertপদ্ধতিটি কল করার চেষ্টা করবে
মডেলগুলি বোঝা
ওপেনকার্টে মডেলগুলি /catalog/model/ফোল্ডারে পাওয়া যায় এবং ফাংশনের ভিত্তিতে গোষ্ঠীযুক্ত হয়, রুট নয়, এবং সুতরাং আপনাকে এগুলি আপনার নিয়ামকটিতে লোড করার প্রয়োজন হবে
$this->load->model('xxx/yyy');
এই subfolder ফাইল লোড করা হবে xxxনামক yyy.php। এটি তখন অবজেক্টের মাধ্যমে ব্যবহারের জন্য উপলব্ধ
$this->model_xxx_yyy
এবং নিয়ন্ত্রকদের হিসাবে, আপনি কেবল এর publicপদ্ধতিগুলি কল করতে পারেন । উদাহরণস্বরূপ, কোনও চিত্রের আকার পরিবর্তন করতে, আপনি tool/imageমডেলটি ব্যবহার করবেন এবং নীচে তার resizeপদ্ধতিটি কল করবেন
$this->load->model('tool/image');
$this->model_tool_image->resize('image.png', 300, 200);
নিয়ামক থেকে দর্শনগুলি পরিবর্তনশীল অ্যাসাইনমেন্ট বোঝা
কন্ট্রোলারের কাছ থেকে দর্শনে মানগুলি পাস করার জন্য, আপনাকে কেবল আপনার ডেটা $this->dataভেরিয়েবলের কাছে বরাদ্দ করতে হবে যা মূলত কী => মান জোড়ার একটি অ্যারে। উদাহরণ হিসাবে
$this->data['example_var'] = 123;
এই দৃশ্যে অ্যাক্সেস করা অল্পরূপে বুঝতে সহজ হওয়া উচিত যে আপনি যদি নিষ্কাশন () পদ্ধতির সাথে পরিচিত হন যা প্রতিটি কীকে ভেরিয়েবলে রূপান্তর করে। সুতরাং example_varকীটি হয়ে ওঠে $example_varএবং ভিউ হিসাবে এটি অ্যাক্সেস করা যায় ।
থিমগুলি বোঝা
থিমগুলি কেবল ক্যাটালগের পক্ষে উপলভ্য এবং মূলত টেম্পলেট, স্টাইলশিট এবং থিম চিত্রগুলির ফোল্ডার। /catalog/view/theme/থিমের নামগুলি অনুসরণ করে ফোল্ডারে থিম ফোল্ডারগুলি স্থাপন করা হয় । ফোল্ডার নাম ব্যতিক্রম সঙ্গে গুরুত্ব নয় defaultফোল্ডারের
অ্যাডমিন পক্ষ ব্যবহার করে /admin/view/template/( /theme/theme-name/পথ থেকে বাদ দেওয়া এটিকে পৃথক থিমগুলি মঞ্জুরি দেয় না)
টেম্পলেট ফাইলগুলি templateথিম ফোল্ডারের মধ্যে একটি ফোল্ডারে থাকে res বর্তমানে নির্বাচিত থিমের জন্য যদি কোনও টেম্পলেট উপলব্ধ না হয় তবে ডিফল্ট ফোল্ডারের টেম্পলেটটি ফলব্যাক হিসাবে ব্যবহার করা হবে। এর অর্থ খুব কম ফাইল দিয়ে থিম তৈরি করা যেতে পারে এবং এখনও পুরোপুরি কার্যকর হয়। এটি কোড সদৃশতা এবং আপগ্রেডগুলি তৈরি করার সাথে সাথে সমস্যাগুলি হ্রাস করে
বোঝার দর্শন (টেমপ্লেট)
ভাষা এবং মডেলগুলির মতো, ভিউ ফাইলগুলি সাধারণত রুটের সাথে সম্পর্কিত, যদিও একেবারেই হওয়া উচিত নয়। ক্যাটালগের পাশের টেম্পলেটগুলি সাধারণত এটি /catalog/view/theme/your-theme/template/উপস্থিত না থাকলে খুঁজে পাওয়া যায় , যার ক্ষেত্রে ডিফল্ট থিমের টেমপ্লেট ব্যবহৃত হবে। উপরে আমাদের অনুসন্ধান পৃষ্ঠার উদাহরণের জন্য, ফাইলটি product/search.tpl। তিনটি অংশবিহীন রুটের ক্ষেত্রে এটি সাধারণত থাকে aaa/bbb_ccc.tplযদিও কোনও নির্দিষ্ট সেট বিধি নেই। অ্যাডমিনে, বেশিরভাগ পৃষ্ঠাগুলি এটি অনুসরণ করে, পণ্য তালিকা পৃষ্ঠার মতো পৃষ্ঠাগুলির তালিকা আইটেমগুলি থাকে catalog/product_list.tplএবং পণ্য সম্পাদনা ফর্মটি থাকে catalog/product_form.tpl। আবার এগুলি সেট করা নেই, তবে ডিফল্ট কার্টের জন্য একটি মানক।
টেমপ্লেট ফাইলটি আসলে অন্য একটি পিএইচপি ফাইল, তবে একটি .tpl এক্সটেনশন সহ এবং এটি নিয়ামক ফাইলটিতে চালিত হয়, সুতরাং আপনি একটি নিয়ামক হিসাবে কোড করতে পারেন যে সমস্ত জিনিস টেমপ্লেট ফাইলে চালানো যেতে পারে (যদিও একেবারে না হলে প্রস্তাবিত নয়) প্রয়োজনীয়)
ডাটাবেস অবজেক্ট বুঝতে
অনুসন্ধানগুলি ব্যবহার করে চালানো হয়
$result = $this->db->query("SELECT * FROM `" . DB_PREFIX . "table`");
DB_PREFIX নামটি যেমন প্রস্তাবিত হয় তেমন উপস্থিতি উপস্থিত থাকলে ডাটাবেস উপসর্গ সহ একটি ধ্রুবক
$resultSELECTকয়েকটি বৈশিষ্ট্য সম্বলিত প্রশ্নের জন্য একটি বস্তু ফেরত দেবে
$result->row যদি এক বা একাধিক কোনও এসোসিয়েটিভ অ্যারে হিসাবে ফিরে আসে তবে প্রথম সারির ডেটা থাকে contains
$result->rows ফোরচ ব্যবহার করে লুপিংয়ের জন্য আদর্শ সারির ফলাফলগুলির একটি অ্যারে রয়েছে
$result->num_rows প্রাপ্ত ফলাফলের সংখ্যা রয়েছে
$this->dbবস্তুটির কয়েকটি অতিরিক্ত পদ্ধতিও রয়েছে
$this->db->escape()পাস করা মানটিতে mysql_real_escape_string () ব্যবহার করে
$this->db->countAffectedএকটি UPDATEকোয়েরি দ্বারা প্রভাবিত সারিগুলির সংখ্যা প্রদান করে
$this->db->getLastId()mysql_insert_id () ব্যবহার করে সর্বশেষ অটো ইনক্রিমেন্ট আইডি প্রদান করে
সংরক্ষিত ভেরিয়েবলগুলি বোঝা
OpenCart মান স্থানে ব্যবহারের ভেরিয়েবল পূর্বনির্ধারিত হয়েছে $_GET, $_POST, $_SESSION, $_COOKIE, $_FILES, $_REQUESTএবং$_SERVER
$_SESSION$this->session->dataডেটা নকল করে এমন একটি এসোসিয়েটিভ অ্যারে ব্যবহার করে সম্পাদিত হয়$_SESSION
অন্যদের সকলকে ব্যবহার করে অ্যাক্সেস করা যায় $this->requestএবং যাদুর উদ্ধৃতিগুলি সক্ষম / অক্ষম করা মেনে চলার জন্য "পরিষ্কার" করা হয়েছে, সুতরাং
$_GET হয়ে যায় $this->request->get
$_POST হয়ে যায় $this->request->post
$_COOKIE হয়ে যায় $this->request->cookie
$_FILES হয়ে যায় $this->request->files
$_REQUEST হয়ে যায় $this->request->request
$_SERVER হয়ে যায় $this->request->server
সারসংক্ষেপ
যদিও উপরেরগুলি বিকাশকারীদের জন্য বুলেটপ্রুফ গাইড নয়, আশা করি এটি শুরু করা ব্যক্তিদের জন্য এটি একটি ভাল সূচনার পয়েন্ট হিসাবে কাজ করবে