طراحی و پیاده سازی پروژه وبلاگ (CMS) با معماری MVC

دسته بندی: آموزش
زمان مطالعه: ۴ دقیقه
۳۰ آبان ۱۳۹۳

در این جلسه پروژه آخر این دوره رو که یک وبلاگ یا CMS هست با هم پیاده سازی می کنیم . همونطور که شما دوستان عزیز پیشنهاد داده بودید، پیاده سازی این پروژه به صورت شی گرا و بر پایه مدل MVC هست . با توجه به مزیت هایی که در مورد معماری MVC گفته بودیم لازم بود که این پروژه رو بر اساس اون پایه ریزی کنیم .

جایی که می خواید به صورت شی گرا برنامه ی سمت وبتون رو بنویسید خیلی بهتره که از این معماری استفاده کنید تا توسعه برنامه هاتون راحتتر و نگهداری و پیاده سازی اون ساده تر باشه .

برای اینکه معماری MVC رو بهتر متوجه بشید من از یک فریمورک ساده به نام PIP استفاده کردم که برای امور آموزشی و این که شما متوجه ساختار یک فریمورک MVC بشید بسیار مناسب هست . در طول این پروژه اول به نحوه پیاده سازی این فریمورک میپردازیم و بعد از اون به سراغ توسعه وبلاگمون میریم .

:: مهمترین قابلیت هایی که وبلاگ پیاده سازی شده در این پروژه داره عبارتند از :

قابلیت ها و امکانات این پروژه (وبلاگ - cms) :

  • وجود یک کاربر ادمین برای مدیریت محتوای وبلاگ
  • قابلیت ورود و خروج کاربر ادمین به وبلاگ
  • وجود یک پنل مدیریت که فقط کاربر ادمین می تواند به آن دسترسی داشته باشد
  • کارهایی که در پنل مدیریت می توان انجام داد عبارتند از :
  • ارسال یک مطلب جدید در دسته بندی خاص
  • مدیریت مطالب شامل حذف و ویرایش مطالب ارسال شده
  • مدیریت دسته بندی های وبلاگ
  • مدیریت نظرات مطرح شده برای مطالب
  • قابلیت حذف، تائید کردن و عدم تائید دیدگاه های ارسالی
  • قابلیت افزودن منوی جدید از طریق پنل مدیریت و نمایش آن در سایدبار وبلاگ
  • قابلیت حذف و ویرایش منوهای سایت
  • قابلیت مشخص کردن ترتیب نمایش منو ها در سایدبار
  • قابلیت ویرایش و حذف منوها از طریق پنل مدیریت
  • وجود صفحه ی تنظیمات وبلاگ در پنل مدیریت
  • قابلیت تغیر و آپدیت کردن تنظیمات وبلاگ
  • قابلیت هایی که در نمای ظاهری وبلاگ (CMS) وجود دارد :
  • نمایش آخرین مطالب ارسالی در صفحه نخست وبلاگ
  • قابلیت نمایش مطالب یک دسته بندی خاص
  • قابلیت جستجو در مطالب وبلاگ با تطبیق دقیق عبارت جستجو شده
  • قابلیت صفحه بندی مطالب وبلاگ (بخشی از آن به عنوان تمرین به شما محول شده)
  • قابلیت نمایش منوهای جستجو و دسته بندی ها در سایدبار سایت
  • قابلیت نمایش منوی های دلخواه ایجاد شده در پنل مدیریت بر اساس ترتیب آنها
  • قابلیت نمایش مطلب در یک صفحه ی خاص و جداگانه (صفحه مطلب)
  • قابلیت ارسال نظر و دیدگاه برای مطالب وبلاگ
  • قابلیت لایک کردن نظرات بازدیدکننده ها (دقیقا شبیه همین چیزی که در بخش نظرات سون لرن داریم)
  • هر کاربر فقط 1 بار می تواند به یک نظر رای(لایک) دهد .
  • محدودیتی برای مدیر وبلاگ در لایک کردن نظرات وجود ندارد و به هر تعداد می تواند لایک کند
  • امکان فعال کردن و غیرفعال کردن قابلیت لایک نظرات از طریق پنل مدیریت
  • و ...

اهداف :

