কীভাবে ওপেনকার্ট গুরু হবেন? [বন্ধ]


100

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


ডকস.ওপেনকার্ট.কম এবং কিফোরিয়ার ফ্রেমওয়ার্কের ওভারভিউ দেখুন । ওপেনকার্ট ফোরাম> সমর্থন এ থ্রেডগুলির মাধ্যমে ব্রাউজ করুন । ভবিষ্যতে, আশা করি আমাদের অঞ্চল 51.stackexchange.com/proposals/77558/opencart-
পেসারিয়ার

এটি সত্যিই একটি গুরুত্বপূর্ণ প্রশ্ন, কখনও কখনও এসও মানগুলি অতিক্রম করা সত্যিই সহায়ক ...
কেএডি

4
এই প্রশ্নের জন্য অনেক ধন্যবাদ, এটি আমাকে অনেক সাহায্য করেছে
বিপুল রায়

@ বিপুলরোয় আমি খুশি! দেখে মনে হচ্ছে এটি এখন একটি জনপ্রিয় প্রশ্ন!
কোডক্র্যাক

উত্তর:


313

ওপেনকার্ট 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


সারসংক্ষেপ

যদিও উপরেরগুলি বিকাশকারীদের জন্য বুলেটপ্রুফ গাইড নয়, আশা করি এটি শুরু করা ব্যক্তিদের জন্য এটি একটি ভাল সূচনার পয়েন্ট হিসাবে কাজ করবে


4
ধন্যবাদ! আপনি এটি কোথায় পেলেন?
কোডক্র্যাক

64
আমি এটি লিখেছিলাম. আমি লিখেছি এবং কোয়েস্টন ফিট করতে প্রয়োজন অনুগ্রহ করে
জে গিলফোর্ড

4
খুব সুন্দর. বেশিরভাগ গাইডের চেয়ে আরও তথ্যবহুল উপায়। আপনি কি কোনও সুযোগে অগ্রসর হয়েছেন?
কোডক্র্যাক

4
এটি সম্প্রদায় উইকির স্থিতি দেওয়া উচিত
Stann0rz

4
@ অলিম্যাটিকিং - আপনার নিজের মোডগুলি তৈরি করতে শুরু করার জন্য এই গাইডটি ইতিমধ্যে আপনাকে পর্যাপ্ত তথ্য সরবরাহ করে। নেটে মডিউল বিকাশের জন্য নির্দিষ্ট টিউটোরিয়াল রয়েছে
জে গিলফোর্ড

36

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

CACHE
$this->cache->delete($key) - Deletes cache [product, category, country, zone, language, currency,
manufacturer]

CART
$this->cart->getProducts() Gets all products currently in the cart including options, discounted prices, etc.
$this->cart->add( $product_id, $qty = 1, $options = array()) - Allows you to add a product to the cart
$this->cart->remove( $key ) - Allows you to remove a product from the cart
$this->cart->clear() - Allows you to remove all products from the cart
$this->cart->getWeight() - Sum of the weight of all products in the cart that have require shipping set to Yes
$this->cart->getSubTotal() - returns the subtotal of all products added together before tax
$this->cart->getTotal() - returns the total of all products added together after tax
$this->cart->countProducts() - returns the count of all product in the cart
$this->cart->hasProducts() - returns true if there is at least one item in the cart
$this->cart->hasStock() - returns false if there is at least one item in the cart that is out of stock
$this->cart->hasShipping() - returns true if there is at least one item in the cart that requires shipping
$this->cart->hasDownload() - returns true if there is at least one item in the cart that has a download
associated

CONFIG
$this->config->get($key) - returns setting value by keyname based on application (catalog or admin)
$this->config->set($key, $value) - set the value to override the setting value. DOES NOT SAVE TO DATABASE

CURRENCY
$this->currency->set($currency) - set or override the currency code to be used in the session
$this->currency->format($number, $currency = '', $value = '', $format = TRUE) - format the currency
$this->currency->convert($value, $from, $to) - convert a value from one currency to another. Currencies must
exist
$this->currency->getId() - get the database entry id for the current currency (1, 2, 3, 4)
$this->currency->getCode() - get the 3-letter iso code for the current currency (USD, EUR, GBP, AUD, etc)
$this->currency->getValue($currency) - get the current exchange rate from the database for the specified
currency.
$this->currency->has(currency) - Check if a currency exists in the opencart currency list

