একটি প্লাগইন ব্যবহার করে কোর উপাদান কাস্টম ক্ষেত্র যোগ করা

From Joomla! Documentation

The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
This page is a translated version of the page Adding custom fields to core components using a plugin and the translation is 100% complete.
Other languages:
Deutsch • ‎English • ‎Nederlands • ‎català • ‎español • ‎français • ‎italiano • ‎português do Brasil • ‎русский • ‎فارسی • ‎हिन्दी • ‎বাংলা • ‎中文(台灣)‎

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

এই নিবন্ধটি দেখায় কিভাবে com_contact এ পরিচিতিতে একটি অতিরিক্ত ইমেল ঠিকানা যোগ করার উদাহরণ ব্যবহার করে মূল উপাদানটিতে একটি অতিরিক্ত ক্ষেত্র যোগ করা যায়। আপনার জুমলা নিবন্ধগুলির জন্য com_content তে কাস্টম ক্ষেত্র যোগ করার প্রয়োজন হলে, নীচের কোডে "সামগ্রী" -এ "যোগাযোগ" এর কোনও রেফারেন্সগুলি পরিবর্তন করুন। এবং লক্ষ্য করুন যে com_content ক্ষেত্রের মান এবং ওভাররাইডের জন্য "attribs" এবং "params" ব্যবহার করে না।

একটি কাস্টম ক্ষেত্র যোগ করা

এটি এমন একটি প্লাগইন তৈরি এবং ইনস্টল করার পদ্ধতি সম্পর্কে জানার জন্য প্রথমে জুমলা! জন্য একটি প্লাগইন তৈরি করা(সুপারিশ করা হয়)।

একটি সিস্টেম উপাদান একটি ক্ষেত্র যোগ করার জন্য আপনি একটি কনটেন্ট প্লাগইন তৈরি করতে হবে যা onContentPrepareForm ইভেন্ট বাছাই এবং প্রদত্ত JForm এর নিজস্ব ক্ষেত্রগুলি সন্নিবেশ করান। নিম্নোক্ত কোড জুমলা 3.1 এবং পরবর্তীতে।

<?php
// no direct access
defined ('_JEXEC') or die;
class plgContentExample extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 * Note this is only available in Joomla 3.1 and higher.
	 * If you want to support 3.0 series you must override the constructor
	 *
	 * @var boolean
	 * @since <your version>
	 */
	protected $autoloadLanguage = true;

	/**
	 * Prepare form and add my field.
	 *
	 * @param   JForm  $form  The form to be altered.
	 * @param   mixed  $data  The associated data for the form.
	 *
	 * @return  boolean
	 *
	 * @since   <your version>
	 */
	function onContentPrepareForm($form, $data)
	{
		$app    = JFactory::getApplication();
		$option = $app->input->get('option');

		switch($option)
		{
			case 'com_contact' :
				if ($app->isClient('administrator'))
				{
					JForm::addFormPath(__DIR__ . '/forms');
					$form->loadFile('contact', false);
				}

				return true;
		}

		return true;
	}
}
?>

কাস্টম ক্ষেত্রগুলির ফ্রন্ট শেষ সম্পাদনা সক্রিয়করণ

আপনার নতুন কাস্টম ক্ষেত্রগুলির জন্য সম্মুখ সম্পাদনা সম্পাদনা সক্ষম করা খুবই সহজ। Frontend বিষয়বস্তু সম্পাদনা ফর্ম ক্ষেত্র যোগ করতে, কেবল এই ব্লক কোড যোগ করুন:

case 'com_contact':
	if ($app->isClient('site'))
	{
		JForm::addFormPath(__DIR__ . '/forms');
		$form->loadFile('contact', false);
	}
	return true;

অবিলম্বে এটি বিদ্যমান ঘটনা নীচে যোগ করুন।