مهمترین هدفی که بنده در انتخاب و پیاده سازی این پروژه برای شما مدنظرم بود، آشنایی با ساختار و نحوه پیاده سازی معماری MVC و همچنین نحوه استفاده و کار با فریمورک های MVC بوده . در کنار اون پیاده سازی بعضی قابلیت ها مثل ایجاد صفحه تنظیمات برای پروژه هاتون، ایجاد قابلیت لایک دهی به محتوا، نحوه ویرایش محتوا و مسائلی از این قبیل بوده که با مشاهده ی ویدیوی این جلسه ان شاءالله به این اهداف خواهیم رسید :

:: توجه

این مطلب یک جلسه از آموزش PHP می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در آموزش PHP

نویسنده
بیش از 15 سال هست که برنامه نویسی می کنم و از بین همه زبون هایی که کار کردم جاوا، اسمبلی و php رو دوست دارم. دانشجوی دکترای نرم افزارم و توی دانشگاه روی پردازش بیگ دیتا و پردازش موازی کار کردم و عاشق چالش از هر نوعیش هستم! سون لرن مثل بچه منه که 12 سال براش وقت گذاشتم، اینجا همه تلاش می کنیم از شروع یادگیری تا ورود به بازر کار حوزه برنامه نویسی و IT همراهتون باشیم.

جلسات دوره

نظرات کاربران

مجید کریم پناه

سلام.پروژه را که باز می کنم خطای Deprecated: mysql_pconnect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\wamp64\www\blog\system\model.php on line 12 را دارم همچنین از تابع mysql_query هم خطا میگیره؟ لطفا کد صحیحش را برام بنویسید.

رضازاده

باسلام
من این دوره رو خریداری کرده ام…
ویدیوی جلسه 27 باز نمیشه… ممکنه اشکالش رو بررسی کنید؟

لقمان آوند

سلام
بررسی شد مشکلی نداره
مجدد اقدام کنید

pourya-k

سلام
من در پروژه MVC با استفاده از pip زمانی که صفحه با 404 مواجه میشود به جای نمایش erro خطای زیر را اعلام میکند:
Fatal error: Cannot declare class Error, because the name is already in use in C:\xampp\htdocs\exam\application\controllers\error.php on line 16
چگونه میتوانم این مورد را رفع بکنم ؟ جستجو کردم ولی به نتیجه ای نرسیدم
همچنین به نظرتون بهتر هست پروژه روی ین pip کار بشود یا لاراول ؟
متشکرم

لقمان آوند

سلام
خوب گویا نام کلاس تکراری هست که نباید باشه.
الان اگه بخواید شروع کنید با کدایگنایتر شروع کنید بعد برید سراغ لاراول

mahii

سلام
من نمی تونم به دیتابیس وصل بشم و mysql_pconnect ارور میده، از mysqli هم استفاده میکنم نمیشه، نمیدونم مشکل چی هست، راهنمایی بفرمایید

لقمان آوند

خوب باید متن خطا رو چک کنید. دقت کنید که اطلاعات دیتابیس رو درست وارد کرده باشید در کدتون …

fara php16

با سلام و خسته نباشید

من با فریمورک PIP به مشکل برخوردم و خیلی از کدهای فریمورک PIP در فایل Model.php منسوخ شده هستن و اصلا نمیشه تغییرشون داد چون ساختار فریمورک بدتر میشه که بهتر نمیشه .

آیا فریمورک دیگه ای هست که بروز باشه و شبیه PIP باشه…

من الان موندم که چیکار کنم.
و اگر این پروژه رو هم آپدیت کنید با آموزش روز خیلی بهتر میشه که موقع استفاده به مشکل برنخوریم

باتشکر منتظر جوابتون هستم

کیوان علی محمدی

سلام دوست عزیز. اگه فریمورک های کوچیک مد نظرتونه Lumen و silex و slim پینشهاد میشه. در غیر این صورت فریمورک laravel پیشنهاد میشه.

seyyed ali farrokh

سلام اقا لقمان
شرمنده ، میخواستم بدونم تا چه حد میشه رو امنیت این پروژه حساب کرد؟ایا با همین دانسته ها میشه یه cms امن نوشت و نیازی به دانسته های فراتر نداریم؟
ممنون

لقمان آوند

سلام
طبیعتا بحث امنیت رو نمیشه محدود به چند آیتم کرد.
همه مواردی که در فصل مربوط به امنیت گفتیم رو سعی کنید در این پروژه به کار بگیرید و مدام مطالعه کنید در زمینه مباحث امنیتی

