آموزش استفاده از فیلد سفارشی جوملا برای اضافه کردن URLهای هم کانون

راهنمای استفاده از فیلد سفارشی (Custom Fields) در جوملا – اضافه کردن URL کانونیکال - در طی انجام این رویه اگر URL صفحه خود را تغییر دهید، لازم است که فیلد هم کانون اضافه شده را به روزرسانی کنید تا با URL مقاله یکسان باشد. در غیر اینصورت صفحه 404 (404 page) یا سایر صفحات مختلف محتوا نمایش می یابد، بنابراین این عمل آسیب بیشتری به عملکرد سایت می زند تا نبود لینک های هم کانون

در این مقاله به صفحه ویرایشگر مقاله جوملا یک فیلد جدید اضافه کرده و از محتوای فیلد به عنوان خروجی یک لینک کانونی (canonical link) در هد صفحه در نمای مقاله استفاده می کنیم.

گاهی اوقات لینک های هم کانون که جوملا به صورت خودکار اضافه می کند، بخاطر بد عمل کردن حذف می شوند، بنابراین در این مقاله راه حل بدیلی برای این مشکل معرفی می شود که لینک ها را هم کانون می کند.

توجه: در طی انجام این رویه اگر URL صفحه خود را تغییر دهید، لازم است که فیلد هم کانون اضافه شده را به روزرسانی کنید تا با URL مقاله یکسان باشد. در غیر اینصورت صفحه 404 (404 page) یا سایر صفحات مختلف محتوا نمایش می یابد، بنابراین این عمل آسیب بیشتری به عملکرد سایت می زند تا نبود لینک های هم کانون.

در نسخه 3.7 جوملا امکان اضافه کردن فیلدهای سفارشی (custom fields) به وبسایت تعبیه شده است، بنابراین می توان در ادمین جوملا فیلد را اضافه کرده و داده ها را بدون ایجاد پلاگین می توان ذخیره کرد. کار را با ایجاد یک لینک سفارشی شروع می کنیم.

در فیلدهای سفارشی دو نوع فیلد داریم یکی Fields و دیگری Field Groups . هر دو را می توان در منوی محتوا و در نوار بالای صفحه یافت.

راهنمای استفاده از فیلد سفارشی (Custom Fields) در جوملا – اضافه کردن URL کانونیکال - برای آموزش این مقاله با گروه فیلد (Field Groups) شروع کرده و یک گروه فیلد جدید به نام SEO می سازیم. تنها فیلدی که اینجا لازم است، فیلد عنوان می باشد. این موجب خلق یک برگه جدید در بالای ویرایشگر مقاله جوملا می شود

برای آموزش این مقاله با گروه فیلد (Field Groups) شروع کرده و یک گروه فیلد جدید به نام SEO می سازیم. تنها فیلدی که اینجا لازم است، فیلد عنوان می باشد. این موجب خلق یک برگه جدید در بالای ویرایشگر مقاله جوملا می شود.

راهنمای استفاده از فیلد سفارشی (Custom Fields) در جوملا – اضافه کردن URL کانونیکال - در نسخه 3.7 جوملا امکان اضافه کردن فیلدهای سفارشی (custom fields) به وبسایت تعبیه شده است، بنابراین می توان در ادمین جوملا فیلد را اضافه کرده و داده ها را بدون ایجاد پلاگین می توان ذخیره کرد.

حالا گروه را داریم، بایستی فیلد را به آن اضافه کنیم.

طریقه اضافه کردن فیلد جدید

در صفحه لیست فیلدها، روی دکمه New کلیک کرده و یک فیلد جدید می سازیم.

برگه جنرال

راهنمای استفاده از فیلد سفارشی (Custom Fields) در جوملا – اضافه کردن URL کانونیکال - می توان نوع فیلد را به مقدار پیش فرض یعنی text رها کرد، اما استفاده از URL موجب می شود مقدار تعیین اعتبار قبل از ذخیره شدن محتوای فیلد وجود داشته باشد تا از اشتباهات ساده در حین نوشتن محتوای فیلد اجتناب شود. بعد از تغییر نوع فیلد، چند گزینه دیگر ظاهر می شود که همانند اسکرین شات فوق ست می شوند

من نام این فیلد را Canonical URL گذاشته و شرح آن را با یک تذکر مختصر در مورد اضافه کردن لینک هم کانون به صدر سند پر می کنم.

