View Full Version : سوال: اتصال فایل css به دیتابیس
mehdin69
سه شنبه 28 آذر 1391, 00:26 صبح
سلام دوستان
من می خوام فایل css ای که دارم رو بذارم توسط مدیر سایت ویرایش بشه
یعنی مدیر سایت بزنه \س زمینه سایت مشکی شه و توی دیتابیس ذخیره شه
اما فایل css بیاد مقداری که توی دیتابیس ذخیره شده رو بخونه و نخواد توی فایل css بصورت زیر بنویسم
background-color:"#000000"
بجای #000000 یه چیزی می خوام بنویسم که از دیتابیس خونده بشه و هر نوع مقداری رو خود مدیر سایت بتونه بریزه توی background-color ...
ممنون میشم کسی بتونه کمکم کنه
alihassanabadi
سه شنبه 28 آذر 1391, 11:24 صبح
سلام
اگه فقط یکسری خاصیت ها مد نظرت هست که تغییر کنن مثل ColorوBgColor,BgImage آره میشه
یه جدول توی بانک ساخت که هر وقت مدیر تغییرات رو ایجاد کرد اون مقدار ذخیره شه توی فیلد خودش
حالا وقتی صفحه باز شد کل این مقدار ها رو بخون بریز تو مثلا HiddenField اچ تی امل(اینو با کد تولید کن) حال اگه هر فیلد خالی بود که هیچی اگه نه مقدارشو واسه تگ هات ست کن(این کار رو با Jquery انجام بده)
کاری که من واسه یکی از پروژه هام انجام دادم
جدول بانکم اینه
CREATE TABLE [dbo].[tblDesign](
[Id] [int] IDENTITY(1,1) NOT NULL,
[ClassName] [nvarchar](50) NOT NULL,
[Color] [nchar](20) NULL,
[BgColor] [nchar](20) NULL,
[BgImage] [nvarchar](50) NULL,
CONSTRAINT [PK_tblDesign] PRIMARY KEY CLUSTERED
(
[Id] ASC
)
به فیلد ClassName توجه کن میتونه مقادیر مثلا Toolbar,Menu,TitleBar رو بگیره که بستگی به خودت داره.
موفق باشید.
mehdin69
سه شنبه 28 آذر 1391, 21:48 عصر
مرسی از پاسختون اما این چیزی که گذاشتین فقط دیتابیسش هست...
میشه بگین چطوری باید از این داده های دیتابیس استفاده کنم؟
ممنون میشم یه مثال ساده بزنین.
alihassanabadi
چهارشنبه 29 آذر 1391, 11:06 صبح
سلام
حالا وقتی صفحه باز شد کل این مقدار ها رو بخون بریز تو مثلا HiddenField اچ تی امل(اینو با کد تولید کن)
اینو متوجه نشدی
البته این فقط روش پیشنهادی من بود و خوب هم جواب میده
مثلا من یک لیترال گذاشتم به اسم LitDesign و تو پیج لود مستر پیج اینو با یکسری div ها پرش میکنم که هر div محتویات داخلش میگه که رنگ فلان قسمت سایت چی باشه
اینجوری
string si = "";
si = string.Format("<div style=\"display:none;\"><div class=\"mt\">{0}</div><div class=\"mc\">{1}</div><div class=\"t\">{2}</div><div class=\"c\">{3}</div><div class=\"tit\">{4}</div>" +
"<div class=\"rig\">{5}</div><div class=\"ma\">{6}</div></div>", DAL.SiteDesign.mt(), DAL.SiteDesign.mc(), DAL.SiteDesign.t(), DAL.SiteDesign.c(), DAL.SiteDesign.titlebar()
, DAL.SiteDesign.right(), DAL.SiteDesign.MenuA());
litDesign.Text = si;
توجه کن که متد TitleBar از کلاس SiteDesign در لایه Dal به این شکل پیاده شده و همچنین بقیه متدها
public static string titlebar()
{
DataSet d = new DataSet();
d = ExecuteDataset(CommandType.Text, "select *from tblDesign where ClassName='titleBar'");
string s = d.Tables[0].Rows[0]["BgColor"].ToString();
d.Dispose();
return s;
}
که مقدار فیلد BgColor رکوردی که ClassName ش برابر titlebar هست میره تو div ی که کلاس سی اس اسش برابر tit هست
<div class=\"tit\">{4}</div>
توجه کن که کلاس سی اس اس این div برابر tit تنظیم شده که تو جی کوئری باهاش کار داریم
نتیجه دستورات فوق ممکنه چیزی شبیه این شه
<div style="display: none;">
<div class="mt">
#FFF3346</div>
<div class="mc">
</div>
<div class="t">
#CCddAA</div>
<div class="c">
</div>
<div class="tit">#CCddAA</div>
<div class="rig">
</div>
<div class="ma">
</div>
</div>
خب حالا جی کو ئری
$(document).ready(function () {
var mt = $("div.mt").html();
var mc = $("div.mc").html();
var t = $("div.t").html();
var c = $("div.c").html();
var tit = $("div.tit").html();
var rig = $("div.rig").html();
var ma = $("div.ma").html();
if (t !== "") {
$('#Toolbar').css("background", t);
}
if (mt != "") {
$("div.MenuTitle").css("background", mt);
}
if (mc != "") {
$("div.InternalDetail").css("background", mc);
}
if (c != "") {
$("div.Part").css("background", c);
}
if (tit != "") {
$("div.titleBar").children("div.right").css("background", tit);
$("div.titleBar").children("div.left").css("background", tit);
}
if (rig != "") {
$('#content').children("div.right").css("background", rig);
}
if (ma != "") {
$('#Toolbar').children("div.inner").children('a').css("background", ma);
}
});
امیدوارم که خوب مطلب رو رسونده باشم
مشکلی بود بازم بپرس
موفق باشید.
mehdin69
پنج شنبه 30 آذر 1391, 14:54 عصر
آقا مرسی
هر کاری میکنم نمیشه
میشه یه فایل اجراییش بذارین ببینم چه کار کردم که نمیشه؟
ممنون میشم
mehrzad_ali
پنج شنبه 30 آذر 1391, 17:06 عصر
شما کل css رو توی دیتابیس ذخیره کن و یه هندلر درست کن که توی اون به صورت داینامیک استایل ها رو از دیتا بیس میخونی و توی هدر مسترپیج این تگ رو اضافه کن
mehdin69
پنج شنبه 30 آذر 1391, 17:55 عصر
شما کل css رو توی دیتابیس ذخیره کن و یه هندلر درست کن که توی اون به صورت داینامیک استایل ها رو از دیتا بیس میخونی و توی هدر مسترپیج این تگ رو اضافه کن
مرسی
راهکار شما رو تست میکنم
شاید نتیجه بهتری گرفتم
ممنون:چشمک::قلب:
mehdin69
جمعه 01 دی 1391, 01:56 صبح
سلام
اینو متوجه نشدی
البته این فقط روش پیشنهادی من بود و خوب هم جواب میده
مثلا من یک لیترال گذاشتم به اسم LitDesign و تو پیج لود مستر پیج اینو با یکسری div ها پرش میکنم که هر div محتویات داخلش میگه که رنگ فلان قسمت سایت چی باشه
اینجوری
string si = "";
si = string.Format("<div style=\"display:none;\"><div class=\"mt\">{0}</div><div class=\"mc\">{1}</div><div class=\"t\">{2}</div><div class=\"c\">{3}</div><div class=\"tit\">{4}</div>" +
"<div class=\"rig\">{5}</div><div class=\"ma\">{6}</div></div>", DAL.SiteDesign.mt(), DAL.SiteDesign.mc(), DAL.SiteDesign.t(), DAL.SiteDesign.c(), DAL.SiteDesign.titlebar()
, DAL.SiteDesign.right(), DAL.SiteDesign.MenuA());
litDesign.Text = si;
توجه کن که متد TitleBar از کلاس SiteDesign در لایه Dal به این شکل پیاده شده و همچنین بقیه متدها
public static string titlebar()
{
DataSet d = new DataSet();
d = ExecuteDataset(CommandType.Text, "select *from tblDesign where ClassName='titleBar'");
string s = d.Tables[0].Rows[0]["BgColor"].ToString();
d.Dispose();
return s;
}
که مقدار فیلد BgColor رکوردی که ClassName ش برابر titlebar هست میره تو div ی که کلاس سی اس اسش برابر tit هست
<div class=\"tit\">{4}</div>
توجه کن که کلاس سی اس اس این div برابر tit تنظیم شده که تو جی کوئری باهاش کار داریم
نتیجه دستورات فوق ممکنه چیزی شبیه این شه
<div style="display: none;">
<div class="mt">
#FFF3346</div>
<div class="mc">
</div>
<div class="t">
#CCddAA</div>
<div class="c">
</div>
<div class="tit">#CCddAA</div>
<div class="rig">
</div>
<div class="ma">
</div>
</div>
خب حالا جی کو ئری
$(document).ready(function () {
var mt = $("div.mt").html();
var mc = $("div.mc").html();
var t = $("div.t").html();
var c = $("div.c").html();
var tit = $("div.tit").html();
var rig = $("div.rig").html();
var ma = $("div.ma").html();
if (t !== "") {
$('#Toolbar').css("background", t);
}
if (mt != "") {
$("div.MenuTitle").css("background", mt);
}
if (mc != "") {
$("div.InternalDetail").css("background", mc);
}
if (c != "") {
$("div.Part").css("background", c);
}
if (tit != "") {
$("div.titleBar").children("div.right").css("background", tit);
$("div.titleBar").children("div.left").css("background", tit);
}
if (rig != "") {
$('#content').children("div.right").css("background", rig);
}
if (ma != "") {
$('#Toolbar').children("div.inner").children('a').css("background", ma);
}
});
امیدوارم که خوب مطلب رو رسونده باشم
مشکلی بود بازم بپرس
موفق باشید.
مرسی بابت پاسخی که دادین
بسیار عالی
کار کرد و درست جواب داد:لبخندساده:
sh-eng
شنبه 02 دی 1391, 16:10 عصر
سلام
اینو متوجه نشدی
البته این فقط روش پیشنهادی من بود و خوب هم جواب میده
مثلا من یک لیترال گذاشتم به اسم LitDesign و تو پیج لود مستر پیج اینو با یکسری div ها پرش میکنم که هر div محتویات داخلش میگه که رنگ فلان قسمت سایت چی باشه
اینجوری
string si = "";
si = string.Format("<div style=\"display:none;\"><div class=\"mt\">{0}</div><div class=\"mc\">{1}</div><div class=\"t\">{2}</div><div class=\"c\">{3}</div><div class=\"tit\">{4}</div>" +
"<div class=\"rig\">{5}</div><div class=\"ma\">{6}</div></div>", DAL.SiteDesign.mt(), DAL.SiteDesign.mc(), DAL.SiteDesign.t(), DAL.SiteDesign.c(), DAL.SiteDesign.titlebar()
, DAL.SiteDesign.right(), DAL.SiteDesign.MenuA());
litDesign.Text = si;
توجه کن که متد TitleBar از کلاس SiteDesign در لایه Dal به این شکل پیاده شده و همچنین بقیه متدها
public static string titlebar()
{
DataSet d = new DataSet();
d = ExecuteDataset(CommandType.Text, "select *from tblDesign where ClassName='titleBar'");
string s = d.Tables[0].Rows[0]["BgColor"].ToString();
d.Dispose();
return s;
}
که مقدار فیلد BgColor رکوردی که ClassName ش برابر titlebar هست میره تو div ی که کلاس سی اس اسش برابر tit هست
<div class=\"tit\">{4}</div>
توجه کن که کلاس سی اس اس این div برابر tit تنظیم شده که تو جی کوئری باهاش کار داریم
نتیجه دستورات فوق ممکنه چیزی شبیه این شه
<div style="display: none;">
<div class="mt">
#FFF3346</div>
<div class="mc">
</div>
<div class="t">
#CCddAA</div>
<div class="c">
</div>
<div class="tit">#CCddAA</div>
<div class="rig">
</div>
<div class="ma">
</div>
</div>
خب حالا جی کو ئری
$(document).ready(function () {
var mt = $("div.mt").html();
var mc = $("div.mc").html();
var t = $("div.t").html();
var c = $("div.c").html();
var tit = $("div.tit").html();
var rig = $("div.rig").html();
var ma = $("div.ma").html();
if (t !== "") {
$('#Toolbar').css("background", t);
}
if (mt != "") {
$("div.MenuTitle").css("background", mt);
}
if (mc != "") {
$("div.InternalDetail").css("background", mc);
}
if (c != "") {
$("div.Part").css("background", c);
}
if (tit != "") {
$("div.titleBar").children("div.right").css("background", tit);
$("div.titleBar").children("div.left").css("background", tit);
}
if (rig != "") {
$('#content').children("div.right").css("background", rig);
}
if (ma != "") {
$('#Toolbar').children("div.inner").children('a').css("background", ma);
}
});
امیدوارم که خوب مطلب رو رسونده باشم
مشکلی بود بازم بپرس
موفق باشید.
یکی اینو توضیح بده لطفا،الان میشه تو تگ ها چیزای دیگه ای هم نوشت؟اصل کار با jquery درسته؟ من string format رو نمی فهمم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.