PDA

View Full Version : کاربرد منوی داینامیک



bftarane
پنج شنبه 05 مرداد 1391, 21:43 عصر
سلام.
می خواستم بدونم کاربرد منوی داینامیک (منظورم هم از منوی داینامیک اینه که آیتمهاش از دیتابیس پر بشن)
به غیر از CMS ها
منظورم چیزی مثل DNN هست
جای دیگه هم کاربرد داره؟
آخه مثلاً اگه آیتمهای منو بخوان از دیتابیس پر بشن خوب منطقاً به ازای هر آیتم باید یه صفحه هم اختصاص داده بشه و هر صفحه هم بنا به موضوعی که داره لازمه که براش کدنویسی از قبل صورت گرفته باشه
(منظورم اینه که باید ماژول هایی مختص به موضوع اون صفحه از قبل ایجاد شده باشن)
و من از اینا نتیجه می گیرم کاربرد منوی داینامیک فقط در CMS ها هست.
آیا نتیجه گیری من درسته؟

Fartaj
پنج شنبه 05 مرداد 1391, 22:35 عصر
سلام دوست عزیز

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

یه سر به این آدرس هم بزن
http://barnamenevis.org/showthread.php?350718-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%DA%A9%D9%86%DB%8C%D8%AF-!-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%B3%D8%A7%DB%8C%D8%AA-%D8%A8%D8%A7-%D9%82%D8%A7%D8%A8%D9%84%DB%8C%D8%AA-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D8%B5%D9%81%D8%AD%D9%87-%D8%A8%D9%87-%D8%B5%D9%88%D8%B1%D8%AA-%D8%AF%D8%A7%DB%8C%D9%86%D8%A7%D9%85%DB%8C%DA%A9

