Показать полную графическую версию : Автоизменение темы.
у меня на сайте например есть несколько тем, как сделать так чтобы они ставились случайно при каждом заходе на сайт, т.е. один вошел у него такая тема потом вошел друггой, а у него другая. Можно применять php, javascript.
Что Вы подразумеваете под словом "тема"? Строка? или графическое оформление?
проверю свою навыки телепатии и предположу что имеется ввиду графическое оформление.
Мой вариант решения проблемы на PHP.
1. Создаем массив со всеми необходимыми нам элементами дизайна:
$tpl['name_of_design_part'][id] = "путь к изображению";
name_of_design_part - название части дизана например menu_item,top,logo и т.д. и т.п.
2. в начале страницы запускаем генератор случайных чисел и выбираем id, записываем его в переменную $rid
$rid=rand(0,max_ids) ;
max_ids - максимальное количество дизайнов(т.е. кол-во элементов массива)
3. В дизайне каждую изменяемую картинку описываем ввиде:
<img src=<?=$tpl['name_of_design_part'][$rid]?>>
Полный "собранный" пример:
<?
$tpl[top][0]="top0.jpg";
$tpl[top][1]="top1.jpg";
$tpl[top][2]="top2.jpg";
$tpl[left][0]="left0.jpg";
$tpl[left][1]="left1.jpg";
$tpl[left][2]="left2.jpg";
$tpl[right][0]="right0.jpg";
$tpl[right][1]="right1.jpg";
$tpl[right][2]="right2.jpg";
$rid=rand(0,2) ;
?>
<html>
<body>
<table>
<tr>
<Td colspan=2>
<img src=<?=$tpl['top'][$rid]?>
</tr>
<tr>
<td><img src=<?=$tpl['left'][$rid]?>
<td><img src=<?=$tpl['right'][$rid]?>
</tr>
<tr>
<td colspan=2>
<img src=<?=$tpl['bottom'][$rid]?>
</tr>
</body>
</html>
XCodeR
Большое спасибо. всё верно поняли!
А вот такой впорос:
Еслия это всё запихну в header.php, а при переходе пользвателя на другую страницу оформление может скорей всего смениться.
Как сделать так чтобы оформление выбиралось только при заходе на сайт и не менялось пока пользователь не закроет блаузер?
Мне кажеться что для это нужно каждому пользователю открывать сессию, в которой будет храниться текущая тема.
Prisoner
06-09-2006, 19:10
Достаточно сохранять идентификатор темы в кукисах, сессия для этого - громоздкое оружие. Конечно имя темы в куках надо будет проверять с точки зрения безопасности.
Strange_V
06-09-2006, 19:13
Или открывать сессию или передавать Get параметр.
И первое и второе имеет свои недостатки…
Можно просто ставить куки, но это почти та же сессия.
Ладно, всё понятно, буду скорей всего делать через куку и придеться ее фильтровать!
Prisoner
07-09-2006, 00:04
Strange_V, э нет, "не таже" и не "почти". Для сессии кукис это по сути "транспорт". Сессия это именованная идентификатором область данных (в файловой системе, базе данных и т.д. в зависимости от обработчиков сессий) с одной общей чертой - область находится на стороне сервера. кукис же - на стороне клиента. В общем случаем в кукисах (если выбран этот способ хранения идентификатора сессии) хранится указатель на сессию.
В данном случае гораздо проще хранить строку или число идентификатора темы в кукисах, нежели хранить в них ссылку на сессию в которой хранится этот идентификатор.
Strange_V
07-09-2006, 00:58
2Prisoner Полностью согласен.
Только нужно не забывать что куки в пользователя могут бить отключены... хотя это не смертельно (ну не будут у него рендом тем…)
Будет у него рендом, только при открытии новой страници, будет новая тема, ну или при попаданиии еще раз на главную.
Strange_V
07-09-2006, 22:24
IMHO, это не правильно.
Я захожу на главную (куки откл.) мне рендомится тема, перехожу по какой-то ссылке (идентификатор не передается), а там другая тема… не красиво.
По этому если куки отключены, лучше грузить тему по умолчанию.
Тогда можно использовать сессию. Для каждого пользователя открыавать сессию и с помощью ее передовать индикатор темы. После закрытия блаузера сессия изчезает, если юзер зайдет еще раз на сайт он уже получит новую тему на данный сеанс. Вроде так можно.
Strange_V
08-09-2006, 19:15
Можно но...
Лично я сделел бы куками, а если отключены - грузил бы тему по умолчанию.
(смена тем это же просто дополнительная фича...)
А чем же так плохи сессии?
Prisoner
09-09-2006, 00:21
Ничем. Более того - они просто жизненно необходимы. Но не везде :). Вот скажите, Вы курите? Даже если и нет, то как часто вы видили, что сигарету поджигают с помощью паяльной лампы предварительно ее разогрев? Наверное не часто. Тормозящий момент тут - геморрои в возьне с оборудованием. В программировании все проще ввиду нематериальности мира как данности. Вот и получается, что порой такое напрограммируешь, что на утро единственное картина приходящая в голову при виде своего же кода это картина маслом и сыром "удаление гланд через заднепроходный канал автогеном" :). Но это все лирика. Ответом на Ваш вопрос будет одно слово - производительность. Ну быть может еще и логика. Зачем таскать от страницы к странице указатель на данные (идентификатор темы), каждый раз заставлять скрипт отрывать сессию по указателю пришедшему из броузера, лезть в файл сессии и уже там брать данные. Ведь достаточно в самой куке просто и надежно все хранить. Поверьте, если Вам вдруг повезет на человека который отключил все кукисы, то такому человеку тем более не нужны Ваши распростертые объятия в виде нескольких цветовых оформлений :).
Ладно понятно, псомотрим что там можно будет сделать.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC