ورود

View Full Version : customize کردن سایت برای هر کاربر



brida_kh
پنج شنبه 05 بهمن 1385, 10:10 صبح
من میخوام که سایت واسه هر کاربر custumaize باشه
مثله سایت یاهو که به کاربرش اجازه میده ایمیلشو به اون رنگی که خودش میخواد در بیاره.(آبی و صورتی و...)
بهترین روش به نظر شما چیه ؟آیا یه سری استایل جداگونه داره که برای هر کاربر مطابق میلش انتخاب میشه در اینصورت چطور توی تگ متا فایل مربوط رو فراخوانی میکنه؟
با تشکر

Alireza_Salehi
پنج شنبه 05 بهمن 1385, 10:20 صبح
اگر از 2005 استفاده می کنی می تونی چند تا Theme داشته باشی و در رویداد PreInit هر صفحه نوع Theme رو با توجه با اطلاعات کاربر تغییر بدی!


Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit
Page.Theme = "نام تم"
End Sub

فکر کنم راحت ترین راهش همینه (البته اگر از مسترپیج استفاده کرده باشی که فقط توی مسترپیج این کد رو بنویسی کافیه) !

brida_kh
پنج شنبه 05 بهمن 1385, 10:25 صبح
متاسفانه از 2005 استفاده نمیکنم.روش دیگه ای سراغ ندارید؟

Alireza_Salehi
پنج شنبه 05 بهمن 1385, 10:35 صبح
توی 2003 با استفاده از CSS میشه همون کار رو کرد!

در واقع CSS آسون ترین روش تغییر شکل یک صفحه بصورت کلیه!

brida_kh
پنج شنبه 05 بهمن 1385, 10:41 صبح
ببینید من 4 تا استایل دارمبا اشکال مختلف،که در حالت معمولی در تگ متا فراخوانی میشوند.
با استفاده از این کد :


<LINK href="images/style.css" type="text/css" rel="stylesheet">

حالا من میخوام اسم استایلم دینامیک باشه،STYLE.CSS رو دینامیک مطابق میل کاربر تغییر بدم.
از چه کدی استفاده کنم؟میخوام بدونم این روش درستیه؟

ممنون از توجهتون

Alireza_Salehi
پنج شنبه 05 بهمن 1385, 10:50 صبح
این مقاله رو یه نگاهی بنداز
Dynamic CSS Styling in ASP.NET: a Flexible Approach (http://www.codeproject.com/useritems/ASPNET_Dynamic_Styling.asp)

brida_kh
پنج شنبه 05 بهمن 1385, 11:12 صبح
دوست خوبم ، این برنامه اون چیزی نیست که مد نظره منه!میخوام یه استیال کلی بنویسم و استفاده کنم. اینطوری تمام کنترلها باید یکی یکی پیدا بشه و کاستوم بشه(البته اینطور که متوجه شدم)

Alireza_Salehi
پنج شنبه 05 بهمن 1385, 11:15 صبح
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender (e);
//give the Form element the appropriate style class
styleForm();
}یکی یکی لازم نیست ، یک بار CSS رو تعریف میکنی به کل فرم نسبت می دی!
در واقع چند تا مود تو کلاس تعریف می کنی وفقط یک بار خاصیت CSSClass هر کنترل رو ست می کنی ، با کد بالا ظاهر همه کنترل ها عوض میشود

Behrouz_Rad
پنج شنبه 05 بهمن 1385, 12:40 عصر
Theme ها در عین حال که کار رو آسون می کنند، معایب بزرگی نیز دارند.
Theme ها تنها به کنترل های Server-Side اعمال میشن و حتی برخی کنترل های Server نیز Theme پذیر نیستند!
هر کنترل برای اینکه بتونه Theme پذیر باشه، باید خاصیت "Themeable" کلاسی که از اون مشتق میشه رو در حالت "true" داشته باشه.
به عنوان مثال، کنترل Repeater، قابلیت پذیرش Theme ها رو نداره! چون خاصیت "Themeable" اون "false" هست.
همچنین کنترل های Literal، LoginView و ...