CUSTOMER
$this->customer->login($email, $password) - Log a customer in
$this->customer->logout() - Log a customer out
$this->customer->isLogged() - check if customer is logged in
$this->customer->getId() - get the database entry id for the current customer (integer)
$this->customer->getFirstName() - get customer first name
$this->customer->getLastName() - get customer last name
$this->customer->getEmail() - get customer email
$this->customer->getTelephone() - get customer telephone number
$this->customer->getFax() - get customer fax number
$this->customer->getNewsletter() - get customer newsletter status
$this->customer->getCustomerGroupId() - get customer group id
$this->customer->getAddressId() - get customer default address id (maps to the address database field)

DATABASE
$this->db->query($sql) - Execute the specified sql statement. Returns row data and rowcount.
$this->db->escape($value) - Escape/clean data before entering it into database
$this->db->countAffected($sql) - Returns count of affected rows from most recent query execution
$this->db->getLastId($sql) - Returns last auto-increment id from more recent query execution 4

DOCUMENT (*Called from controller only before renderer)
$this->document->setTitle($title) - Set page title
$this->document->getTitle()- Get page title
$this->document->setDescription($description) - Set meta description
$this->document->getDescription()- Get meta description
$this->document->setKeywords()- Set meta keywords
$this->document->getKeywords()- Get meta keywords
$this->document->setBase($base) - Set page base
$this->document->getBase() - Get page base
$this->document->setCharset($charset) - Set page charset
$this->document->getCharset() - Get page charset
$this->document->setLanguage($language) - Set page language
$this->document->getLanguage()- Get page language
$this->document->setDirection($direction) - Set page direction (rtl/ltr)
$this->document->getDirection()- Get page direction (rtl/ltr)
$this->document->addLink( $href, $rel ) – Add dynamic <link> tag
$this->document->getLinks()- Get page link tags
$this->document->addStyle( $href, $rel = 'stylesheet', $media = 'screen' ) – Add dynamic style
$this->document->getStyles()- Get page styles
$this->document->addScript( $script ) - Add dynamic script
$this->document->getScripts()- Get page scripts
$this->document->addBreadcrumb($text, $href, $separator = ' &gt; ') – Add breadcrumb
$this->document->getBreadcrumbs()- Get Breadcrumbs

ENCRYPT
$this->encryption->encrypt($value) - Encrypt data based on key in admin settings
$this->encryption->decrypt($value) - Decrypt data based on key in admin settings

IMAGE
$this->image->resize($width = 0, $height = 0)

JSON
$this->json->encode( $data )
$this->json->decode( $data , $assoc = FALSE)

LANGUAGE
$this->language->load($filename);

LENGTH
$this->length->convert($value, $from, $to) - convert a length to another. units must exist
$this->length->format($value, $unit, $decimal_point = '.', $thousand_point = ',') - format the length to use
unit

LOG
$this->log->write($message) - Writes to the system error log

REQUEST
$this->request->clean($data) - Cleans the data coming in to prevent XSS
$this->request->get['x'] - Same as $_GET['x']
$this->request->post['x'] - Same as $_POST['x']

RESPONSE
$this->response->addHeader($header) - additional php header tags can be defined here
$this->response->redirect($url) - redirects to the url specified

TAX
$this->tax->setZone($country_id, $zone_id) - Set the country and zone id for taxing (integer)
$this->tax->calculate($value, $tax_class_id, $calculate = TRUE) - Calculate all taxes to be added to the total
$this->tax->getRate($tax_class_id) - Get the rates of a tax class id
$this->tax->getDescription($tax_class_id) - Get the description of a tax class id
$this->tax->has($tax_class_id) - Check if a tax class id exists in opencart

SESSION
$this->session->data['x'] - Same as $_SESSION['x']  

9

এখানে একটি ওপেনকার্ট উইকির ওয়েবসাইট রয়েছে যার মাধ্যমে প্রাথমিক বিকাশকারীদের ডকুমেন্টেশন রয়েছে। আরও তথ্যের জন্য নীচে প্রদত্ত ইউআরএলগুলি অনুসরণ করুন:

http://wiki.opencarthelp.com/doku.php?id=start
http://wiki.opencarthelp.com/doku.php?id= স্মৃতি_সংশ্লিষ্ট

ইন্টারনেট সংরক্ষণাগার লিঙ্ক

http://web.archive.org/web/20160305131349/http://wiki.opencarthelp.com/doku.php?id=start http://web.archive.org/web/20160305131349/http://wiki .opencarthelp.com / doku.php? id = পদ্ধতি_references

উদাহরণস্বরূপ মেথড রেফারেন্সের জন্য বিশদ রয়েছে:

  1. গ্রাহক লগইন
  2. ডিবি অ্যাক্সেস
  3. শপিং কার্ট হ্যান্ডলিং
  4. কনফিগার
  5. ক্যাশে
  6. মুদ্রা হ্যান্ডলিং

