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

4 سال پیش توسط بهار مطرح شد
آفلاین
user-avatar
بهار ( 39 تجربه )
4 سال پیش

لینک کوتاه اشتراک گذاری

0

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

۲۰۱۳ (۲۱)
    - May (۲)
    - April (۳)
    - March (۵)
    - February (۱)
    - January (۱۰)
۲۰۱۲ (۱۰)
    - December (۶)
    - November (۴)
آنلاین
user-avatar
حسام موسوی ( 467837 تجربه )
4 سال پیش
تخصص : طراح و برنامه نویس

لینک کوتاه اشتراک گذاری

0

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

آفلاین
user-avatar
بهار ( 39 تجربه )
4 سال پیش

لینک کوتاه اشتراک گذاری

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)

آفلاین
user-avatar
yasin ( 25 تجربه )
4 سال پیش

لینک کوتاه اشتراک گذاری

0

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

آفلاین
user-avatar
بهار ( 39 تجربه )
4 سال پیش

لینک کوتاه اشتراک گذاری

0

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

    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-شهریور

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

برای ارسال پاسخ لازم است، ابتدا وارد سایت شوید.