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

+- باشگاه کاربران روماک (https://forum.romaak.ir)
+-- انجمن: انجمن طراحی سایت و برنامه نویسی (https://forum.romaak.ir/forumdisplay.php?fid=78)
+--- انجمن: کد نویسی (https://forum.romaak.ir/forumdisplay.php?fid=79)
+---- انجمن: PHP (https://forum.romaak.ir/forumdisplay.php?fid=46)
+---- موضوع: ساخت منوی هوشمند با php و css (/showthread.php?tid=393)



ساخت منوی هوشمند با php و css - saberi - ۹۴/۶/۲۳

در این آموزش می خواهیم شما را با نحوه ایجاد نوعی منوهای صفحه به صفحه یا به عبارتی، منوهای هوشمند آشنا کنیم که با تغییر صفحات سایت، لینک صفحه فعال را به صورت مشخص و متمایز از دیگر منوها نشان می دهند، احتمالا کم و بیش، نمونه هایی از این نوع را در صفحات وب مشاهده کرده اید، ولی شاید برایتان نحوه ساخت آنها تا به امروز حل نشده باقی مانده باشد، اگر اینچنین است، بد نیست با ادامه این آموزش همراه ما باشید تا با هم نگاهی داشته باشیم به نحوه ساخت منوهای هوشمند در سایت با php و css.
منظور از منوی هوشمند چیست؟

همانطور که می دانیم، در حالت معمول، منوهای وب بر اساس رفتارهای قابل ایجاد با کدهای css تنظیم می شوند که به چهار حالت a:link (حالت عادی لینک)، a:visited (حالتی که لینک دیده شده است)، a:hover (حالتی که لینک فعال است و ماوس را روی آن می بریم) و a:active (حالت لحظه ای که روی لینک کلیک می کنیم) محدود می شوند، اما اگر بخواهیم به فرض وقتی کاربر صفحه ای را انتخاب کرد، منوی مربوط به آن صفحه را متمایز از سایر منوها و به حالت انتخاب درآوریم، این روش های معمولی به تنهایی کافی نیستند، لذا باید دست به دامن کدهای سمت سرور و از جمله php شویم تا به طور داینامیک، صفحه ای که کاربر در آن قرار دارد را شناسایی کرده و کلاس متفاوتی به منوی مربوط به لینک آن صفحه در مقایسه با سایر منوها نسبت دهیم، این چیزی است که به اصطلاح می توان بر آن عنوان منوی هوشمند را نهاد.
ساخت منو با تگ ul li

قبل از هر چیز باید منوهایی در صفحه خود بسازیم که قابلیت پذیرش کلاس های css را داشته باشند، در اینجا ما از تگ های استاندارد ul و li بدین منظور استفاده کرده ایم، در زیر یک نمونه ساده را ملاحظه می کنید.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- همانطور که ملاحظه می کنید، ما از ترکیب کدهای php در html برای ایجاد کلاس های داینامیک استفاده کرده ایم (در ادامه خواهیم دید).
- لینک های این منوها کاملا فرضی هستند و صرفا به جهت جنبه آموزشی کار، درج شده اند، در عمل باید آنها را متناسب با سایت خود تنظیم نمائید.
تعریف استایل css برای منوها

پس از اینکه منوهای خود را به صورت ترکیب تگ های html و php ساختیم، باید حالت های فعال و غیر فعال آنها را بر اساس کلاس های css تعریف کنیم، در زیر این کار را جهت نمونه انجام داده ایم.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
 
توضیح:
- اگر دقت کنید، دو کلاس با نام  menu-off و menu-on با اندکی اختلاف در کدنویسی، در استایل بالا نوشته ایم، کلاس menu-off برای زمانی است که لینک منو در حالت عادی و انتخاب نشده قرار دارد و در مقابل کلاس menu-on برای حالتی است که کاربر بر روی لینک کلیک کرده و وارد آن صفحه شده است.
- دقت کنید که تنظیم شکل ظاهری منو ها بستگی به ذوق و سلیقه خودتان دارد و مهم این است که شما با تکنیک پایه ی کار آشنا شوید، هدف از این آموزش نیز همین است.
کد php و ساخت کلاس داینامیک

اکنون که قسمت html کار را به پایان رسانده ایم، باید با کدنویسی سمت سرور، قابلیت هوشمندی به منوهای خود بدهیم، به این صورت که با شناسایی منوی انتخاب شده توسط کاربر، کلاس  menu-on را برای آن لینک تنظیم کنیم و برای سایر منوها، از کلاس menu-off استفاده نمائیم، این کار چندان پیچیده نیست، کافی است به طور ساده و با متد get پارامتر درخواستی کاربر را شناسایی کرده و متناسب با آن خروجی دهیم.
*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

توضیح:
- ابتدا متغیر فرضی url را با دریافت پارامترهای درخواستی کاربر تنظیم می کنیم.
- سپس بررسی می کنیم تا ببینیم چه منویی توسط کاربر انتخاب شده است، در این حالت اگر بررسی ما درست (true) بود، کلاس آن را به صورت menu-on خروجی می دهیم و مابقی منوها را به صورت menu-off.
- همانطور که ملاحظه می کنید، تنها با دو دستور ساده if و else در php یک منوی هوشمند ساخته ایم.
کد html و php منو + پیش نمایش

در زیر کد کامل منو به صورت html و php به همراه تصویری جهت نمونه و پیش نمایش قرار داده شده است که می توانید از آن استفاده کنید.

[attachment=56]

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *