কখনও কখনও আরও কার্যকারিতা পেতে বা কিছু মূল ফাংশন অন্যভাবে কাজ করার জন্য কোর ক্লাসগুলি ওভাররাইড করা প্রয়োজন। কোর ক্লাস ওভাররাইড করার কোনও উপায় আছে কি? যদি এটি সম্ভব হয় তবে এগুলি ওভাররাইড করে আমি কী সমস্যার মুখোমুখি হতে পারি?
কখনও কখনও আরও কার্যকারিতা পেতে বা কিছু মূল ফাংশন অন্যভাবে কাজ করার জন্য কোর ক্লাসগুলি ওভাররাইড করা প্রয়োজন। কোর ক্লাস ওভাররাইড করার কোনও উপায় আছে কি? যদি এটি সম্ভব হয় তবে এগুলি ওভাররাইড করে আমি কী সমস্যার মুখোমুখি হতে পারি?
উত্তর:
হ্যা এটা সম্ভব.
ক্লাসগুলিকে ওভাররাইড করতে আপনি একটি সিস্টেম প্লাগইন ব্যবহার করতে পারেন, দয়া করে এই লিঙ্কটি এবং এটি এবং এটি পড়ুন
দুটি সমস্যার মুখোমুখি হবেন:
আপনাকে পুরো ক্লাসটি ওভাররাইড করতে হবে (কেবল এর অংশ নয়)
যদি কোরটি আপডেট হয় এবং ক্লাসটিও আপডেট / পরিবর্তিত হয় তবে আপনাকে আপনার ওভাররাইড আপডেট করতে হবে (প্রয়োজনে)।
আমি কিছুক্ষণ আগে একটি প্লাগইন তৈরি করেছি যা আপনাকে মূল ক্লাসগুলিকে ওভাররাইড করতে দেয় তবে এটি এখনও জ্যাকজো তার উত্তরে যে সমস্যাগুলি দেখিয়েছিল সেগুলির শিকার হয়ে যায়। তবে এটি আপনাকে পরিষ্কারভাবে ওভাররাইডগুলি করার অনুমতি দেয়।
components/com_content/models/articles.php
।
জুমলা 3 ব্যবহারকারীর জন্য - এগুলি পরীক্ষা করে দেখুন। এটা তোমাকে সাহায্য করবে.
জুমলা 3 তে এমভিসি ক্লাস ওভাররাইড করুন
প্লাগিন - https://github.com/ghazal/plg_mvcoverride
http://docs.joomla.org/How_to_override_the_component_mvc_from_the_Joomla!_core
ধন্যবাদ /joomla//users/270/ghazal
আমি এটির জন্য দীর্ঘ সময় ছিলাম এবং ডনকে প্রতিশ্রুতি দিয়েছিলাম যে আমার কাজ শেষ হয়ে গেলে এটি সম্পর্কে আরও বিশদ জানাব।
আমি উপাদানগুলির জন্য জুমলা এমভিসিটিকে ওভাররাইড করতে এবং জুমলাকে আমার প্লাগইন এইচটিএমএল ফোল্ডারেও কেবল টেম্পলেট এইচটিএমএল ফোল্ডারের মধ্যেই ওভাররাইডগুলি সন্ধান করতে বলি।
আমি কখনই পছন্দ করতে পারি নি যখন বিকাশকারীরা আসলে জুমলা ডিফল্ট ক্লাস নেন এবং এটির সাথে জগাখিচুড়ি হয়, তাই কিছু ব্রেক করার পরিবর্তে আমি যদি পারি তবে আমি ক্লাসটি প্রসারিত করি।
আমার প্রক্রিয়া অনুসরণ করে।
চিত্রটি এখানে নয় বরং http://prnscr.com/3d9syq
নীচে স্নিপেটের প্রথম অংশগুলি ব্যবহারকারী কোথায় আছে তা যাচাই করছে, যদি তিনি জুমলা আপডেট করতে চলেছেন তবে আমি তৈরি করা টেম্প ক্লাসের ফাইলগুলি মুছে ফেলছি যা নিশ্চিত হয়ে যায় যে আপডেটটি সম্পূর্ণ হওয়ার পরে আমরা জ্যাকজয়ের সংখ্যাটি যত্ন নেওয়ার চেয়ে বেশি যত্ন নেওয়ার চেষ্টা করি ones 2।
if (($this->Input('option') == 'com_joomlaupdate' && $this->Input('task') == 'update.install') || ($this->Input('option') == 'com_joomlaupdate' && $this->Input('layout') == 'complete')) {
JFolder::delete(JPATH_SITE . '/plugins/system/yjsg/includes/yjsgcore/classes/extend/classes/');
JFolder::create(JPATH_SITE . '/plugins/system/yjsg/includes/yjsgcore/classes/extend/classes/');
$indexContent = '';
JFile::write(JPATH_SITE . '/plugins/system/yjsg/includes/yjsgcore/classes/extend/classes/index.html', $indexContent);
}
$YjsgJViewDefaultRead = JPATH_LIBRARIES . '/legacy/view/legacy.php';
$YjsgJViewDefaultFile = YJSGEXTEND . "classes" . YJDS . "Yjsg" . $isView . "Default" . $IsJversion . ".php";
//extend JView library class
if (!JFile::exists($YjsgJViewDefaultFile)) {
$YjsgJViewDefault = JFile::read($YjsgJViewDefaultRead);
$YjsgJViewDefault = str_replace('class ' . $isView, 'class Yjsg' . $isView . 'Default', $YjsgJViewDefault);
JFile::write($YjsgJViewDefaultFile, $YjsgJViewDefault);
}
require_once($YjsgJViewDefaultFile);
jimport('joomla.application.component.view');
JLoader::register($isView, YJSGEXTEND . $IsJversion . '/component/view.php', true);