PDA

View Full Version : سوال: تغییر قالب وب سایت



Zabi42
سه شنبه 17 فروردین 1389, 14:43 عصر
با عرض سلام خدمت دوستان محترم
می خواستم بدونم بهترین روش برای تغییر قالب وب سایت توسط کاربر به چه نحو است؟؟؟

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

Mostafa_Dindar
سه شنبه 17 فروردین 1389, 15:15 عصر
سلام

پيشنهاد من ساده ترين راه استفاده از Theme هست . اگر اين كليد واژه رو جستجو كنيد مطالب زيادي پيدا ميكنيد كه نحوه پياده سازي اون آسون هم هست

موفق باشيد

raziee
سه شنبه 17 فروردین 1389, 15:18 عصر
فکر می کنم باید از DataBase استفاده کنم ولی نمی دونم کد های هر Template رو چطوری ذخیره کنم

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


پيشنهاد من ساده ترين راه استفاده از Theme هست . اگر اين كليد واژه رو جستجو كنيد مطالب زيادي پيدا ميكنيد كه نحوه پياده سازي اون آسون هم هست


درسته که با Theme میشه قالب رو عوض کرد اما اگه بخواهیم تغییرات زیادی بدیم خیلی دستمون باز نیست.
مثلا تغیر کلی چیدمان یا استفاده از کنترل های خاص(گرچه میشه کنترل ها رو تو runtime لود کرد).

alireza_s_84
سه شنبه 17 فروردین 1389, 17:23 عصر
با عرض سلام خدمت دوستان محترم
می خواستم بدونم بهترین روش برای تغییر قالب وب سایت توسط کاربر به چه نحو است؟؟؟

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

سلام دوست عزیز همانطور که جناب رضیئی عزیز گفتن اینکار با طراحی یک چند مسترپیج و همیچنین چند تم امکانپذیره. شما گاهی اوقات میخواید یک صفحه همون شکل رو داشته باشه محل قرار گیری نوشته ها ، بنر ، منو و ... ثابت هست ولی رنگ زمینه و رنگ فونت ها ، افکت ها و ... متغیره در اینصورت شما در پوشه تم ها چند تم تعریف میکنید و با استایل شیت ها قالب موردنظرتون رو شکل میدین. اما بعضی مواقع طرح سایت بکلی عوض میشه و اجبارا باید از مسترپیج استفاده کرد. با ترکیب این دو + بهره گیری از Membership + Profile به راحتی میتونید اینکار رو پیاده سازی کنید ولی از همون اول چند نکته رو در نظر بگیرید:
اگر شما قراره قالبی طراحی کنی که محل قرار گیری عناصر در اون ثابته فقط رنگ بندی اون تغییر میکنه تمامی فرمت دهی ها و سایزبندی ها باید با استفاده از استایل شیتهای بیرونی و در درون تمها صورت بگیره.
چنانچه طرح کلی سایت قراره تغییر بکنه جوری باید همه رو طراحی کنید که جوابگوی محل قرارگیری نوشته های یی باشه که شما بعدها به سایت پست میکنید. برای مثال این نباشه که شما بر اساس یک قالب نوشته هاتون قشنگ جا بگیریه بعد توی یک قالب دیگه همون نوشته بره تو دل و روده ی منوی بالاییش و پستهایی پایینیش بپیچه.
موفق باشید

Zabi42
سه شنبه 17 فروردین 1389, 17:31 عصر
از Raziee و Lastphoenix ممنون به خاطر پاسخشون
Raziee جان می شه بیشتر در مورد روشی که گفتی توضیح بدی؟؟؟

مسترپیج انتخابی توسط کاربر رو به عنوان مستر پیج صفحات بخونید
؟؟؟؟؟

Zabi42
سه شنبه 17 فروردین 1389, 17:42 عصر
alireza جان ممنون از پاسخت
قرار طرح کلی سایت تغییر بکنه و می خوام کاربر بتونه قالب دلخواه خودشو متناسب با کارش انتخاب کنه
البته از میون قالب هایی که من قبلا واسشون طراحی کردم که شما می کین که باید از چندین مسترپیج استفاده کنم اگه می شه بیشتر برام توضیح بدید که دقیقا چی کار باید بکنم؟؟؟

Mostafa_Dindar
سه شنبه 17 فروردین 1389, 18:45 عصر
alireza جان ممنون از پاسخت
قرار طرح کلی سایت تغییر بکنه و می خوام کاربر بتونه قالب دلخواه خودشو متناسب با کارش انتخاب کنه
البته از میون قالب هایی که من قبلا واسشون طراحی کردم که شما می کین که باید از چندین مسترپیج استفاده کنم اگه می شه بیشتر برام توضیح بدید که دقیقا چی کار باید بکنم؟؟؟


تنها نكته اي كه داره تعين Masterpage به صورت دايناميك بايد در رويداد PreInit انجام بشه .


protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
this.Page.MasterPageFile = "~/DefaultMaster.master";
}

raziee
سه شنبه 17 فروردین 1389, 22:36 عصر
Raziee جان می شه بیشتر در مورد روشی که گفتی توضیح بدی؟؟؟


موضوع خاصی نیست دوستمون نکته ای رو داشت تو پست قبلی گفتند:

تنها نكته اي كه داره تعين Masterpage به صورت دايناميك بايد در رويداد PreInit انجام بشه

