ایجاد لینک در برنامه نویسی ماژول دروپال با تابع l

ایجاد لینک در برنامه نویسی ماژول دروپال با تابع l

وقتی برای دروپال ماژولی می نویسیم، برای تولید محتوای صفحه روش های مختلف و امکانات متعددی برای انجام کار داریم. با استفاده از API دروپال می توانیم به آسانی محتوای صفحه را طوری بسازیم که نیازی به نوشتن کد های HTML در کدهای PHP ماژول نداشته باشیم. صرفاً با فراخوانی تعدادی تابع که هسته دروپال آنها را ارائه می کند، و ارسال پارامتر های لازم به آنها، خروجی HTML مورد نظر را بر می گردانند. حتی این امکان وجود دارد که ماژول ما نیز شخصاً کد HTML ای را برنگرداند و اطلاعات تولید محتوای صفحه را فقط به دروپال بدهد و خود دروپال تولید کد HTML از آن را برعهده بگیرد.

تولید محتوای صفحه با استفاده از API دروپال ارجح از تولید محتوای صفحه به صورت HTML توسط خود ماژول است. ضمن اینکه از آمیخته شدن کد های HTML در PHP در فضای ماژول، جلوگیری می شود، دروپال با توجه به تنظیمات انجام شده در سایت کد HTML را تولید می کند که این مسئله بسیار مهمی است.

تابع l برای تولید لینک در دروپال

در این مطلب به یکی از توابع پر استفاده در برنامه نویسی ماژول های دروپال می پردازیم. تابع l (حرف اِل کوچک) برای تولید کد HTML یک لینک به کار می رود. کد HTML لینک یک تگ a است مثل این:

<a href="http://drupalika.org">دروپالیکا</a>

که نمایش آن هم به صورت زیر است:

دروپالیکا

تعریف تابع l در دروپال به صورت زیر است:

l($text, $path, array $options = array())

ورودی اول این تابع یک متن است. این متن لینک است. این متن بهتر است یک متن ترجمه شده باشد یعنی این ترجمه ای باشد که از جای دیگری آمده است یا با تابع t ترجمه شده باشد. به هر حال این متنی است که در لینک نمایش داده می شود.

ورودی دوم این تابع، مسیر داخلی سایت دروپالی یا یک آدرس خارجی (URL) است. آدرس داخلی می تواند چیزی شبیه contact یا node/1 باشد. ولی یک آدرس خارجی کامل با http شروع می شود.

ورودی سوم اختیاری است و شامل تنظیمات و انتخاب های مختلف برای لینک تولید شده است. این یک آرایه است که می تواند شامل ایندکس های زیر باشد:

  • attributes: مقدار این ایندکس خودش یک آرایه است و مشخص می کند چه attributeهایی باید به تگ a تولید شده اضافه شود. مثلا اگر بخواهیم مشخصه های class یا title را به لینک اضافه کنیم باید آنها را از طریق این آرایه به تابع l منتقل کنیم.
  • html: مقدار این خانه به صورت پیش فرض FALSE است. این مشخص می کند که آیا متن لینک حاوی کد HTML است یا خیر. مثلا اگر تگ لینک حاوی یک تصویر یعنی تگ img باشد، برای اینکه درست نمایش داده شود باید حتما این خانه برابر TRUE قرار بگیرد.
  • language: آبجکت حاوی اطلاعات زبان.
  • با توجه به اینکه تابع l از تابع دیگری به نام url در دروپال برای تولید آدرس استفاده می کند، بنابراین تنظیمات دیگر تابع url نیز در اینجا کاربرد دارند.

خروجی تابع l، یک رشته حاوی تگ a است. یک نمونه از کاربرد این تابع را در مثال زیر مشاهده می کنید:

function drupalika_module_test_link() {
	$text = t('Contact');
	$path = 'contact';
	
	$link =  l($text, $path);
	
	return $link;
}

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

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

تولید لینک در صفحه دروپال با تابع l

مزایای تولید لینک در دروپال با تابع l

قبلا بیان کردیم که استفاده از توابع موجود در API دروپال نه تنها مزایای ویژه ای دارد بلکه برای کارکرد درست سایت نیز لازم است. در مثال قبل دیده شد که فقط با برنامه نویسی PHP و کاربرد توابع دروپال کد HTML صفحه تولید شده است و ما از نوشتن کد های HTML در فایل کد ماژول خود اجتناب کرده ایم. به این صورت کد تمیز و خوانایی داریم. جدایی کد های HTML و PHP نیز از یکدیگر به خوبی رعایت شده است. این یک نکته برای خوبی استفاده از تابع l است.

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

دلیل دیگر برای ضرورت استفاده از تابع l، وجود مسیر های مستعار یا URL Alias در دروپال است. در دروپال برای هر مسیر داخلی می توانید، مسیر های مجازی دیگری درست کنید. مثلا به جای آدرس اصلی یک محتوا که به صورت node/4 است می توان مسیر مستعار book/drupal/develop را ثبت کرد و لینک را با استفاده از این مسیر مستعار ساخت. وقتی که از تابع l استفاده می کنیم، این تضمین وجود دارد که alias صحیح برای یک صفحه داخلی در تولید لینک استفاده شود.

نمونه های دیگری از کاربرد تابع l در دروپال

در نمونه کد زیر، برای تگ لینک یک کلاس هم در نظر گرفته ایم:

function drupalika_module_test_link() {
	$text = t('Contact');
	$path = 'contact';
	$options = array(
		'attributes' => array(
			'class' => 'contact-link'
		),
	);
	
	$link =  l($text, $path, $options);
	
	return $link;
}

و کد تولید شده برای این سایت به صورت زیر است:

<a class="contact-link" href="/en/contact">Contact</a>

همانطور که مشاهده می کنید، کلاس مورد نظر به تگ a اضافه شده است. در مسیر داخلی که در آدرس لینک قرار گرفته هم می بینید که پیشوند زبان به صورت اتوماتیک قرار گرفته است.

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

function drupalika_module_test_link() {
	$text = t('Read more ...');
	$path = 'node/2';
	$options = array(
		'attributes' => array(
			'id' => 'node-link-2',
			'title' => t('Click to read content'),
		),
	);
	
	$link =  l($text, $path, $options);
	
	return $link;
}

کد HTML تولید شده لینک برای کد بالا در یک سایت نمونه به صورت زیر است:

<a title="Click to read content" id="node-link-2" href="/fa/content/text">بیشتر بخوانید ...</a>

می بینید که چون صفحه ای که لینک برای آن تولید شده است، زبان فارسی است، کد fa در آدرس به کار رفته است و همین طور رشته ها ترجمه شده اند. به دلیل اینکه مسیر داخلی node/2 دارای یک alias به صورت content/text است، از alias در تولید آدرس لینک استفاده شده است.

ارسال نظر