Rohollaes
جمعه 06 مرداد 1391, 11:41 صبح
یه موردی که من دارم باهاش کار میکنم استفاده توی سایت خبریه .. ادمین گروه هایی که میخواد و ایجاد و بر اساس اون گروه ها مطالب مربوط به اون گروه در صفحه خودش نمایش داده میشه
daneshonline.ir (http://daneshonline.ir)

Fartaj
جمعه 06 مرداد 1391, 14:31 عصر
یه موردی که من به مشکل خوردم و نمی تونم درست تحلیلش کنم اینه که من برای یک کاری باید اونو جوری درست کنم که سایت علاوه بر صفحات خودش و منویی که طبق صفحات موجود داره قابلیت این رو داشته باشه که مدیر بتونه به سایت صفحه اضافه کنه که این کار همون مو قعی که داره منو اضافه می کنه این اتفاق میافته حالا مشکل اینجاست که من تا اینجا یک تعداد صفحه مشخص با نام مشخص دارم و تعدادی صفحه مجازی با آی دی مشخص دارم و نمی دونم چجوری باید رو یک منو ترکیب هر دو رو داشته باشم .
نمی دونم اصلا سوالم رو چجوری بگم ::گیج:

اگه بخوام واضح تر بگم این منو ی من :
90295
فرض بگیرید آدرس و نام منو از دیتابیس خونده می شه عناوین این منو همون عنوان های ثابته منظورم اینه که صفحات این عناوین رو نمیشه از طریق querystring ساخت ، حالا فرض بگیرید قراره به این منو ، منوهایی اضافه بشه که صفحات اون از طریق querystring هست یعنی ترکیب صفحات واقعی و غیر واقعی روی یک منو ؟
وای که ماه رمضونی با معده خالی دیگه فکرم کار نمی کنه :گیج: دوستان هر کی همچین چیزی پیاده کرده جوری بگه که بفهمیم آخر باید چی کار کنیم ؟

mehrzad_ali
جمعه 06 مرداد 1391, 18:24 عصر
یه موردی که من به مشکل خوردم و نمی تونم درست تحلیلش کنم اینه که من برای یک کاری باید اونو جوری درست کنم که سایت علاوه بر صفحات خودش و منویی که طبق صفحات موجود داره قابلیت این رو داشته باشه که مدیر بتونه به سایت صفحه اضافه کنه که این کار همون مو قعی که داره منو اضافه می کنه این اتفاق میافته حالا مشکل اینجاست که من تا اینجا یک تعداد صفحه مشخص با نام مشخص دارم و تعدادی صفحه مجازی با آی دی مشخص دارم و نمی دونم چجوری باید رو یک منو ترکیب هر دو رو داشته باشم .
نمی دونم اصلا سوالم رو چجوری بگم ::گیج:

اگه بخوام واضح تر بگم این منو ی من :
90295
فرض بگیرید آدرس و نام منو از دیتابیس خونده می شه عناوین این منو همون عنوان های ثابته منظورم اینه که صفحات این عناوین رو نمیشه از طریق querystring ساخت ، حالا فرض بگیرید قراره به این منو ، منوهایی اضافه بشه که صفحات اون از طریق querystring هست یعنی ترکیب صفحات واقعی و غیر واقعی روی یک منو ؟
وای که ماه رمضونی با معده خالی دیگه فکرم کار نمی کنه :گیج: دوستان هر کی همچین چیزی پیاده کرده جوری بگه که بفهمیم آخر باید چی کار کنیم ؟

سلام
چه دلیلی داره که صفحات استاتیک داشته باشین ؟
شما همه صفحات رو میتونی از دیتابیس بخونی . مثلا صفحه گالری رو به صورت یوزرکنترل بساز و آدرس این یوزر کنترل رو توی جدول ماژول ذخیره کن حالا توی صفحه ماژول های صفحات این ماژول رو به صفحه انتصاب بده

ali_mnkt
جمعه 06 مرداد 1391, 18:33 عصر
سلام
چه دلیلی داره که صفحات استاتیک داشته باشین ؟
شما همه صفحات رو میتونی از دیتابیس بخونی . مثلا صفحه گالری رو به صورت یوزرکنترل بساز و آدرس این یوزر کنترل رو توی جدول ماژول ذخیره کن حالا توی صفحه ماژول های صفحات این ماژول رو به صفحه انتصاب بده

چه بحث جالبی شد . خوب یکم بذارید بهتر ببینیم ، این cms هایی که قابلیت اضافه کردن ماژول به صورت runtime رو دارن چطوری دارن کار می کنن ؟ آیا ماژول ها همون userControl ها هستن ؟

mehrzad_ali
جمعه 06 مرداد 1391, 18:39 عصر
چه بحث جالبی شد . خوب یکم بذارید بهتر ببینیم ، این cms هایی که قابلیت اضافه کردن ماژول به صورت runtime رو دارن چطوری دارن کار می کنن ؟ آیا ماژول ها همون userControl ها هستن ؟

ماژول ها شامل یوزرکنترل ها هستند

ali_mnkt
جمعه 06 مرداد 1391, 18:41 عصر
یه موردی که من دارم باهاش کار میکنم استفاده توی سایت خبریه .. ادمین گروه هایی که میخواد و ایجاد و بر اساس اون گروه ها مطالب مربوط به اون گروه در صفحه خودش نمایش داده میشه
daneshonline.ir (http://daneshonline.ir)

این سایت رو خودتون نوشتین ؟

Fartaj
جمعه 06 مرداد 1391, 19:12 عصر
یعنی من کلا یک صفحه داشته باشم که توش فقط ماژول ها رو صدا بزنم ؟
می شه تو این سیستم غیر از ماژول متن خالی هم قرار داد ؟

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

mehrzad_ali
جمعه 06 مرداد 1391, 19:28 عصر
یعنی من کلا یک صفحه داشته باشم که توش فقط ماژول ها رو صدا بزنم ؟

دقیقا
ادیتور خودش یه ماژول میشه که توی صفحه صدا زده میشه
شما توی جدول صفحات لینک صفحه گالری رو آدرس یوزرکنترل گالری بذار

Fartaj
جمعه 06 مرداد 1391, 19:33 عصر
تشکر از جوابتون

فقط یک سوال دیگه این کار روی سایت از نظر سرعت و ... تاثیر منفی که نداره خدایی نکرده ؟

یا از لحاظ موتورهای جستجو و سرچ ضعیف نمی شه ؟

mehrzad_ali
جمعه 06 مرداد 1391, 19:40 عصر
برای موتور های جستجو با این تابع می تونید کلمات کلیدی رو از دیتابیس بخونید و به صفحه اضافه کنید



public void SetMetaTags(string title, string description, string keywords)
{
// Get a reference to the HTML Head
HtmlHead headTag = (HtmlHead)Page.Header;

// Set the page title
headTag.Title = title;

// Add a Description meta tag
HtmlMeta metaTag = new HtmlMeta();
metaTag.Name = "Description";
metaTag.Content = description;
headTag.Controls.Add(metaTag);

// Add a Keywords meta tag
metaTag = new HtmlMeta();
metaTag.Name = "Keywords";
metaTag.Content = keywords;
headTag.Controls.Add(metaTag);
}

Rohollaes
جمعه 06 مرداد 1391, 22:50 عصر
این سایت رو خودتون نوشتین ؟

بله دوست عزیز .. مشکلی هست بفرمایید

Rohollaes
جمعه 06 مرداد 1391, 22:57 عصر
تشکر از جوابتون

فقط یک سوال دیگه این کار روی سایت از نظر سرعت و ... تاثیر منفی که نداره خدایی نکرده ؟

یا از لحاظ موتورهای جستجو و سرچ ضعیف نمی شه ؟

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

Fartaj
جمعه 13 مرداد 1391, 18:30 عصر
سلام
چه دلیلی داره که صفحات استاتیک داشته باشین ؟
شما همه صفحات رو میتونی از دیتابیس بخونی . مثلا صفحه گالری رو به صورت یوزرکنترل بساز و آدرس این یوزر کنترل رو توی جدول ماژول ذخیره کن حالا توی صفحه ماژول های صفحات این ماژول رو به صفحه انتصاب بده
من این سیستم رو شروع کردم اما به یک مشکلی برخوردم

من منوی داینامیک رو قرار دادم که از دیتابیس اطلاعات رو می گیره و تو xml می ریزه و نشون می ده و تنظیم کردم که روی هر عنوان کلیک شد id منو رو با querystring بفرسته و کلا تو پروژه یک صفحه گزاشتم و ماژول ها رو با usercontrol ها آماده کردم و تقریبا همه چیز آماده است برای پیاده سازی صفحه داینامیک ولی یک مشکلی هست من اومدم مثلا گالری و تماس با ما و درباره ما و ... رو به صورت ماژول درآوردم و به گفتم که قراره تو مدیریت علاوه بر این ها مدیر صفحه جدید که اضافه می کنه همونجا مطلب اون صفحه رو اضافه می کنه و شما گفتید نمایش مطلب رو هم به صورت یک ماژول در بیارید اما اینجا یک چیزی برای من روشن نیست من مثلا 8 تا ماژول مشخص دارم + یک ماژول که قراره مطالب جدید رو نشون بده تو این حالت یعنی من باید همراه منو 2 تا querystring بفرستم یکی باید نوع ماژول صفحه رو مشخص کنه و یکی مطلب مربوط به اون صفحه ؟

و اینکه تو جداولی که عکسش رو برای من گذاشتید تو جدول صفحات باید برای (ParentID) همون id منو رو قرار بدم ؟

mehrzad_ali
شنبه 14 مرداد 1391, 01:04 صبح
من این سیستم رو شروع کردم اما به یک مشکلی برخوردم

من منوی داینامیک رو قرار دادم که از دیتابیس اطلاعات رو می گیره و تو xml می ریزه و نشون می ده و تنظیم کردم که روی هر عنوان کلیک شد id منو رو با querystring بفرسته و کلا تو پروژه یک صفحه گزاشتم و ماژول ها رو با usercontrol ها آماده کردم و تقریبا همه چیز آماده است برای پیاده سازی صفحه داینامیک ولی یک مشکلی هست من اومدم مثلا گالری و تماس با ما و درباره ما و ... رو به صورت ماژول درآوردم و به گفتم که قراره تو مدیریت علاوه بر این ها مدیر صفحه جدید که اضافه می کنه همونجا مطلب اون صفحه رو اضافه می کنه و شما گفتید نمایش مطلب رو هم به صورت یک ماژول در بیارید اما اینجا یک چیزی برای من روشن نیست من مثلا 8 تا ماژول مشخص دارم + یک ماژول که قراره مطالب جدید رو نشون بده تو این حالت یعنی من باید همراه منو 2 تا querystring بفرستم یکی باید نوع ماژول صفحه رو مشخص کنه و یکی مطلب مربوط به اون صفحه ؟



بله دقیقا



و اینکه تو جداولی که عکسش رو برای من گذاشتید تو جدول صفحات باید برای (ParentID) همون id منو رو قرار بدم ؟
بله id صفحه پدر رو بذارید و اگه صفحه توی Root هست ParentID رو 0 بزارید

Fartaj
شنبه 14 مرداد 1391, 04:38 صبح
بازم ممنون از اینکه جواب سوال های من رو می دید امیدوارم سوال آخرم باشه :خجالت:

با توضیحات شما من به این نتیجه رسیدم که جدول منو در واقع همون جدول صفحاتی است که شما در نظرگرفته بودید ؟ چون من داشتم برای منو جدول جدا در نظر می گرفتم ؟

و یک سوال دیگه تو این حالت (حالتی که ما صفحه ای نداریم و صفحات مجازی است ) برای نقشه سایت اگه بیایم یک ماژول دیگه قرار بدیم و داخل اون یک treeview رو بایند کنیم فکر می کنید کار نقشه سایت رو می کنه برای موتورهای جستجو یا صرفا جهت نمایش به کاربر خوبه ؟

یک مشکل جالب الان که دقت کردم دیدم وقتی من صفحه default رو اجرا می کنم هیچ اطلاعاتی نداره تا زمانی که روی منوها کلیک بشه چون من همه چیز رو ماژول بندی کردم و منتظره روی منو کلیک بشه تا ماژول مربوطه رو بیاره !!:متفکر::متفکر:

mehrzad_ali
شنبه 14 مرداد 1391, 16:42 عصر
بازم ممنون از اینکه جواب سوال های من رو می دید امیدوارم سوال آخرم باشه :خجالت:

با توضیحات شما من به این نتیجه رسیدم که جدول منو در واقع همون جدول صفحاتی است که شما در نظرگرفته بودید ؟

بله



و یک سوال دیگه تو این حالت (حالتی که ما صفحه ای نداریم و صفحات مجازی است ) برای نقشه سایت اگه بیایم یک ماژول دیگه قرار بدیم و داخل اون یک treeview رو بایند کنیم فکر می کنید کار نقشه سایت رو می کنه برای موتورهای جستجو یا صرفا جهت نمایش به کاربر خوبه ؟

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



یک مشکل جالب الان که دقت کردم دیدم وقتی من صفحه default رو اجرا می کنم هیچ اطلاعاتی نداره تا زمانی که روی منوها کلیک بشه چون من همه چیز رو ماژول بندی کردم و منتظره روی منو کلیک بشه تا ماژول مربوطه رو بیاره !!:متفکر::متفکر:
یه فیلد بگیرید توی جدول از نوع بولین IsDefault . فقط یک صفحه باید True باشه . بعد توی رویداد Session start فایل Global.Ascx اون صفحه True رو سلکت کنید

Fartaj
شنبه 14 مرداد 1391, 18:02 عصر
یک اتفاق بد دیگه برام افتاد وقتی ماژول گالری رو داینامیک به صفحه اضافه می کنم صفحه اول گالری درسته اما وقتی next گالری رو می زنم دیگه چیزی نشون نمی ده ؟؟

در واقع عملیات های مربوط به ماژول ها رو انجام نمی ده ؟

viewstate رو هم چک کردم درسته !

Fartaj
یک شنبه 15 مرداد 1391, 11:07 صبح
کد مربوط به داینامیک کنترل :



public string currentModule
{
get
{

return (string)ViewState["moduleName"];
}

set
{
ViewState["moduleName"] = value;
}
}
public void addModule(object moduleName)
{
PlaceHolder1.Controls.Clear();
UserControl uCtrl = (UserControl)Page.LoadControl(string.Format("~/page_module/{0}.ascx", moduleName));
uCtrl.ID = "dummyID";
PlaceHolder1.Controls.Add(uCtrl);
currentModule = moduleName.ToString();
}
private void Bindmodule()
{
if (Request.QueryString["page"] != null)
{
cs.Open();
int menuid = Convert.ToInt32(Request.QueryString["page"]);
SqlCommand com = new SqlCommand("select modulename from h_page_modules where menuid = @menuid", cs);
com.Parameters.AddWithValue("@menuid", menuid);
SqlDataReader dr2 = com.ExecuteReader();

dr2.Read();
currentModule = dr2["modulename"].ToString();
cs.Close();
addModule(currentModule);


}
}


دوستان این کد من برای لود داینامیک usercontrol اما متعصفانه وقتی usercontrol رو میاره کار خاصی انجام نمی ده به محض کلیک روی دکمه های usercontrol صفحه خالی می شه ؟

mehrzad_ali
یک شنبه 15 مرداد 1391, 12:58 عصر
آدرس دهی فایلهای یوزرکنترل رو به این صورت بدبد هم Css هم jquery ها


<link href="<%= ResolveUrl("style.css")%>" rel="stylesheet" type="text/css" />

Fartaj
یک شنبه 15 مرداد 1391, 13:16 عصر
نه نشد ، بازم صفحه خالی می شه رو هر دکمه ای کلیک می کنم صفحه خالی می شه

اگر من بیام تا اونجایی که ماژول هام مشخصه صفحه واقعی براشون بزارم و بیام یک صفحه بزارم برای منو جدید که مطالبشون رو نشون بده چطوره ؟ و تو مدیریت وقتی منو ها رو تو گرید نشون می دم حق حذف 10 رکرد اول که مربوط به منوهای مشخصه رو ندم ؟ و یک فیلد url تو جدولم بزارم برای اونهایی که صفحه واقعی دارند آدرس صفحه و از اونجا به بعد که مدیر منو وصفحه اضافه می کنه بیام موقع ثبت منو (البته اینجاش رو مشکل دارم) برای فیلد url به این صورت عمل کنم :


"page.aspx?page="+menuid


حالا مشکل من اینه که موقعی که منو داره ثبت می شه هنوز id بهش اختصاص پیدا نکرده می شه id اون رو دو جا ثبت کرد ؟

Mohandes2009
یک شنبه 15 مرداد 1391, 14:03 عصر
سلام.
می خواستم بدونم کاربرد منوی داینامیک (منظورم هم از منوی داینامیک اینه که آیتمهاش از دیتابیس پر بشن)
به غیر از CMS ها
منظورم چیزی مثل DNN هست
جای دیگه هم کاربرد داره؟
آخه مثلاً اگه آیتمهای منو بخوان از دیتابیس پر بشن خوب منطقاً به ازای هر آیتم باید یه صفحه هم اختصاص داده بشه و هر صفحه هم بنا به موضوعی که داره لازمه که براش کدنویسی از قبل صورت گرفته باشه
(منظورم اینه که باید ماژول هایی مختص به موضوع اون صفحه از قبل ایجاد شده باشن)
و من از اینا نتیجه می گیرم کاربرد منوی داینامیک فقط در CMS ها هست.
آیا نتیجه گیری من درسته؟


نه میتونیه پیج هات یه صفحه خاص باشه که با اضافه شدن یه منو فقط آی دی جدید بده به اون صفحه و اطلاعاتش عوض بشه!!

ali_mnkt
یک شنبه 15 مرداد 1391, 14:12 عصر
بله دوست عزیز .. مشکلی هست بفرمایید
سایت خوبیه ، فقط یک چند وقتی هست دنبال پیاده سازی قسمت " برچسب ها " به ازای هر خبر هستم . می شه راهنمایی کنید چطور پیاده سازی کردین ؟ یعنی در طراحی جداول پایگاه از چه جدول هایی استفاده کردین و وقتی روی اونا کلیک می شه به چه آدرسی باید انتقال پیدا کنیم ؟

mehrzad_ali
یک شنبه 15 مرداد 1391, 14:40 عصر
نه نشد ، بازم صفحه خالی می شه رو هر دکمه ای کلیک می کنم صفحه خالی می شه

اگر من بیام تا اونجایی که ماژول هام مشخصه صفحه واقعی براشون بزارم و بیام یک صفحه بزارم برای منو جدید که مطالبشون رو نشون بده چطوره ؟ و تو مدیریت وقتی منو ها رو تو گرید نشون می دم حق حذف 10 رکرد اول که مربوط به منوهای مشخصه رو ندم ؟ و یک فیلد url تو جدولم بزارم برای اونهایی که صفحه واقعی دارند آدرس صفحه و از اونجا به بعد که مدیر منو وصفحه اضافه می کنه بیام موقع ثبت منو (البته اینجاش رو مشکل دارم) برای فیلد url به این صورت عمل کنم :


"page.aspx?page="+menuid


حالا مشکل من اینه که موقعی که منو داره ثبت می شه هنوز id بهش اختصاص پیدا نکرده می شه id اون رو دو جا ثبت کرد ؟

این روش هم خوبه شما برای صفحات مجازی هم می تونی از همون url استفاده کنی

Fartaj
یک شنبه 15 مرداد 1391, 14:44 عصر
نه آخه مشکل تو ثبت id هست من موقع ثبت منو جدید باید برای url آی دی رکوردی که هنوز ثبت نشده رو ثبت کنم ؟

من querystring رو موقع ثبت منو چجوری ثبت کنم



page.aspx?page=???

mehrzad_ali
یک شنبه 15 مرداد 1391, 14:49 عصر
از identity توی sql استفاده نکنید یه تابع بنویسید id رو به صورت یک عدد تصادفی ایجاد کنید و بریزید توی یک متغیر . بعد اون متغیر رو همزمان می تونید 2 جا ثبت کنید

ali_mnkt
یک شنبه 15 مرداد 1391, 23:02 عصر
سایت خوبیه ، فقط یک چند وقتی هست دنبال پیاده سازی قسمت " برچسب ها " به ازای هر خبر هستم . می شه راهنمایی کنید چطور پیاده سازی کردین ؟ یعنی در طراحی جداول پایگاه از چه جدول هایی استفاده کردین و وقتی روی اونا کلیک می شه به چه آدرسی باید انتقال پیدا کنیم ؟
کسی نمی گه قابلیت ایجاد برچسب به ازای هر مطلب چطوری پیاده سازی می شه ؟