ساخت ارشیو مطالب برای بلاگ

- 2 سال پیش
توسط بهار آپدیت شد
بهار ( 39 تجربه )
2 سال پیش

سلام دوستان
اگربخواهیم ارشیو مطالب بصورت شمسی اینطوری بسازیم . باید چیکار کنیم :

۲۰۱۳ (۲۱)
    - May (۲)
    - April (۳)
    - March (۵)
    - February (۱)
    - January (۱۰)
۲۰۱۲ (۱۰)
    - December (۶)
    - November (۴)
حسام موسوی ( 131319 تجربه )
2 سال پیش

سلام برای میلادی این کار به سادگی انجام میشه اما متاسفانه بخاطر نا هماهنگ بودن ماهای شمسی و میلادی برگردوندن اطلاعات بصورت آرشیو شمسی با استفاده از خود mysql با توابع خودش امکان پذیر نیست
ترفندهای مختلفی توسط ایرانی ها برای این مورد استفاده میشه برای مثال ذخیره کردن زمان بصورت فارسی و بعد دسته بندی کردن با php که این موضوع پردازش نسبتن بالایی رو می طلبه که من پیشنهاد نمیکنم
و روش های دیگه که با ی سرچ کوچیک میتونید بهشون برسید
البته مابقی دوستان اگر نمونه کد داشته باشن و قرار بدن براتون که خیلی عالی میتونه بشه

بهار ( 39 تجربه )
2 سال پیش

ممنون بابت توضیحاتتون
بکمک یکی از دوستان باین کدها رسیدم.
اگر created_at مربوط به هر مقاله، بمیلادی داخل دیتابیس ذخیره بشه و بوسیله morilog موقع نمایش ، شمسی نشون بدیم بنظر راه درستی میاد :

$posts = Article::orderBy('created_at', 'desc')->get()->groupBy(function ($date) {
                    return Carbon::parse($date->created_at)->format('Y-m');
                });

-دستورات بلید :

<ul >
            @foreach ($posts as $date => $post)
                <li ><a href="#">{{ monthName($date).' '.year($date)}}</a>
                    <span>
                 &nbsp;({{count($post)}})&nbsp; </span></li>
            @endforeach
        </ul>

-دستورات مربوط به هلپر فانکشن :

use MorilogJalalijDate;
use MorilogJalalijDateTime;

function year($date)
{
    return jDate::forge($date)->format('%Y');
}

function monthName($date)
{
    return jDate::forge($date)->format('%B');
}

-خروجی :
فروردین 1396 (9)
تیر 1396 (1)
شهریور 1396 (3)
مهر 1396 (5)

yasin ( 25 تجربه )
2 سال پیش

سلام. میشه لطف کنید کوئری که برای نمایش مطالب هر ماه هست رو هم قرار بدید.(من تازه کارم زیاد بلد نیستم).
مثلا رو هر لینک کلیک شد پست های مربوط به اون ماه رو نمایش بده

بهار ( 39 تجربه )
2 سال پیش

برای نمایش مطالب هر ماه ، من این کد رو نوشتم ...
دوستان اگه کد بهتری سراغ دارن ممنون میشم به اشتراک بزارند ...

    public function getArticlesWithDate($date){

        $year = Carbon::parse($date)->format('Y');
        $month = Carbon::parse($date)->format('m');

        $articles = Article::whereYear('created_at', '=', $year)
              ->whereMonth('created_at', '=', $month )
              ->paginate(10);

        return view('Home.articles' , compact('articles'));
    }

قسمت بلید :

        <ul class="doing-list">
            @foreach ($posts as $date => $post)
                <li ><a href="/articles/archive/{{ $date }}">{{ monthName($date).' '.year($date)}}</a>
                    <span>
                 &nbsp;({{count($post)}})&nbsp; </span></li>
            @endforeach
        </ul>

حالا من یه سوالی دارم . ببینید الان اگه روی لینکهای زیر کلیک کنم :

آرشیو

مهر 1396 (1)  
شهریور 1396 (3)

ادرس url م به این شکل تولید میشه :

http://localhost:8000/articles/archive/2017-09

من میخام مثلا به این شکل باشه .(شمسی نه میلادی)

http://localhost:8000/articles/archive/1396-06

یا مثلا به شکل :

http://localhost:8000/articles/archive/1396-شهریور

کسی راهکاری داره؟؟
ممنون

برای ارسال پاسخ باید وارد سایت شوید