PDA

View Full Version : انتخاب رنگ بک گراند توسط دکمه (حل شد)



پیام حیاتی
جمعه 10 خرداد 1392, 21:22 عصر
سلام
می خوام در صفحه اصلی سایت index.php چند دکمه برای انتخاب و تغییر رنگ بک گراند قرار بدم چطور باید این کارو انجام بدم؟

http://joomlaforum.ir/upload/do.php?imgf=joomlaforum.ir_13700213791.png

تشکر

mamali-mohammad
جمعه 10 خرداد 1392, 21:41 عصر
این عمل با css و jquery باید انجام بشه
ربطی به php نداره

webdesign2
جمعه 10 خرداد 1392, 21:44 عصر
سلام دوست عزیز این کارو جاوا میکنه که تو سایتها هست و اینم یه نمونه از کارها لینک (http://psdworld.ir/7615/%DA%A9%D8%AF-%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1-%D8%B1%D9%86%DA%AF-%D8%A8%DA%A9-%DA%AF%D8%B1%D8%A7%D9%86%D8%AF-%D9%87%D9%85%D8%B1%D8%A7%D9%87-%D8%A8%D8%A7-%D8%AF%D9%85%D9%88-%D8%A2%D9%86%D9%84%D8%A7%DB%8C.html)

mhbitarafan
جمعه 10 خرداد 1392, 22:13 عصر
سلام دوست عزیز
این کار با جاوا اسکریپت به سادگی انجام میشه
مثلا اینجوری:
چند تا button میسازی بعد روی ایونت onclick آنها اینو مینویسی (در واقع این تابع رو صدا میزنی)
onclick="sabz();"
بعد میای داخل کد های جاوا اسکریپت این تابع رو تعریف میکنی
اینجوری :
function sabz(){
x=document.getElemanById("body");
x.style.background="#232;"

mhbitarafan
جمعه 10 خرداد 1392, 22:15 عصر
نمونه اش :
mhb.vvs.ir

پیام حیاتی
جمعه 10 خرداد 1392, 22:19 عصر
این عمل با css و jquery باید انجام بشه
ربطی به php نداره
عجب ، این کار در ASP.NET به راحتی انجام پذیره.
مگر زیان PHP برای سایت های داینامیک تعبیه نشده که مهمترین مزیت این سایت ها تعامل با کاربر هست آیا این تعامل فقط در فرم ها و ارتباط با پایگاه داده خلاصه میشه؟!
این چه زبانیست که قدرت تغییر بک گراند سایت رو هم نداره و مدام باید با زبان های دیگه ترکیب بشه؟

MMSHFE
جمعه 10 خرداد 1392, 22:26 عصر
با PHP هم میتونید این کار رو انجام بدین. کافیه اون دکمه ها، لینک به صفحه ای باشن که خاصیت رنگ رو توی سشن تنظیم میکنه. برای مثال:


<a href="color.php?c=red">Red</a>
<a href="color.php?c=green">Green</a>
<a href="color.php?c=blue">Blue</a>
<a href="color.php?c=white">White</a>

کد صفحه color.php :


<?php
session_start();
if(isset($_GET['c'])) {
$_SESSION['color'] = htmlentities($_GET['c']);
}
header('Location: ' . (!empty(isset($_SERVER['HTTP_REFERER'])) ? $_SERVER['HTTP_REFERER'] : 'index.php'));
exit();
?>

و توی صفحات سایتتون، قالب رو به این شکل مشخص کنید:

<link href="style.php" rel="stylesheet" type="text/css" />
و کدی که توی فایل style.php مینویسید:


<?php
header('Content-Type: text/css');
if(!isset($_SESSION)) {
session_start();
}
if(!isset($_SESSION['color'])) {
$_SESSION['color'] = 'white';
}
echo <<<EOT
body {
background-color: {$_SESSION['color']};
}

EOT;
?>

امتیاز اصلی این روش در اینه که وقتی رنگ تعیین شد، تا وقتی که تغییر نکرده، توی تمام صفحات سایت به همون شکل باقی میمونه ولی با JS باید توی هر صفحه مجدداً تنظیمش کنید. البته مباحث امنیتی هم باید لحاظ بشه (مثل Escapeکردن ورودی کاربر که توی color.php انجام شده).

MMSHFE
جمعه 10 خرداد 1392, 22:31 عصر
عجب ، این کار در ASP.NET به راحتی انجام پذیره.
مگر زیان PHP برای سایت های داینامیک تعبیه نشده که مهمترین مزیت این سایت ها تعامل با کاربر هست آیا این تعامل فقط در فرم ها و ارتباط با پایگاه داده خلاصه میشه؟!
این چه زبانیست که قدرت تغییر بک گراند سایت رو هم نداره و مدام باید با زبان های دیگه ترکیب بشه؟
دوست گرامی، توی ASP.NET هم این کارها با همون زبانهای دیگه مثل HTML و CSS و JS و... انجام میشه منتها از اونجا که همه کارها رو بطور خودکار برای شما انجام میده، خبر ندارین که اون پشت چه اتفاقی میفته و فکر میکنید با همون چندتا کلیک، خود ASP.NET داره این کارها رو برای شما انجام میده.

پیام حیاتی
جمعه 10 خرداد 1392, 22:32 عصر
ممنون از پاسخ کاملتون.

engmmrj
جمعه 10 خرداد 1392, 22:39 عصر
کار <<<EOT و EOT ؟

MMSHFE
جمعه 10 خرداد 1392, 22:56 عصر
به این ساختار میگن HereDoc که توی اون، بعد از echo سه بار علامت کوچکتر رو میگذارین و بلافاصله یک عبارت رو بعنوان Delimiter مشخص میکنید. بعد هرچی میخواین نوشته بشه رو توی سطرهای بعدی بصورت عادی مینویسید و دیگه نیازی نیست برای هرکدوم جداگانه echo و کوتیشن و... رو بنویسید. پایان عبارتی که echo باید چاپ کنه هم با همون عبات Delimiter در ابتدای سطر و بلافاصله کارکتر سمی کالن (;) مشخص میشه (البته وجود ; اختیاریه).

etio0098
یک شنبه 10 شهریور 1392, 20:42 عصر
این چه زبانیست که قدرت تغییر بک گراند سایت رو هم نداره و مدام باید با زبان های دیگه ترکیب بشه؟
سلام اولا دوستانی که به شما پاسخ دادند میخواستن راحترین راه رو بگن در ثانی متشکرم از مدیر بخش که بیطرف به شما جواب دادن ثالثا مگه ترکیب زبان ها بده؟ مایکروسافت تازه تو استور دار جاوا رو میاره اون وقت شما به این میگین ضعف این نقطه قوتی برای پی اچ پی که اینقدر منعطف هست و هر وبمستری میتونه با اون کار کن امیدوارم نارحت نشید:لبخندساده:

AliRezaPro
دوشنبه 11 شهریور 1392, 00:38 صبح
با PHP هم میتونید این کار رو انجام بدین. کافیه اون دکمه ها، لینک به صفحه ای باشن که خاصیت رنگ رو توی سشن تنظیم میکنه. برای مثال:


<a href="color.php?c=red">Red</a>
<a href="color.php?c=green">Green</a>
<a href="color.php?c=blue">Blue</a>
<a href="color.php?c=white">White</a>

کد صفحه color.php :


<?php
session_start();
if(isset($_GET['c'])) {
$_SESSION['color'] = htmlentities($_GET['c']);
}
header('Location: ' . (!empty(isset($_SERVER['HTTP_REFERER'])) ? $_SERVER['HTTP_REFERER'] : 'index.php'));
exit();
?>

و توی صفحات سایتتون، قالب رو به این شکل مشخص کنید:

<link href="style.php" rel="stylesheet" type="text/css" />
و کدی که توی فایل style.php مینویسید:


<?php
header('Content-Type: text/css');
if(!isset($_SESSION)) {
session_start();
}
if(!isset($_SESSION['color'])) {
$_SESSION['color'] = 'white';
}
echo <<<EOT
body {
background-color: {$_SESSION['color']};
}

EOT;
?>

امتیاز اصلی این روش در اینه که وقتی رنگ تعیین شد، تا وقتی که تغییر نکرده، توی تمام صفحات سایت به همون شکل باقی میمونه ولی با JS باید توی هر صفحه مجدداً تنظیمش کنید. البته مباحث امنیتی هم باید لحاظ بشه (مثل Escapeکردن ورودی کاربر که توی color.php انجام شده).

وقتی با jQuery و CSS با 4 خط کد قابل پیاده سازی است , چرا از این راه حل ؟

MMSHFE
سه شنبه 12 شهریور 1392, 09:05 صبح
وقتی با jQuery و CSS با 4 خط کد قابل پیاده سازی است , چرا از این راه حل ؟
جواب شما رو توی خود پست قبلاً گفتم:

امتیاز اصلی این روش در اینه که وقتی رنگ تعیین شد، تا وقتی که تغییر نکرده، توی تمام صفحات سایت به همون شکل باقی میمونه ولی با JS باید توی هر صفحه مجدداً تنظیمش کنید. البته مباحث امنیتی هم باید لحاظ بشه (مثل Escapeکردن ورودی کاربر که توی color.php انجام شده).

AliRezaPro
سه شنبه 12 شهریور 1392, 12:39 عصر
جواب شما رو توی خود پست قبلاً گفتم:

با jQ هم میشود , کتابخانه ی اماده ی jQ هم براش هست , jQ نیاز به ریلود نیست , دلیل دیگه ؟

MMSHFE
سه شنبه 12 شهریور 1392, 13:15 عصر
دوست عزیز، منظورم اینه که اگه رنگ توی Session یا کوکی ذخیره نشه و موقع بازشدن صفحه، رنگ فعال رو از سشن نخونیم، وقتی از یک صفحه به صفحه بعد میریم، رنگ دوباره به پیشفرض برمیگرده. حالا اینکه چطور توی Session و کوکی ذخیره بشه، دست خودمونه و میتونیم درصورت تمایل از jQuery یا هر روش دیگه استفاده کنیم.