@hesammousavi @ali.bayat @TimeRunner2359 @hosseinshirinegad98 و سایر دوستان ..
سلام دوستان خسته نباشید .
من برای اسلاگ مقالات خودم ، از پکیجی که آقای موسوی معرفی کردند استفاده کردم .
یعنی این پکیج :
"cviebrock/eloquent-sluggable"
و برای اینکه از زبان فارسی پشتیبانی کنه ، الگویی که آقای موسوی داده بودند رو داخل فایل کانفیگ گذاشتم. و منبع تولید اسلاگ هم title قرار دادم.
الان وقتی اسلاگ رو میسازه ، اصلا بین کلمات خط تیره ( - ) قرار نمیده و فاصله بین اون ها رو تغییر نمیده مثلا:
عنوان ( وبسایت راکت ) رو به این صورت ذخیره میکنه:
وبسایت راکت
در صورتی که باید اینجور قرار بگیره :
وبسایت-راکت
و همین باعث میشه در url بجای فاصله ها درصد ( % ) قرار بگیره.
ممنون میشم دوستان راهنمایی کنن
🤚🤚🤚
سلام روز بخیر
متاسفانه من تابحال از این پکیج استفاده نکردم اما مستنداتشو که دیدم خوب و آسون توضیح داده بیشتر مطالعش کن. ضمن اینکه آقای meisam moradian هم اشاره ای به سوال شما کردن انشالله که رفع مشکل بشه. پیروز باشید
سلام
اگه این موارد رو تست کردین و نشد یه بار سرورتون رو ریستارت کنید و کش و کانفیگتونم پاک کنید احتمالا درست بشه
@coaradsupp @hosseinshirinegad98
سلام خیلی ممنون ، این موارد رو انجام دادم ولی درست نشد.!
سلام، من از این تابع استفاده میکنم و درست کار میکنه
function str_to_slug(string $string, string $separator = '-')
{
$string = fa_to_en(trim(mb_strtolower($string)));
$string = preg_replace('![' . preg_quote($separator === '-' ? '_' : '-') . ']+!u', $separator, $string);
return preg_replace(
'/\\' . $separator . '{2,}/',
$separator,
preg_replace('/[^A-Za-z0-9\x{0620}-\x{064A}\x{0698}\x{067E}\x{0686}\x{06AF}\x{06CC}\x{06A9}]/ui', $separator, $string)
);
}
تست کنید
چون این پکیج کار کردن باش سخت نیس اگه همه چی درست باشه خطا نداره
من بجای slug از id استفاده کردم اینطوری سرعت اجرا بالاتره.
دوتا لینک بهتون میدم آموزش ساخته اسلاگ هست دو ویدیو به زبان فارسی.
برای دیدن ویدیوها از تحریم شکن باید استفاده کنی.
https://parsclick.net/course/PL3Y-E4YSE4wYWg9eXKMT9y0bJKbhOWT0B?nextPage=CDIQAA&v=y-Yo9P__au0
https://parsclick.net/course/PL3Y-E4YSE4wYWg9eXKMT9y0bJKbhOWT0B?nextPage=CDIQAA&v=9y3CXAsB8wo
@hosseinshirinegad98
فکر میکنم بهترین روش همین str_repalce هست
چون پکیج هم کار خاصی انجام نمیده دیگه؟
پکیجو تستش کردم اما رو متون فارسی اصلا جواب نمیده و متن فارسی رو به انگلیسی درهم برهم اسلاگ میکنه. از دوتا لینکی که بهتون دادم استفاده کنید
بنده مدت زیادی هست از همین پکیج cviebrock/eloquent-sluggable برای متن های فارسی و انگلیسی استفاده میکنم و بدون کوچکترین مشکلی کار میکنه.
فقط توجه داشته باشید که همون طوری که در قسمت Installation پکیج (اینجا) هم تاکید کرده باید نسخه پکیجی که استفاده میکنید با نسخه لاراولتون سازگار باشه. در غیر اینصورت با نتایج عجیب و غریبی مثل همین مشکلی که دارید مواجه میشید.
در فایل تنظیمات یعنی config/sluggable.php هم دو تا بخش زیر رو جایگزین هر چیزی که از قبل دارید بکنید و مجدد تست کنید:
'method' => function($string, $separator = '-') {
$_transliteration = ["/ö|œ/" => "e",
"/ü/" => "e",
"/Ä/" => "e",
"/Ü/" => "e",
"/Ö/" => "e",
"/À|Á|Â|Ã|Å|Ǻ|Ā|Ă|Ą|Ǎ/" => "",
"/à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª/" => "",
"/Ç|Ć|Ĉ|Ċ|Č/" => "",
"/ç|ć|ĉ|ċ|č/" => "",
"/Ð|Ď|Đ/" => "",
"/ð|ď|đ/" => "",
"/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě/" => "",
"/è|é|ê|ë|ē|ĕ|ė|ę|ě/" => "",
"/Ĝ|Ğ|Ġ|Ģ/" => "",
"/ĝ|ğ|ġ|ģ/" => "",
"/Ĥ|Ħ/" => "",
"/ĥ|ħ/" => "",
"/Ì|Í|Î|Ï|Ĩ|Ī| Ĭ|Ǐ|Į|İ/" => "",
"/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı/" => "",
"/Ĵ/" => "",
"/ĵ/" => "",
"/Ķ/" => "",
"/ķ/" => "",
"/Ĺ|Ļ|Ľ|Ŀ|Ł/" => "",
"/ĺ|ļ|ľ|ŀ|ł/" => "",
"/Ñ|Ń|Ņ|Ň/" => "",
"/ñ|ń|ņ|ň|ʼn/" => "",
"/Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ/" => "",
"/ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º/" => "",
"/Ŕ|Ŗ|Ř/" => "",
"/ŕ|ŗ|ř/" => "",
"/Ś|Ŝ|Ş|Ș|Š/" => "",
"/ś|ŝ|ş|ș|š|ſ/" => "",
"/Ţ|Ț|Ť|Ŧ/" => "",
"/ţ|ț|ť|ŧ/" => "",
"/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ/" => "",
"/ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ/" => "",
"/Ý|Ÿ|Ŷ/" => "",
"/ý|ÿ|ŷ/" => "",
"/Ŵ/" => "",
"/ŵ/" => "",
"/Ź|Ż|Ž/" => "",
"/ź|ż|ž/" => "",
"/Æ|Ǽ/" => "E",
"/ß/" => "s",
"/IJ/" => "J",
"/ij/" => "j",
"/Œ/" => "E",
"/ƒ/" => ""];
$quotedReplacement = preg_quote($separator, '/');
$merge = [
'/[^\s\p{Zs}\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]/mu' => ' ',
'/[\s\p{Zs}]+/mu' => $separator,
sprintf('/^[%s]+|[%s]+$/', $quotedReplacement, $quotedReplacement) => '',
];
$map = $_transliteration + $merge;
unset($_transliteration);
return preg_replace(array_keys($map), array_values($map), $string);
},
و این یکی:
'separator' => '-',
دوستانی که از لاراول ۸ به بالا استفاده میکنند و هنگام استفاده از فارسی ساز slug در فایل config/slugable.php به مشکل میخورند
یعنی بعد اظافه کردن هنگام استفاده از دستور php artisan optimize با ارور رو به رو میشن میتونن به روش زیر عمل کنن
۱- کلاسی با اسم دلخواه به عنوان مثال :HelperClass بسازید
۲- متد خودتون رو بصورت public static توش قرار بدین : به صورت زیر
class HelperClass
{
public static function sluggableCustomSlugMethod($string, $separator = '-')
{
$_transliteration = array(
'/ä|æ|ǽ/' => 'ae',
'/ö|œ/' => 'oe',
'/ü/' => 'ue',
'/Ä/' => 'Ae',
'/Ü/' => 'Ue',
'/Ö/' => 'Oe',
'/À|Á|Â|Ã|Å|Ǻ|Ā|Ă|Ą|Ǎ/' => 'A',
'/à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª/' => 'a',
'/Ç|Ć|Ĉ|Ċ|Č/' => 'C',
'/ç|ć|ĉ|ċ|č/' => 'c',
'/Ð|Ď|Đ/' => 'D',
'/ð|ď|đ/' => 'd',
'/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě/' => 'E',
'/è|é|ê|ë|ē|ĕ|ė|ę|ě/' => 'e',
'/Ĝ|Ğ|Ġ|Ģ/' => 'G',
'/ĝ|ğ|ġ|ģ/' => 'g',
'/Ĥ|Ħ/' => 'H',
'/ĥ|ħ/' => 'h',
'/Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ/' => 'I',
'/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı/' => 'i',
'/Ĵ/' => 'J',
'/ĵ/' => 'j',
'/Ķ/' => 'K',
'/ķ/' => 'k',
'/Ĺ|Ļ|Ľ|Ŀ|Ł/' => 'L',
'/ĺ|ļ|ľ|ŀ|ł/' => 'l',
'/Ñ|Ń|Ņ|Ň/' => 'N',
'/ñ|ń|ņ|ň|ʼn/' => 'n',
'/Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ/' => 'O',
'/ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º/' => 'o',
'/Ŕ|Ŗ|Ř/' => 'R',
'/ŕ|ŗ|ř/' => 'r',
'/Ś|Ŝ|Ş|Ș|Š/' => 'S',
'/ś|ŝ|ş|ș|š|ſ/' => 's',
'/Ţ|Ț|Ť|Ŧ/' => 'T',
'/ţ|ț|ť|ŧ/' => 't',
'/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ/' => 'U',
'/ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ/' => 'u',
'/Ý|Ÿ|Ŷ/' => 'Y',
'/ý|ÿ|ŷ/' => 'y',
'/Ŵ/' => 'W',
'/ŵ/' => 'w',
'/Ź|Ż|Ž/' => 'Z',
'/ź|ż|ž/' => 'z',
'/Æ|Ǽ/' => 'AE',
'/ß/' => 'ss',
'/IJ/' => 'IJ',
'/ij/' => 'ij',
'/Œ/' => 'OE',
'/ƒ/' => 'f'
);
$quotedReplacement = preg_quote($separator, '/');
$merge = array(
'/[^\s\p{Zs}\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]/mu' => ' ',
'/[\s\p{Zs}]+/mu' => $separator,
sprintf('/^[%s]+|[%s]+$/', $quotedReplacement, $quotedReplacement) => '',
);
$map = $_transliteration + $merge;
unset($_transliteration);
return preg_replace(array_keys($map), array_values($map), $string);
}
}
سپس در فایل config/slugable.php این رو جایگزین method کنید
'method' => [ HelperClass::class, 'sluggableCustomSlugMethod' ],
با این کار مشکل کاملا حل میشه
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