می توان نوع فیلد را به مقدار پیش فرض یعنی text رها کرد، اما استفاده از URL موجب می شود امکان اعتبارسنجی قبل از ذخیره شدن محتوای فیلد وجود داشته باشد تا از اشتباهات ساده در حین نوشتن محتوای فیلد اجتناب شود. بعد از تغییر نوع فیلد، چند گزینه دیگر ظاهر می شود که همانند اسکرین شات فوق ست می شوند.

در این آموزش برچسب (label) فیلد با نام آن یکسان است، اما می توانید به هر نامی که دوست دارید ست کنید.

مقدار Required را می توان به no ست کرد، تا در مواقع لزوم بتوان آن را خالی رها کرد و فیلد خالی را ذخیره کرد. مثلا زمان نوشتن پیش نویس مقاله ممکن است هنوز در مورد متن URL تصمیم نگرفته باشیم. اگر این مقدار به Yes ست شود، بایستی برای درفت مقاله نیز URL تخصیص دهیم.

مقدار Default value را خالی رها می کنیم، زیرا نمی خواهیم در صورت خالی ماندن فیلد چیزی ذخیره شود. در قالب لینک (Schemes) مقدار 'http' و 'https' را انتخاب می کنیم. از آنجایی که این یک اپلیکیشن وب است، صفحات همیشه یکی از این دو حالت خواهند بود.

مقدار relative را به no ست می کنیم، زیرا لینک های هم کانون همیشه بایستی به یک URL کامل وب پیج ست شوند. در سمت راست، گروه فیلد SEO جدیدی که ساختیم را انتخاب کنید و دسته را ست کرده یا رها کنید و یا به دسته مورد نظری که می خواهید فیلد در آن در دسترس باشد، ست کنید.

برگه گزینه ها

راهنمای استفاده از فیلد سفارشی (Custom Fields) در جوملا – اضافه کردن URL کانونیکال - می توان فیلد placeholder را به یک مقدار نمونه ست کرده یا آن را خالی گذاشت. اگر متنی برای placeholder در فیلد قرار دهیم، متن نمونه (معمولا یک نمونه از ورودی فیلد که در اینجا یک نمونه URL است) در مرورگرهایی که از این خاصیت پشتیبانی می کنند، ظاهر خواهد شد. مزیت این ویژگی در این است که کاربر می داند چه نوع محتوایی باید در فیلد وارد کند

می توان فیلد placeholder را به یک مقدار نمونه ست کرده یا آن را خالی گذاشت. اگر متنی برای placeholder در فیلد قرار دهیم، متن نمونه (معمولا یک نمونه از ورودی فیلد که در اینجا یک نمونه URL است) در مرورگرهایی که از این خاصیت پشتیبانی می کنند، ظاهر خواهد شد. مزیت این ویژگی در این است که کاربر می داند چه نوع محتوایی باید در فیلد وارد کند.

مقدار فیلد Show on را به both ست می کنیم، تا بتوان فیلد را هم در ادمین و هم در وبسایت ویرایش کرد. اطمینان حاصل کنید که گزینه Automatic Display را به NO ست کنید. اگر این گزینه به چیز دیگری ست شود، جوملا محتوای فیلد را در داخل مقاله درج خواهد کرد، چیزی که ما نمی خواهیم رخ دهد. ما فقط می خواهیم از فیلد برای ایجاد یک هد لینک (head link) استفاده کنیم.

حالا فیلد ما پیکربندی شده است، آن را ذخیره کرده و نگاهی به مقاله در صفحه ویرایش مقاله جوملا بیاندازید.

راهنمای استفاده از فیلد سفارشی (Custom Fields) در جوملا – اضافه کردن URL کانونیکال - مقدار فیلد Show on را به both ست می کنیم، تا بتوان فیلد را هم در ادمین و هم در وبسایت ویرایش کرد. اطمینان حاصل کنید که گزینه Automatic Display را به NO ست کنید. اگر این گزینه به چیز دیگری ست شود، جوملا محتوای فیلد را در داخل مقاله درج خواهد کرد، چیزی که ما نمی خواهیم رخ دهد. ما فقط می خواهیم از فیلد برای ایجاد یک هد لینک (head link) استفاده کنیم

اگر همه چیز درست انجام شده باشد، یک برگه جدید به نام SEO در ویرایشگر مقاله جوملا ظاهر می شود که فیلد URL جدید ما در آن قرار دارد.

استفاده از فیلد جدید در وبسایت

حالا می توانیم URLهای هم کانون (canonical URLs) خود را ذخیره کرده، می توانیم اطلاعات را در وبسایت و در زمان نمایش وب پیج مشاهده کنیم و می توانیم از آن برای ایجاد لینک خود استفاده کنیم.