عیب بزرگ دیگه ی Theme ها (قبلا در مقاله ای اشاره کرده بودم)، این هست که خواص تعریف شده در فایل های Skin رو تبدیل به مقادیر خاصیت Style عناصر می کنند که این باعث سنگین شدن صفحه خواهد شد. البته برای رفع این مشکل میشه از تلفیق CSS و SKIN استفاده کرد.

در نهایت، روشی که قبل از مطرح شدن Theme ها استفاده میشد و دوستمون لینکی در این مورد به مقاله ای دادند، همچنان روش خوب و به نظر من ساده تری هست!

تنها به کمی دقت نظر و تسلط بر CSS نیاز داری.
نام Theme انتخاب شده توسط کاربر رو در یک کوکی نگهداری کن و در هر بار بارگذاری صفحه، همون طور که در اون مقاله ذکر شده، در روال OnPreRender، استایل مورد نظر رو به صفحت نسبت بده.

موفق باشید.

Alireza_Salehi
پنج شنبه 05 بهمن 1385, 14:17 عصر
Theme ها در عین حال که کار رو آسون می کنند، معایب بزرگی نیز دارند.
Theme ها تنها به کنترل های Server-Side اعمال میشن و حتی برخی کنترل های Server نیز Theme پذیر نیستند!
هر کنترل برای اینکه بتونه Theme پذیر باشه، باید خاصیت "Themeable" کلاسی که از اون مشتق میشه رو در حالت "true" داشته باشه.
به عنوان مثال، کنترل Repeater، قابلیت پذیرش Theme ها رو نداره! چون خاصیت "Themeable" اون "false" هست.
همچنین کنترل های Literal، LoginView و ...

عیب بزرگ دیگه ی Theme ها (قبلا در مقاله ای اشاره کرده بودم)، این هست که خواص تعریف شده در فایل های Skin رو تبدیل به مقادیر خاصیت Style عناصر می کنند که این باعث سنگین شدن صفحه خواهد شد. البته برای رفع این مشکل میشه از تلفیق CSS و SKIN استفاده کرد.

در نهایت، روشی که قبل از مطرح شدن Theme ها استفاده میشد و دوستمون لینکی در این مورد به مقاله ای دادند، همچنان روش خوب و به نظر من ساده تری هست!

تنها به کمی دقت نظر و تسلط بر CSS نیاز داری.
نام Theme انتخاب شده توسط کاربر رو در یک کوکی نگهداری کن و در هر بار بارگذاری صفحه، همون طور که در اون مقاله ذکر شده، در روال OnPreRender، استایل مورد نظر رو به صفحت نسبت بده.

موفق باشید.

لطفا چند تا منبع برای اطلاعات بیشتر معرفی کنید؟

Behrouz_Rad
پنج شنبه 05 بهمن 1385, 15:00 عصر
www.google.com

Alireza_Salehi
پنج شنبه 05 بهمن 1385, 15:50 عصر
آقای راد تعداد زیادی مقاله در مورد Theme پیدا کردم تو هیچ کدوم مورد منفی گزارش نشده بود حتی کارهایی هست که به وسیله CSS قابل انجام نیستند. حالا مرجع شما برای این مواردی که ذکر کردین چیه نمی دونم!

وقتی هم ویندوز XP یا Vista به بازار اومدند خیلی ها از ظاهر گرافیکی ایراد می گرفتند و آن را باعث کاهش کارایی می دانستند (بالاخره هر چیزی یه هزینه ای داره)

فکر نمی کنم هیچ روشی به راحتی Theme برای یک برنامه نویس پیدا بشه!

nazaninam
پنج شنبه 05 بهمن 1385, 16:56 عصر
فرض کنید که 4 تا استایل مختلف توی پروژتون هست و می خواهید اونارو بصورت داینامیک لود کنید .
خیلی سادست کافیه تگ


<LINK href="images/style.css" type="text/css" rel="stylesheet" >

رو به شکل زیر تغییر بدید


<link href="<%=stylename %>" rel="stylesheet" type="text/css"/>



حالا کافیه داخل codebehind یک متغیر به نام stylename و از نوع public تعریف کنید به شکل زیر :



Public stylename As String = "Style_3.css"


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