এখনও কিছু পৃষ্ঠাগুলি নির্মাণাধীন রয়েছে তবে এটি সহায়ক হতে চলেছে।

[হালনাগাদ]

জানুয়ারি-2018 এর হিসাবে, ওপেনকার্হেল্প.কম ডোমেনটি ডাউন রয়েছে is


এখনও কয়েক মাস পরও অনেক তথ্য অনুপস্থিত বলে মনে হচ্ছে। এই প্রকল্প কি পরিত্যক্ত হয়েছে?
পেসিয়ার

@ পেসারিয়ার, আমি এটির জন্য নিশ্চিত নই।
ধর্মং

এটি একটি দুর্দান্ত পৃষ্ঠা এমনকি খোলার কার্ট উইকিটির উল্লেখ রয়েছে, আপনি এখানে লিঙ্কটি দেখতে পারেন wiki.opencarthelp.com/doku.php?id=opencart_framework
নাসিম

4

যদিও এই বিষয়টির ইতিমধ্যে বহুবার উত্তর দেওয়া হয়েছে, তবে আমি আমার অভিজ্ঞতার ভিত্তিতে ওপেনকার্টে দক্ষতা অর্জনের জন্য আরেকটি পদ্ধতির প্রস্তাব করতে চাই।

করতে করতে শেখা

হাতে গোনা কয়েকটি ফাইল দিয়ে স্ক্র্যাচ থেকে আপনার নিজের ওপেনকার্ট কাঠামো তৈরি করে আপনি বুঝতে পারবেন কীভাবে সবকিছু একসাথে রাখা হয়েছে। আমি আপনার জন্য ওপেনকার্টের ফাইল কাঠামোটি নকল করব।

একটি ফাইল তৈরি করুন index.php

<?php
// My simpleCart

1. রেজিস্ট্রি

ওপেনকার্ট লোড শ্রেণীর সমস্ত দৃষ্টান্ত তালিকাভুক্ত করতে রেজিস্ট্রি প্যাটার্ন ব্যবহার করে। এটি আপনার ওপেনকার্ট অ্যাপ্লিকেশনটির হৃদয়। এরপরে রেজিস্ট্রি অবজেক্টটি অন্য বিষয়গুলিতে দ্রুত অ্যাক্সেসের জন্য প্রতিটি বিভাগ, মডেল এবং লাইব্রেরির চারপাশে পাস করা হয়।

পথ সহ একটি ফাইল তৈরি করুন /system/engine/registry.php

<?php
// Registry class. 
class Registry
{
    private $data = array();

    public function set($key, $value){
        $this->data[$key] = $value;
    }

    public function get($key){
        return (isset($this->data[$key])) ? $this->data[$key] : false;
    }
}

আপনার মধ্যে index.php

<?php
// My simpleCart

//load dependency files
require_once('system/engine/registry.php');

//initialize registry
$registry = new Registry;

2. আউটপুট

এখন আসুন একটি আউটপুট যোগ করুন যা ভবিষ্যতে আমাদের এইচটিএমএল হবে। সর্বোপরি, পুরো ধারণাটি ব্রাউজারে একটি স্ট্রিং পাঠ্য text

ফাইল তৈরি করুন system/library/response.php

<?php
class Response {
    private $output;

    public function getOutput() {
        return $this->output;
    }

    public function setOutput($output) {
        $this->output = $output;
    }

    public function output() {
        if ($this->output) {
            echo $this->output;
        }
    }
}

এবং আপনার মধ্যে index.php

<?php
// My simpleCart

//load dependency files
require_once('system/engine/registry.php');
require_once('system/library/response.php');

//initialize registry
$registry = new Registry;

//initialize response
$response = new Response;
//add response object to the registry
$registry->set('response', $response);

//lets set an output as a test
$registry->get('response')->setOutput('Hello World');

//send the output to the client
$registry->get('response')->output();

লক্ষ্য করুন আমি হ্যালো ওয়ার্ল্ডকে কেবল উদাহরণ হিসাবে যুক্ত করেছি। আমরা এটি আরও অপসারণ করব। আপনার সাইটটি এটি পরীক্ষা করতে রিফ্রেশ করুন। ব্রাউজার প্রদর্শন করা উচিত Hello World

3. নিয়ন্ত্রক