اولین کاری که باید انجام دهیم ایجاد یک رونویسی چیدمان مقاله (article layout override) است بطوری که تغییرات ما در زمان به روز رسانی جوملا حذف نشوند و مجبور باشیم دوباره همین فرآیند را تکرار کنیم.

توجه: اطمینان حاصل کنید که قالب از قبل دارای رونویسی نباشد، قبل از اینکه از ناحیه ادمین برای ایجاد رونویسی مقاله استفاده کنیم. اگر از قبل رونویسی داشتید، لازم نیست تکرار کنید و می توانید از همان استفاده کنید و یا یک پیکربندی بدیل ایجاد کنید که با نام متفاوتی ذخیره شود بطوری که تغییرات ایجاد شده در قالب در زمان بروزرسانی قالب یا جوملا از بین نرود.

می توان به طور دستی رونویسی مقاله را انجام داد، اما در منوی Extensions و زیر منوی Templates جوملا امکان ایجاد رونوشت قالب مقاله با کلیک کردن بر روی نام قالب در برگه Create Overrides وجود دارد. برای آموزش جامع در مورد ایجاد رونوشت، مقاله طریقه ایجاد رونوشت در جوملا را بخوانید.

راهنمای استفاده از فیلد سفارشی (Custom Fields) در جوملا – اضافه کردن URL کانونیکال - در منوی Extensions و زیر منوی Templates جوملا امکان ایجاد رونوشت قالب مقاله با کلیک کردن بر روی نام قالب در برگه Create Overrides وجود دارد

طریقه دستی ایجاد رونوشت از قالب های جوملا

برای ایجاد رونوشت (override) دستی، در پوشه تمپلیت ریشه جوملا، دایرکتوری زیر که وجود ندارد را ایجاد کنید:

html/com_content/article/

حال فایل موجود در آدرس زیر را کپی کرده و به پوشه جدیدی که ساختیم منتقل می کنیم

components/com_content/views/article/tmpl/default.php

این فایلی است که می خواهیم برای چک کردن محتوای فیلد استفاده کرده و لینک جدید خود را به آن اضافه کنیم. فایل را در یک ویرایشگر کد متنی یا نوت پد باز کنید. برای اطلاعات بیشتر می توانید مقاله طریقه استفاده و بدست آوردن محتوای فیلد سفارشی را بخوانید.

این راهنما اساسا می گوید که فیلدهای سفارشی به یک متغیر item$ وصل هستند و راه های دیگر رندر مستقیم فیلدها را معرفی می کند. این دقیقا صحت ندارد زیرا item$ در اصل وجود ندارد و اگر بخواهید از آن استفاده کنید با خطا مواجه می شوید. اما همانند سایر اطلاعات موجود در فایل default.php، این آیتم به صورت کد this->$item در دسترس است.