eli yat

با سلام

ببخشید داخل فایل ها یک فایل با اسم .idea هست .
ممنون میشم بفرمایید این چه فایلی است و چه کاربردی دارد ؟
مثلا از workspace.xml چه طوری میشه استفاده کرد ؟
ممنون

لقمان آوند

سلام
مربوط به phpStorm هست و جزو پروژه شما نیست. در آخر می تونید حذفش کنید.

حامد بهمنی

سلام
تمام دیتاهای فارسی که از دیتابیس میخونم به صورت علامت سوال داخل وبلاگ نشون داده میشه!!
ممنون میشم راهنمایی بفرمایید به چه طریقی این مشکل رو حل کنم.
با تشکر

لقمان آوند

نکات لازم گفته شده در این مورد .
collation دیتابیستون حتما مناسب باشه.
قبل از هر چیز هم کوئری set names utf8 رو بزنید ..

حمید رضا مصطفی زاده

سلام استاد ببخشید میشه این پروژه رو که با pip کارکردین رو کاملا با codeigniter پیاده سازی کرد؟
چون خودتون میفرمایید که pip خیلی شبیه codeignter هست که واقعا هم همینطور هست ولی منتها codeigniter فایل های بیشتری داره…
سوال دومم اینه که شما به شخصه چقدر پیشنهاد میکنید که ما بعد از یادگیری php بریم سمت mvc ها
یا cms ها؟
چون به شخصه با وردپرس که کار میکنیم واقعا قابلیت های خوبی داره.به طور مثال برای قسمت جستوجوی این وبلاگ این پروژه شما کلی توضیح دادید و کلی کار انجام شد در صورتی که همین روند در وردپرس (جناب محمدی) بسیار ساده تر از چیزی که فکرش رو بکنم پیاده سازی شد.
حالا سوال من اینجاس…
از یه طرف نمیشه قدرت وردپرس رو نادیده گرفت و از یه طرف دیگه از mvc ها هم نمیشه گذشت.
به شخصه دوست دارم تو هر دوتاش پیشرفت کنم اما شما (بیشتر از دید بازارکار) کدوم رو برای یادگیری حرفه ای تر مقدم تر میدونید؟

لقمان آوند

بله کاملا میشه …
من به شدت پیشنهاد میکنم. اگه می خواید حرفه ای باشید باید سراغ mvc و فریمورک های مطرح اون برید. cms ها رو هم حتما باهاشون آشنایی داشته باشید. خیلی جاها بدرد می خورن.
بله طبیعی هست. یه سری افراد از قبل کل اون امکانات رو نوشتن و شما الان می تونید فقط استفاده کنید.
بنده نظرم اینه که هر دو رو یاد بگیرید. بسته به نوع پروژه دریافتی ممکنه استفاده از cms یا نوشتن از صفر با یه فریمورد mvc مناسبتر باشه !
ببخشید اگه دیر جواب دادم. بعضا کامنتها اسپم میشه و یا اینکه نمی بینیمشون ….

لقمان آوند

تا حدودی درسته ولی می تونید از یه جنبه دیگه هم بهش نگاه کنید. چون کدش در اختیار همه هست اگر ضعفی داشته باشه فوری پیدا میشه و رفع میشه!
اگر می بینید بحث حول و حوش هک و امنیت وردپرس بیشتر از سایر cms ها هست به خاطر استفاده خیلی زیاد از اونه. از هر 5 تا وبلاگ و یا سایتی که تو دنیا هست، یکیش وردپرسیه!

حمید رضا مصطفی زاده

استاد حرفاتون کاملا متین
اما وقتی داریم از وردپرس استفاده میکنیم احتمالش رو نمیدید که همه به توابع اون کاملا آگاهن و این امنیت سایت رو خودش نمیاره پایین؟
احتمال هک شدنش بیشتر نیس؟

mehdi karimi

ممنون بابت توضیحات کاملتون

پایان زمان پشتیبانی

دانشجوی گرامی، بازه پشتیبانی فعال برای این دوره ۳ ماه است که برای شما به پایان رسیده است.

شما هم چنان می توانید سوالات خود را در این قسمت بپرسید اما اولویت پاسخ گویی با دانشجویانی است که بازه پشتیبانی فعال دارند.

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.
گزارش مشکل