পৃষ্ঠা হিসাবে কন্ট্রোলারদের চিন্তা করুন of তারা ক্লায়েন্টের কাছে কী প্রদর্শিত হবে তা সংজ্ঞায়িত করবে: পাঠ্য, এইচটিএমএল, জসন, ডাউনলোড বা এমনকি একটি চিত্র। আপাতত, আমরা কেবল একটি পৃষ্ঠা চাই যা পাঠ্য প্রেরণ করে।

আমরা homeপৃষ্ঠার জন্য একটি নিয়ামক তৈরি করব ।

পথ সহ একটি ফাইল যুক্ত করুন catalog/controller/common/home.php

<?php

class ControllerCommonHome{

    private $registry = array();

    public function __construct($registry){
        $this->registry = $registry;
    }

    public function index(){

        $output = 'Home Page';
        //using the registry to get the response object and set the Output
        $this->registry->get('response')->setOutput($output);
    }
}

এবং আপনার সম্পাদনা করুন index.php

<?php
// My simpleCart

//load registry
require_once('system/engine/registry.php');
//load response
require_once('system/library/response.php');

//initialize registry
$registry = new Registry;

//initialize response
$response = new Response;
//add resoinse object to the registry
$registry->set('response', $response);

//load controller common/home
require_once('catalog/controller/common/home.php');
$controller = new ControllerCommonHome($registry);
$controller->index();

//send the output to the client
$registry->get('response')->output();

আমি কীভাবে $refistryকন্ট্রোলারকমোন হোম এ পাস করেছি তা লক্ষ্য করুন যাতে আমি এটি নিয়ামকের অভ্যন্তরে অ্যাক্সেস করতে পারি।

4. রাউটার

আমরা চাই না কন্ট্রোলারদের হার্ডকড করা উচিত, ঠিক আছে। routeকোন কন্ট্রোলারটি লোড করতে হবে তা আমাদের কার্টকে জানাতে আমরা url ঠিকানা থেকে একটি প্যারামিটার ব্যবহার করব ।

পথ সহ একটি ফাইল তৈরি করুন system/library/request.php

<?php
class Request {
    public $get = array();

    //for now I just need the $_GET parameter
    public function __construct() {
        $this->get = $_GET;
    }
}

রাউটার শ্রেণি তৈরি করুন যা রুটের উপর ভিত্তি করে কন্ট্রোলার ফাইল সূচনার জন্য দায়বদ্ধ হবে (অন্য কথায়: গতিশীলভাবে নিয়ন্ত্রণকারীকে কল করুন)

<?php
class Router {
    private $registry;

    public function __construct($registry) {
        $this->registry = $registry;
    }

    public function dispatch($route) {
        require_once('catalog/controller/'.$route.'.php');
        $class = "Controller".str_replace('/', '', $route);
        $controller = new $class($this->registry);
        $controller->index();
    }
}

এটি আপনার লোড করুন index.php

<?php
require_once('system/engine/registry.php');
require_once('system/engine/router.php');
require_once('system/library/response.php');
require_once('system/library/request.php');

$registry = new Registry;

$response = new Response;
$registry->set('response', $response);

$request = new Request;
$registry->set('request', $request);

//get the route from the url
if(isset($registry->get('request')->get['route'])){
    $route = $registry->get('request')->get['route'];
}else{
    $route = 'common/home';
}

//initiate the router and dispatch it base on the route
$router = new Router($registry);
$router->dispatch($route);


$registry->get('response')->output();

লক্ষ্য করুন কীভাবে আমি সবকিছু লোড $registryএবং তারপর পাস $routerযা পরে তা পাসের $controller

এই পোস্টটি ইতিমধ্যে খুব দীর্ঘ, তবে আমি আশা করি এটি ওপেনকার্টে এমভিসি প্যাটার্নের প্রাথমিক ধারণা দেবে।

আপনি যদি এই পোস্টটি দিয়ে চালিয়ে যেতে চান এবং মডেল এবং দর্শনগুলির মতো অন্যান্য জিনিসগুলি কীভাবে কাজ করে তা আপনাকে জানায়, এই উত্তরটিকে রেট দিন যাতে আমি জানি।

এছাড়াও আমার ইউটিউব https://www.youtube.com/dreamvention এবং আমার ব্লগ https://dreamvention.com/blog দেখুন আমি আপনাকে ছেলেদের জন্য আরও টিপস এবং টিউটোরিয়াল পোস্ট করব!


1

পিএইচপি একটি 5000 এরও বেশি বিল্ট-ইন ফাংশন সহ একটি বৃহত ভাষা তাই নতুন প্ল্যাটফর্ম শেখার জন্য একটি কৌশল হ'ল এটি কোন ফাংশনটি প্রায়শই ব্যবহার করে তা চিহ্নিত করা এবং সেগুলি খুব ভালভাবে জানতে কিছুটা সময় ব্যয় করা।

