پس وقتی اطلاعات را از دیتابیس واکشی می کنیم و می خواهیم مطالب را به کاربر نشان دهیم با یک تابع در php این کار را می کنیم. البته پیشنهاد ما این است که در هنگام ذخیره کردن مطلب در دیتابیس این کار را انجام دهید و هزینه (درصد استفاده از cpu) را کاهش دهید چرا ؟ با فرض اینکه سایت شما 1000 کاربر فعال دارد و هرکدام هر مقاله ای از سایت که این تابع را برای nofollow کردن لینک ها انجام می دهد را اجرا کند خوب چه سربار سنگینی به سرور وارد می شود!!!
این کار را شما می توانید به صورت سه روش ذیل انجام دهید:
- جستجو و replace کردن در خود دیتابیس با اتفاق افتادن یک رویداد با استفاده از پروسیجر
- replace کردن قبل از ثبت با استفاده از php
- replace کردن در هنگام نمایش با php
اگر نیاز به طراحی سایت با php دارید بهتر است بدانید این زبان تقریبا 70 درصد وب را در اختیار دارد
ما فعلا nofollow کردن با php هنگام نمایش مطلب رو در این مطلب توضیح خواهیم داد. ما پیش فرض فکر می کنیم که شما یک کلاس دارید که برای نمایش پست ها مورد استفاده قرار میگیرد پس توابع ذیل رو بهش اضافه می کنیم (البته می توانید از توابع static استفاده کنید که در تمام قسمت ها راحت بتونید استفاده کنید)، یکی از فعالیت مهم در سئو نوفالو کردن لینک های خارجی است.
مراحل کار در کلا:
- در کلاس مورد نظرمون تابع getRootDomain رو اضافه می کنیم این تابع برای تشخیص لینک های داخل مطلب هستش که آیا لینک جزو لینک های داخلی خود سایتمون هست یا یک لینک خارجی؟
public function getRootDomain($url)
{
if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
$url = "http://" . $url;
}
return implode('.', array_slice(explode('.', parse_url($url, PHP_URL_HOST)), -2));
}
- باز در کلاس مورد نظر تابع اصلی رو درست می کنیم که متن رو replace کنیم
public function Nofollow($text)
{
$domains = array('jobteam.ir');
$dom= new \DOMDocument();
$dom->loadHTML('<?xml encoding="utf-8" ?>' .$text);
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
foreach ($dom->getElementsByTagName('a') as $link) {
$href = $link->getAttribute('href');
if (!in_array(self::getRootDomain($href), $domains)) {
$link->setAttribute('rel', 'nofollow');
}
}
return $dom->saveHTML();
}
آموزش شی گرایی در php به زبان ساده در جاب تیم برای شما قابل مطالعه است
کلاس DOMDocument که داخل تایع nofollow هستش پیش فرض در php موجود می باشد و نیازی به نصب ندارد. بعد از اتمام کار در نمایش پست متنی که می خواهید لینک های خارجی آن به صورت nofollow شود را قبل چاپ به تابع nofollow پاس دهید. نحوه استفاده به صورت ذیل
echo Nofollow($query->text)
اگر در مورد لینک نوفالو اطلاعاتی ندارید بهتر است تفاوت لینک فالو (follow) و نوفالو (nofollow) و تاثیر آن در سئو را مطالعه کنید