Behrouz_Rad
پنج شنبه 05 بهمن 1385, 20:22 عصر
آقای راد تعداد زیادی مقاله در مورد Theme پیدا کردم تو هیچ کدوم مورد منفی گزارش نشده بود حتی کارهایی هست که به وسیله CSS قابل انجام نیستند. حالا مرجع شما برای این مواردی که ذکر کردین چیه نمی دونم!
تفکر + تجربه + دلیل منطقی

ali_kolahdoozan
پنج شنبه 05 بهمن 1385, 20:38 عصر
دلیل دیگه وقتی یکی تست کرده میدونه بس نیست . میتونی در ردش سورس بیار .

Alireza_Salehi
پنج شنبه 05 بهمن 1385, 22:17 عصر
دلیل دیگه وقتی یکی تست کرده میدونه بس نیست . میتونی در ردش سورس بیار .
البته من اصراری بر این موضوع ندارم که حرف شما رو رد کنم ولی به شدت علاقه مندم یک دلیل فنی و تایید شده برای استفاده نکردن از این قابلیت پیدا کنم (البته با توجه به این که می دونم CSS مزایای زیادی داره)!

در هیچ جای دنیا هیچ فن آوری بدرد بخوری با تست یک نفر درست نشده و تایید هم نشده و رد هم نشده معمولا پشت هر فن آوری جدید ساعت ها تحقیق و تجربه هست البته هر چیز جدیدی حتما ایراداتی داره،
و در صورتی که در یک فن آوری ایرادی وجود داشته باشه حداقل باید یک نفر در مجامع تخصصی (البته به جز Behrouz_Rad) یه چیزی گفته باشه یا نه ،من که هر چی گشتم چیزی پیدا نکردم در ضمن مشابه این فن آوری در جاوا هم وجود داره !

نکته دیگر این که فایل های CSS به طور پیشفرض قابل مشاهده هستند ولی Skin ها توسط ASp.NET سرویس داده نمی شوند و محتویات انها قابل مشاهده نیست ،دیگر این که تم ها نه تنها قابل اعمال به یک صفحه بلکه به کل یک سایت و حتی قابل اعمال به کل سایت های یک سرور هستند و همه اینها تنها با یک خط کد!
در ضمن میشه تم رو برای بعضی از کنترل ها در یک صفحه یا برای بعضی صفحات در یک سایت غیر فعال کرد !
در ضمن فکر کنم استفاده از سیستم Profile به همراه Theme برای مدیریت ظاهر وب سایت خیلی راحت تر از روش های دیگر باشه!


هنوز قانع نشدم (اقای راد اگر امکان داره یکی از تجربیاتتون رو بگین ما هم یاد بگیریم)!


به هر حال ممنون از نظرات همه.

Behrouz_Rad
پنج شنبه 05 بهمن 1385, 23:54 عصر
دوست من!
اینجا هم همان طور که از عنوان سایت مشخص هست، یک مجمع تخصصی هست و من (می تونی به عنوان اولین نفر در دنیا حساب کنی!) دارم در مورد معایب استفاده از Theme نظراتم رو میگم. مسلما عدم ذکر مزایای یک تکنیک، دلیل بر ضعیف بودن اون تکنیک نیست!
بهتره به نوشته ی پیشین من در صفحه قبل مراجعه کنی و مجددا اون رو با نهایت دقت مطالعه کنی.

موفق باشید.

brida_kh
شنبه 07 بهمن 1385, 08:49 صبح
انگار بحث داغ شد و خودم جا موندم .به هر حال تشکر از تمامی دوستانی که کمک کردند.اون کاری که من میخواستم انجام بدم با پیشنهادی که nazaninM فرمودن بیشتر مطابقت داشت.تا مراحلی درست رفته بودم مشکل اضافه کردن علامت = بعد از style بود.:لبخند:
به علاوه اینکه کلی مطالب جدید هم از دوستان یاد گرفتم.ممنون و سپاس:قلب:

saeid taheri
یک شنبه 27 اسفند 1385, 14:40 عصر
من یه تاپیکی شبیه این زدم پاکش کردن گفتن تاپیک تکراریه جناب آقای راد این تاپیک تکراری شماست آیا واقعا کسی توی این تاپیک به نتیجه ای رسیده