اگر کد $this-gt;$item را دامپ کنیم، می توانیم فیلد را ببینیم حتی اگر خالی باشد:

 ["jcfields"]=>
  array(1) {
    [1]=>
    object(stdClass)#457 (31) {
      ["id"]=>
      string(1) "1"
      ["title"]=>
      string(13) "Canonical URL"
      ["name"]=>
      string(13) "canonical-url"

من در اینجا کل محتوای را درج نمی کنم، اما اگر می خواهید کل محتوای موجود را ببینید، می توانید خط زیر را به فایل اضافه کرده و سپس صفحه را بارگذاری کنید تا محتوای آن را ببینید:

var_dump(this->$item); 

از آنجایی که ما فقط می خواهیم مقدار را چک کنیم، می توانیم بخشی از سند که در مورد استفاده از رندر هلپرها است را نادیده بگیریم و فقط محتوای فیلد را مستقیما چک کنیم.

از آنجایی که jcfields حاوی آرایه کلید بندی شده ای (keyed array) از اشیاء است، ساده ترین راه برای بدست آوردن محتوای فیلد این است که از یک حلقه استفاده کرده و بین فیلدها بچرخیم تا فیلد مورد نظرمان را پیدا کنیم.

کد زیر این حلقه بوده و تمامی فیلدها را بررسی می کند تا زمانی که فیلدی به نام Canonical URL را پیدا کند. اگر فیلد را پیدا کند مقدار آن فیلد را در جایی که ما از طریق قرار دادن کد تعیین می کنیم در رونوشت مقاله درج (echo) می کند. پس از اینکه فیلد را پیدا کردیم، دستور ادامه را اضافه می کنیم تا حلقه را ختم کند و مابقی فیلدهای موجود در آرایه را نادیده بگیرد.

foreach ($this->item->jcfields as $field) {
	if ($field->title === 'Canonical URL') {
		echo $field->rawvalue;
		// Break out of the loop when we have what we need
		continue;
	}
};
راهنمای استفاده از فیلد سفارشی (Custom Fields) در جوملا – اضافه کردن URL کانونیکال - از آنجایی که jcfields حاوی آرایه کلید بندی شده ای (keyed array) از اشیاء است، ساده ترین راه برای بدست آوردن محتوای فیلد این است که از یک حلقه استفاده کرده و بین فیلدها بچرخیم تا فیلد مورد نظرمان را پیدا کنیم

حالا می توانیم محتوای فیلد را بدست آوریم و بررسی کنیم که آیا رشته محتوای فیلد خالی است یا محتوایی در آن درج شده است. اگر مقداری داشتیم، سپس لینک را به هد سند اضافه می کنیم.

برای اضافه کردن لینک، ما از کد custom tag جوملا استفاده می کنیم که می توان آن را مستقیما از راهنمای جوملا به آدرس زیر کپی کنیم:

راهنمای جوملا – اضافه کردن تگ سفارشی

این اسنیپت یا قطعه کد را می توان هر جایی در فایل default.php و پس از خط کد زیر درج کنیم:

defined('_JEXEC') or die; 

کد کامل راهنما

قطعه کد کامل این راهنما به صورت زیر خواهد بود:

//Check custom fields for canonical link
foreach ($this->item->jcfields as $field) {
	if ($field->title === 'Canonical URL') {
		//Make sure the field isn't empty
		if ($field->rawvalue !== '') {
			$canonicalLink = '';
			$document = JFactory::getDocument();
			$document->addCustomTag($canonicalLink);
		}
		continue;
	}
};

می توان این کد را با چک کردن شناسه (field$->id === 1) { و تغییر آن به 1 برای همسان شدن با شناسه فیلد جدید تقویت کنیم. بدین شکل مهم نیست که عنوان فیلد در آینده تغییر داده شود، کد هنوز بدون نیاز به ویرایش کار خواهد کرد. خوب این کل قضیه بود و حالا لینک هم کانون هد سند خود را ساخته ایم.

راهنمای استفاده از فیلد سفارشی (Custom Fields) در جوملا – اضافه کردن URL کانونیکال - اگر کاری مثل تغییر پروتکل سایت از http به https انجام دادید یا نام دامنه سایت را تغییر دادید، لازم است که به طور دستی مقدار فیلد را نیز ویرایش کنید، یک کوئری بانک اطلاعاتی اجرا کرده و آنها را تغییر دهید، یا از اسکریپت search and replace استفاده کرده و URLهای سفارشی به پروتکل یا دامنه صحیح ست کنید

چند تذکر

دوباره نکته قبل را تکرار می کنیم. اگر URL صفحه را تغییر دادید، لازم است که محتوای فیلد سفارشی را نیز تغییر دهید تا با عنوان URL منطبق باشد یا سایت ممکن است آسیب دیده و لینک شکسته ایجاد شود.

اگر کاری مثل تغییر پروتکل سایت از http به https انجام دادید یا نام دامنه سایت را تغییر دادید، لازم است که به طور دستی مقدار فیلد را نیز ویرایش کنید، یک کوئری بانک اطلاعاتی اجرا کرده و آنها را تغییر دهید، یا از اسکریپت search and replace استفاده کرده و URLهای سفارشی به پروتکل یا دامنه صحیح ست کنید.

اگر می خواهید کاربران سایت نتوانند این گزینه را تغییر دهند، بایستی از پارامترهای مجوز دسترسی در فیلد پیکربندی استفاد کرده و ویرایش فیلد را برای گروه خاصی مجاز کنید.

بهتر است سایت خود را در وبسایت هایی مثل وبمستر گوگل و بینگ یا سایت های معادل ثبت نام کنید تا در صورت مواجهه موتورهای جستجوگر با لینک های شکسته، به شما اخطار بدهند و متوجه شوید که مشکلی در لینک های هم کانون وجود دارد.

اگر در اجرای این راهنما به مشکل برخورد کردید و سایر سئوالات و پیشنهادات خود را در بخش سئوالات عمومی انجمن پلکسا مطرح نمایید. گروه توسعه وب پلکسا به سئوالات شما پاسخ خواهند داد.