PDA

View Full Version : سوال: طراحی دیتابیس منو سایت؟



user1000
دوشنبه 15 خرداد 1396, 18:04 عصر
سلام

دوستان من مطالب زیادی رو خوندم در رابطه ساخت منوهای داینامیک (سایت های خارجی و داخلی) ولی هیچ کدومشون اون چیزی نبودن که من میخواستم مثلآ اگه تو جوملا دیده باشید
در پنل ادمین قسمت مدریت منوها وجود داره و شما میتونید یه صفحه رو به منو اختصاص بدید که درستش هم همینه ولی در سطح اینترنت با یک مثال ساده مسئله ساخت منو
رو حل کردن خوب من خودم دارم .

خوب این سایت همونطور که گفتم سایت دندان پزشکی هست

من دیتابیس رو تا حدودی طراحی کردم حالا میخواستم نظر شما رو هم بدونم که این طراحی چه ایراداتی داره و چه property یا جدولی میشه بهش اضافه کرد یا کم کرد

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

نظرتون چیه؟




لطفآ راهنمایی کنید

باتشکر فراوان

Moien Tajik
سه شنبه 16 خرداد 1396, 07:46 صبح
برای منو ، شما میتونید با استفاده از Reflection منوهایی مثل جوملا بسازید تا نام همه ی Action های Controller هاتون را از Assembly مربوطه پیدا کنید .
نام اکشن ها رو میتونید جدا کنید ، از روی اون ها Route سایتتون رو بسازید و داخل دیتابیس اون هارو ذخیره کنید و به مدیر این لیست از اکشن هارو نمایش بدید تا بر اساس اون ها منو شما رو بسازند و دیگه نیازی به وارد کردن URL نیست.

برای استفاده از Reflection و بدست آوردن نام اکشن ها و کنترلر ها کافیه به این شکل عمل کنید :

var controllersActionNames =
from controller in Assembly.GetExecutingAssembly().GetTypes()
where typeof(Controller).IsAssignableFrom(controller)
from action in controller.GetMethods()
where typeof(ActionResult).IsAssignableFrom(action.Retur nType)
select new { Controller = controller, Action = action };


داخل داده های ذخیره شده در این متغییر شما به راحتی با استفاده از Linq میتونید جستجو کنید و نام اکشن ها و کنترلر هارو جدا کنید و Route هاتون رو بسازید و داخل دیتابیس ذخیره کنید .

moslem.hady
سه شنبه 16 خرداد 1396, 08:52 صبح
اولا برای جدول page یه url بذار، که آدرس صفحه رو بجایر site.com/page/431 بصورت site.com/page/page-url-here نشون بدید که خیلی بهتره.
دوما،اگه میخواید که منو فقط بر اساس page ها باشه، دیگه نیازی به url در جدول منو نیست، و باید PageID رو ذخیره کنید. که درنهایت url اون منو با یه ریلیشن به پیج در میاد.