@ alireza بنده رضیئی هستم نه راضعی . البته عادت کردم که بچه های سایت فامیلیم رو به اشتباه بنویسند.(خوب فامیلیم سخته دیگه چه کار کنم.:خجالت:)

alireza_s_84
سه شنبه 17 فروردین 1389, 23:13 عصر
موضوع خاصی نیست دوستمون نکته ای رو داشت تو پست قبلی گفتند:


@ alireza بنده رضیئی هستم نه راضعی . البته عادت کردم که بچه های سایت فامیلیم رو به اشتباه بنویسند.(خوب فامیلیم سخته دیگه چه کار کنم.:خجالت:)

سلام جناب رضیئی شرمنده ویرایش میکنم

alireza_s_84
سه شنبه 17 فروردین 1389, 23:24 عصر
alireza جان ممنون از پاسخت
قرار طرح کلی سایت تغییر بکنه و می خوام کاربر بتونه قالب دلخواه خودشو متناسب با کارش انتخاب کنه
البته از میون قالب هایی که من قبلا واسشون طراحی کردم که شما می کین که باید از چندین مسترپیج استفاده کنم اگه می شه بیشتر برام توضیح بدید که دقیقا چی کار باید بکنم؟؟؟

خوب شما میتونید از Profile ها استفاده کنید و هر کاربری در قسمت کاربری خودش نوع قالبش رو انتخاب کنه. بعد شما اسم یا شناسه قالب انتخاب شده رو توی Profile کاربر ذخیره میکنی و هروقت کاربر لاگین کرد شما قالب رو از Profileکاربر استخراج میکنی و توی شی جلسه میریزی. بعد توی رویداد OnPreInit (یعنی قبل از ارزش دهی عناصر) صفحه MasterPage رو با استفاده از همین شی جلسه تغییر میدی.
برای مثال ممکنه شما MasterPage بنام Green داشته باشید بعد کاربر برای پروفایل خودش این قالب رو انتخاب کرده وقتی شما پروفایل کاربر رو استخراج کنی و توی شی جلسه بریزی اینجوری میتونی قالب رو براش عوض کنی:


protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
if(Session["MasterPage"] == null)
{
Session["MasterPage"] = استخراج پروفایل کاربر در اینجا و انتساب به شی جلسه
}
string masterPagePath = string.Format("~/{0}.master", Session["MasterPage"] );
this.Page.MasterPageFile = masterPagePath;
}

Zabi42
چهارشنبه 18 فروردین 1389, 02:53 صبح
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
if(Session["MasterPage"] == null)
{
Session["MasterPage"] = استخراج پروفایل کاربر در اینجا و انتساب به شی جلسه
}
string masterPagePath = string.Format("~/{0}.master", Session["MasterPage"] );
this.Page.MasterPageFile = "~/DefaultMaster.master";
}
اول تشکر میکنم از Lastphoenix و Raziee و alireza_s_84

نگید خنگه ولی من هر چی از توضیحاتتونو که متوجه شدم رو میگم ببینید چقدر درسته؟ چون خیلی هاش برام جدید بود
1- از رویداد OnPreInit استفاده می کنیم چون قبل از رویداد Page_Load اجرا می شه و ما می تونیم MasterPage رو توسط این رویداد ، برای لود شدن تو صفحه ی مورد نظر قرار بدیم . یعنی من باید رویداد OnpreInit رو قبل از رویداد Page_Load تو CodeBehind بنویسم؟؟ اگر بر داشتم غلط است لطفا راجع به رویداد OnPreInit یه توضیحی بدید یا اگر مطلبی دارید لطف کنید و برای download اینجا بذارید.

2- منظورتان از profile چیست؟؟ منظور همون ذخیره ی اطلاعات کاربر تو جداول DataBase هست؟؟؟ لطفا راجع به رویداد profile هم توضیح دهید یا اگر مطلبی دارید لطف کنید و برای download اینجا بذارید.

3- کد زیر چی کار می کنه؟؟؟

base.OnPreInit(e);

4- فکر می کنم دستور آخر کدهای بالا باید به صورت زیر تغییر کنه .درسته؟؟؟اگر هم درست نیست بگید masterPagePath چی کار میکنه و به چه دردی می خوره؟؟؟

this.Page.MasterPageFile = "masterPagePath";

raziee
چهارشنبه 18 فروردین 1389, 12:05 عصر
. یعنی من باید رویداد OnpreInit رو قبل از رویداد Page_Load تو CodeBehind بنویسم؟؟
ببینید هر رویداد یا رخدادی یک زمان وقوع داره.
مثلا رویداد mouse-down قبل از رویداد mouse-up اتفاق می افته.
رویداد OnpreInit هم قبل از رویداد page-load اتفاق می افته. چه شما این رو بخواهید چه نخواهید.

- منظورتان از profile چیست؟؟ منظور همون ذخیره ی اطلاعات کاربر تو جداول DataBase هست؟؟؟ لطفا راجع به رویداد profile هم توضیح دهید یا اگر مطلبی دارید لطف کنید و برای download اینجا بذارید.


این پروفایل که میگیم چیزیست که هر کار بر داره و یکسری اطلاعات و تنظیمات رو درش نگه داری میکنه.
حالا میخواید این رو دیتابیس بسازید. از membership استفاده کنید یا خودتون بنویسید
یا هر چیزه دیگه که به شما ربط داره( به پیاده سازی شما)


masterPagePath هم خوب آدرس مستر پیجتون هست دیگه