একবার আপনি এটি সম্পন্ন করেছেন, বিষয়বস্তু ফর্ম edit.php ফাইলের জন্য একটি টেমপ্লেট আড়াআড়ি তৈরি করুন। আপনি com_contact এর জন্য কাস্টম ক্ষেত্রগুলির একটি সেট তৈরি করছেন, আপনি /components/com_contact/views/form/tmpl/edit.php /templates/your-template-name/html/com_contact/form/edit.php- এ কপি করবেন।

আপনার লেআউটের ওভাররাইডের ভিতরে, আপনার নতুন ক্ষেত্রগুলিকে ফর্মের মধ্যে যোগ করুন যেখানে আপনি তাদের দেখতে চান (যেমন, শিরোনামের নীচে, বিবরণ নীচে), নিশ্চিত করুন যে ক্ষেত্রের নাম আপনার প্লাগইন থেকে এক্সএমএল ফাইলের সাথে মেলে (আপনি এটি পরবর্তী তৈরি করবেন )।

<?php // Checking if this is an existing item or not ?>
<?php if ($this->item->id) : ?>
  <?php // If it is an existing item, get the attribs part of the existing record ?>
  <?php $attribs = json_decode($this->item->attribs); ?>
  <?php // Set the value of the custom field to what is already saved. ?>
  <?php // Duplicate for the number of fields you need, changing the field_name as needed. ?>
  <?php echo $this->form->setValue('field_name', 'attribs', $attribs->field_name); ?>
<?php endif; ?>
<?php // This line needs added to the file right where you want to display it. So, if you want it to show right after the description field, find the description field and place this right after it. Duplicate for the number of fields you need, changing the field_name as needed. ?>
<?php // Now we display the field. If we are editing an existing item, the previously saved data will be populated already ?>
<?php echo $this->form->renderField('field_name', 'attribs'); ?>

এটি সম্পন্ন হলে, আপনার ক্ষেত্রগুলি এখন প্রদর্শিত হবে এবং ফ্রন্টএন্ড সম্পাদনার মাধ্যমে সংরক্ষণ করা হবে।

অতিরিক্ত ক্ষেত্র ফাইল ফরম / contact.xml থেকে প্লাগইন ডিরেক্টরি থেকে লোড করা হয়। এটি গুরুত্বপূর্ণ যে এই ক্ষেত্রগুলি ক্ষেত্রের উপাদানগুলির সাথে "সম্পত্তি" হিসাবে সেট করা আছে "প্যারাম"। আপনি যদি এই সম্পত্তি নামটি সেট না করেন, তবে ক্ষেত্রগুলি অ্যাডমিন সাইটে প্রদর্শিত হবে কিন্তু মানগুলি সংরক্ষণ করা হবে না। বিঃদ্রঃ: Com_content এ আপনার ক্ষেত্রের নাম "<fields name ="attribs">" অবশ্যই না হওয়া উচিত অন্যথায় ক্ষেত্রগুলি অ্যাডমিন সাইটে প্রদর্শিত হবে কিন্তু মানগুলি সংরক্ষণ করা হবে না।

এই ক্ষেত্রে আমরা একটি লেবেল জন্য একটি ক্ষেত্র যোগ করা হয় পাবলিক ওয়েবসাইট ইমেইল ক্ষেত্রের বর্ণনা এবং ইমেল ঠিকানা মূল্য জন্য একটি দ্বিতীয় ক্ষেত্র।

<?xml version="1.0" encoding="UTF-8"?>
<form>
	<fields name="params">
		<fieldset name="params" label="PLG_CONTENT_EXAMPLE_FIELDSET_LABEL">
			<field
				name="contact_emaillabel2"
				type="text"
				label="PLG_CONTENT_EXAMPLE_CONTACT_EMAILLABEL2"
			/>
			<field
				name="contact_email2"
				type="text"
				label="PLG_CONTENT_EXAMPLE_CONTACT_EMAIL2"
				filter="email"
			/>
		</fieldset>
	</fields>
</form>

