🏠 صفحه اصلی 👈 مقالات 👈 ایجاد اسلاگ فارسی و استاندارد در لاراول

ایجاد اسلاگ فارسی و استاندارد در لاراول

ایجاد اسلاگ فارسی و استاندارد در لاراول

تو این مقاله می‌خوایم ببینیم چطور می‌تونیم URLهای SEO-Friendly و امن ایجاد کنیم.

برای اینکه بهتر متوجه منظورم بشین، به این دو مثال URL نگاه کنین:

https://www.faridaghili.ir/articles/142

https://www.faridaghili.ir/articles/ایجاد-اسلاگ-فارسی-در-لاراول

تو URL دوم از Slug به جای ID استفاده شده که چند مزیت داره. اولین نکته مثبت اینه که این لینک به لحاظ SEO وضعیت بهتری داره و برای موتورهای جستجو مناسب‌تره چون حاوی کلمات کلیدی موجود در اون صفحه هست، ضمن اینکه خوانایی بیشتری هم داره و با نگاه کردن به لینک می‌شه در مورد محتواش حدس زد.

مزیت بعدی اینه که در حالت دوم کسی نمی‌تونه با کم و زیاد کردن عدد ID در انتهای لینک اقدام به جمع‌آوری اطلاعات کلیه مطالب سایت کنه و به عبارتی در مقابل Web Scraping ایمن‌تره.

حالا که برخی مزایای استفاده از Slug در URLها رو مرور کردیم، اجازه بدین یه روش ساده و سریع برای رسیدن به این هدف بهتون معرفی کنم.

ابتدا پکیج pishran/laravel-persian-slug رو با استفاده از دستور زیر به پروژه‌تون اضافه کنین:

composer require pishran/laravel-persian-slug

حالا کافیه Trait این پکیج رو به Modelهای مورد نظرتون اضافه کنین، برای مثال مدل Article رو در نظر بگیرین:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Pishran\LaravelPersianSlug\HasPersianSlug;

class Article extends Model
{
    use HasPersianSlug;
}

در ادامه باید مشخص کنین که می‌خواین از کدوم Column برای تولید Slug استفاده بشه و اینکه می‌خواین Slug تولید شده تو کدوم Column ذخیره بشه. با فرض اینکه جدول مربوط به مدل Article دارای ستون‌های title و slug هست، می‌تونیم به شکل زیر عمل کنیم:

public function getSlugOptions(): SlugOptions
{
    return SlugOptions::create()
        ->generateSlugsFrom('title')
        ->saveSlugsTo('slug');
}

نهایتا باید همچین کلاسی داشته باشین:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Pishran\LaravelPersianSlug\HasPersianSlug;
use Spatie\Sluggable\SlugOptions;

class Article extends Model
{
    use HasPersianSlug;
    
    public function getSlugOptions(): SlugOptions
    {
        return SlugOptions::create()
            ->generateSlugsFrom('title')
            ->saveSlugsTo('slug');
    }
}

در این حالت هر زمان که یک Article ایجاد یا ویرایش می‌کنین، بصورت خودکار و با لحاظ کردن کاراکترهای مجاز، یک عبارت مناسب از Title تولید و در Slug ذخیره می‌شه که می‌تونین با استفاده از Route Model Binding لاراول در Routeهای پروژه ازش استفاده کنین.

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

امیدوارم این مقاله براتون مفید باشه و باعث بشه وبسایت‌های امن‌تر و بهینه‌تری رو توسعه بدین.

اشتراک گذاری:

❓ نظر خود را بنویسید

📒 نظرات

🥇 اولین نظر را شما ارسال کنید

کلیه حقوق این سایت متعلق به طراحی سایت فرید عقیلی می‌باشد.

طراحی سایت 🌐 فرید عقیلی