আমি ওপেনকার্ট উত্স কোডে কিছু অনুসন্ধান চালিয়েছি এবং শীর্ষে 10 সবচেয়ে বেশি ব্যবহৃত ব্যবহৃত ফাংশনগুলি হ'ল:

array()
count()
explode()
implode()
mktime()
delete()
time()
date()
sprintf()
list()

এখানে তালিকাভুক্ত সমস্ত 52 টি পাশাপাশি লিনাক্স ব্যাশ কমান্ডগুলি সাধারণভাবে ব্যবহৃত ফাংশনগুলি সনাক্ত করতে আপনি যে কোনও কোডবেস ব্যবহার করতে পারেন: https://www.antropy.co.uk/blog/e कुशल-learning-for-new-opencart-developers/


1

এই ইউটিউব ভিডিও প্লেলিস্ট ওপেনকার্ট বিকাশকারী গুরুস হয়ে উঠতে সহায়ক হতে পারে:

ওপেনকার্ট ভিডিও টিউটোরিয়াল

  1. সূচনা ভূমিকা এবং সারণী এই ভিডিওটি সিরিজের প্রবর্তনের মধ্য দিয়ে যায়
  2. ওপেনকার্ট ইনস্টলেশন লোকালহোস্ট এই ভিডিওটি লোকালহোস্টে ওপেনকার্ট ইনস্টলেশন মাধ্যমে যায়
  3. ওপেনকার্টের ফাইল এবং ফোল্ডার কাঠামো এটি ওপেনকার্টের ফাইল এবং ফোল্ডারগুলির কাঠামো বর্ণনা করে
  4. ওপেনকার্টে ডাটাবেস টেবিল স্কিমা তৈরি এটি ডাটাবেস টেবিল স্কিমা প্রদর্শন করে এবং কিভাবে ওপেনকার্টে ডাটাবেস সারণী তৈরি করবেন তা দেখায়
  5. ওপেনকার্ট লাইব্রেরি পূর্বনির্ধারিত অবজেক্টের পদ্ধতিগুলি ওপেনকার্ট লাইব্রেরি পূর্বনির্ধারিত অবজেক্টগুলির পদ্ধতি বর্ণনা করে এবং সেগুলি কোথায় পাওয়া যায় তা দেখায়।
  6. ওপেনকার্টে এমভিসিএল প্যাটার্ন, কোড ফ্লো এবং অনুরোধ এবং প্রতিক্রিয়া এটি এমভিসিএল প্যাটার্ন, কোড প্রবাহ এবং ওপেনকার্টে অনুরোধ এবং প্রতিক্রিয়া দেখায়। নীচের ছবিতে তারা প্রবাহটি বর্ণনা করে: এমভিসিএল কোড সহ বর্ণিত

  7. ওপেনকার্ট মডিউলটি ইনস্টল করুন, কনফিগার করুন এবং আনইনস্টল করুন এটি মডিউলগুলি আপলোড করার, ওপেনকার্ট 3 মডিউল / এক্সটেনশন ইনস্টল, কনফিগার এবং আনইনস্টল করার তিনটি উপায় দেখায়।

  8. ওপেনকার্ট 3 এ লেআউট এবং অবস্থান এটি ওপেনকার্ট 3 লেআউট এবং অবস্থানগুলি বর্ণনা করে। এটি বিভাগের পৃষ্ঠাগুলির উদাহরণ প্রদান করে বিভিন্ন পৃষ্ঠাগুলির জন্য কাস্টমাইজ লেআউটগুলি কীভাবে প্রদর্শন করবেন তা দেখায়। আমরা একটি ভিন্ন বিভাগের জন্য বিভিন্ন লেআউট দেখায়।

  9. ওপেনকার্টের ইভেন্টের সংক্ষিপ্ত বিবরণ আপনি শিখবেন যে ওপেনকার্টে ইভেন্টগুলি কীভাবে হয়, তারা কীভাবে কাজ করে এবং কী এগুলিকে এত দরকারী করে তোলে।

  10. বিকাশকারীদের জন্য ওপেনকার্ট এপিআই ডকুমেন্টেশন এই ভিডিওটি কীভাবে কাস্টম ওপেনকার্ট এপিআই ব্যবহার করবেন এবং তৈরি করবেন তা দেখানো হবে

আপনি একবার এই ভিডিওগুলি দেখতে পেলে আপনি কোডিং শুরু করতে পারেন :)

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