পরিশেষে আমরা একটি ভাষা ফাইল প্রয়োজন যাতে পরামিতি অ্যাডমিন সাইট সুন্দরভাবে উপস্থাপন করা হয় এবং বিভিন্ন ভাষায় অনুবাদযোগ্য হয়। এই ফাইলটি এমন কিছু বলা প্রয়োজন যা en-GB.plg_content_example.ini

PLG_CONTENT_EXAMPLE_FIELDSET_LABEL="Additional Information"
PLG_CONTENT_EXAMPLE_CONTACT_EMAIL2="Additional email address"
PLG_CONTENT_EXAMPLE_CONTACT_EMAILLABEL2="Additional email label"

এটা com_contact এ ক্ষেত্র যোগ করার জন্য এটি আপনি যদি এই প্লাগইনটি ইনস্টল করেন, তবে আপনার সাথে একটি অতিরিক্ত ট্যাব থাকবে যা আপনার সাথে যোগাযোগের ফর্মটি "অতিরিক্ত তথ্য" নামক নতুন ক্ষেত্র সহ অন্তর্ভুক্ত করবে। আপনি যদি কোনও যোগাযোগের জন্য নতুন লেবেল ও ইমেল ঠিকানা ক্ষেত্রগুলি পূরণ করেন, তাহলে আপনি দেখতে পাবেন যে com_contact আপনার জন্য তথ্য সঞ্চয় করবে এবং পুনরুদ্ধার করবে।

একই প্লাগইনটি বিভিন্ন ক্ষেত্রগুলিতে আরো ক্ষেত্র যুক্ত করতে ব্যবহার করা যেতে পারে; শুধু প্রাসঙ্গিক কোডটি onContentPrepareForm ফাংশনে যুক্ত করুন এবং উপযুক্ত XML ফর্ম ফাইলগুলি তৈরি করুন।

কাস্টম ক্ষেত্র প্রদর্শন

কাস্টম ক্ষেত্র প্রদর্শন করতে আপনাকে আপনার টেমপ্লেটে প্রাসঙ্গিক উপাদানটির জন্য একটি লেআউট ওভাররাইড তৈরি করতে হবে। টেমপ্লেট তৈরির আরও বিস্তারিত জানার জন্য একটি মৌলিক জুমলা! তৈরি টেমপ্লেট. লেআউটের ওভাররাইডগুলির বিশদ বিবরণের জন্য, আউটপুট ওভাররাইড বোঝাচ্ছে দেখুন।

ফাইলটি <Joomla>/components/com_contact/views/contact/tmpl/default.php তে অনুলিপি করুন <Joomla>/components/com_contact/views/contact/tmpl/default.php, তৈরি করুন প্রয়োজনীয় আপনার টেমপ্লেট ফোল্ডার অতিরিক্ত তথ্য অন্তর্ভুক্ত করার জন্য আমরা এই ফাইলটি সম্পাদনা করতে যাচ্ছি। Com_contact কম্পোনেন্টটি স্বয়ংক্রিয়ভাবে আমাদের জন্য অতিরিক্ত ক্ষেত্রগুলি লোড করে এবং এটি $this->params নামে একটি ভেরিয়েবলের মধ্যে লোড করে। আমরা যা করতে চাই তা হল চেক করুন যে ডেটা সেট করা আছে এবং, যদি তা হয় তবে তা প্রদর্শন করুন।

ক্ষেত্র প্রদর্শন করতে, <template> /html/com_contact/contact/default.php এ অবস্থানটি খুঁজুন যেখানে আপনি অতিরিক্ত ইমেল ঠিকানাটি প্রদর্শন করতে চান এবং তার সাথে নিম্নলিখিত কোড যুক্ত করুন:

<?php if ($this->params->get('contact_emaillabel2', false)) : ?>
	<div>
		<span class="contact-additionalemail"><?php echo $this->params->get('contact_emaillabel2'); ?>:&emsp;<a href="mailto:<?php echo $this->params->get('contact_email2'); ?>"><?php echo $this->params->get('contact_email2'); ?></a><br/></span>
	</div>
<?php endif; ?>

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