| |
|
|
| | Нуждаюсь в вашей помощи помочь мне со сменой скина. Есть 4 файла со скинами (2 скина) (в каждом скине как всегда по 2 файла: начало и конец для вставки файл)
Допустим есть файл index.php и 4 файла со скинами:
<?php
include "../../tems/1/start.php";
echo 'Сменить скин<br />
<select size="1" name="tems">
<option value="t1">Тема 1</option>
<option value="t2">Тема 2</option>
</select>';
include "../../tems/1/end.php";
?>
Не могу понять как темы менять, я так понимаю в include надо 2 переменные вписывать, а что бы переменные сделать надо еще и условия сделать на переменные (типа если первую тему выбрали значит переменные работают как start и end, а если вторую значит типа как start2 и end2 и надо еще чтоб select работал. Вобщем мне очень тяжело разобраться. Очень нуждаюсь в вашей помощи. | |
| |
|
|
| |
|
|
| |
для: Санька
(31.10.2007 в 22:15)
| | | обычно так наверное
<?
include '../../tems/' . $skin . '/start.php';
// ...............
include '../../tems/' . $skin . '/end.php';
|
только перед этим надо проверку $skin получше сделать , сначала его intval()
а потом ещё проверить что-бы не больше не меньше было разрешённого | |
| |
|
|
| |
|
|
| |
для: EXP
(31.10.2007 в 22:57)
| | | Простую переменную то я и сам могу поставить, только что от нее толку. Нужно условие проверки на переменную (какая папка выберается) и select заставить работать. | |
| |
|
|
| |
|
|
| |
для: Санька
(31.10.2007 в 22:15)
| | | простейшее если на сессиях
<?php
session_start() ;
if (isset($_POST['tems'])) {
$tems = (int) $_POST['tems'] ;
$tems = ($tems < 1 || $tems > 2) ? 1 : $tems ; // если неправильный
$_SESSION['tems'] = $tems ;
} else {
$tems = (isset($_SESSION['tems'])) ? (int) $_SESSION['tems'] : 1 ; // по умолчанию 1
}
include "../../tems/$tems/start.php";
echo 'Сменить скин<br />
<select size="1" name="tems">
<option value="1">Тема 1</option>
<option value="2">Тема 2</option>
</select>';
include "../../tems/$tems/end.php";
?>
| на куках придётся делать переадресацию при смене | |
| |
|
|
| |
|
|
| |
для: EXP
(01.11.2007 в 00:05)
| | | Что то не работает, куча ошибок только вылазиет. Я так понимаю вместо всех цифр (1,2) нужно название папок со скинами вписывать, это так? Мне этот код в каждую страницу что ли вписывать? У меня их оеей. Так как быть со:
<select size="" name="">
<option value="">1</option>
... и так далее, этот код ведь не щелкается, ссылок то нет (что еще в нем надо дописать и куда ссылки вставлять?) Вот эти вопросы у меня единственные болезненные :) до последнего момента пытался врубится в это, но не как не получается. | |
| |
|
|
| |
|
|
| |
для: Санька
(01.11.2007 в 01:02)
| | | :)
я так предположил что у вас уже есть ../../tems/1/end.php и ../../tems/1/start.php и папка /2/ тоже ,
потому так и спрашивалось .
чесно сказать я незнаю где вам сделать форму и добавить в неё
<form method=post> и </form> ))
что преполагается разместить в start.php из всех папок со скинами(темами) ?
// у меня всего четыре ошибки и все Warning: include(.*): | |
| |
|
|
| |
|
|
| |
для: EXP
(01.11.2007 в 02:12)
| | | Чесно говоря не хрена не понял, что написали. :( | |
| |
|
|
| |
|
|
| |
для: Санька
(01.11.2007 в 06:12)
| | | я спросить просто хотел чем будет отличаться сгенерированная страница в зависимости от выбранного того или другого скина .
вариантов того что может меняться при включении разных файлов start.php масса.
от простого изменения например <link type="text/css" rel="stylesheet" href="..." />,
всмысле стиля страницы(), до полностью другого способа её генерации.
а изменять все файлы в которых предпологается возможность смены скинов придётся наверное при таком включении сразу двух файлов с меняющимися адресами.
или хотябы скриптом надставить в каждый по несколько строк ,если только в них уже не находится в самом начале например include("../header.php");
в последнем случае даже можно попробовать обойтись только изменением этого header.php, но тогда куда вставить форму для выбора тоже зависит от того что в таком файле.
такие вот например несколько способов , если не вдаваться в разные способы возможности передачи переменной содержащей выбор какие из файлов надо включать | |
| |
|
|
| |
|
|
| |
для: EXP
(01.11.2007 в 13:01)
| | | В скине допустим, начало start.php в нем <? <html>и т.д и css в нем же <stile> и т.д ?>, а в коцовке end.php закрывающиеся все теги <? </div></html> ?>
Это готовый скин вставляется во все страницы сайта допустим index.php
<?
include "tems/'.$skin.'/start.php";
echo 'hello';
include "tems/'.$skin.'/end.php";
?>
Нужно вставить формы во все скины чтоб при открытии любой стр. в верху можно было сменить тдму, но надо чтоб смена еще пахала и при этом когда скин сменил и перешел на др. .страницу скин не сбился. Видите как на этом форуме скин, так же надо. Я знал что это большая и болезненая тема не хотел ее поднимать, но выбора нет сайт без смены скинов это не сайт, браузеры все разные, тем более моторы я не хочу терять. Вобщем я придчувствовал что проблему не решим, я слова нефига подобрать не могу, как объяснить когда представление туманное. Профи вы что все вымерли емае, такая практически безвыходная ситуачия. | |
| |
|
|
| |
|
|
| |
для: Санька
(01.11.2007 в 15:06)
| | | А чем должен отличаться друг от друга тот или иной скин, только стилем? Ну меняйте тогда CSS, зачем остальное трогать. Если разговор о нечто большем идет, то это уже шаблоны, значит надо просто менять путь к ним, так как выше у вас прописано. Но в чем проблема при этом? | |
| |
|
|
| |
|
|
| |
для: Санька
(01.11.2007 в 15:06)
| | | тогда такая ещё неувязка получается:
у вас как вы говорите уже есть ойойой какая куча файлов ,
в них если уже есть в каждом <html><head>........ , то в любом случае придётся всё перелопатить.
тот способ на сессиях который я предлагал запоминает выбранный скин на время жизни сессии
, что может постоянно сбрасывать выбранные настройки при неделании переходов в течении этого времени если оно минут 15 , как бывает.
на softtime название выбранного скина записывается в cookie и браузер каждый раз его посылает, но зато запоминается на то время которое поставить .
при том что вывод шапки делает файл start.php , форму выбора лучше сделать в нём.
но остальной код должен быть до того как он включается, тут два варианта , включать файл с ним
или непосредственно записать его в каждый файл который выводит что-либо.
я-бы сделал в начале всех файлов include($_SERVER['DOCUMENT_ROOT'] . '/header.php'); например , а уже в header.php все настройки , получение , отсылку заголовков, и включение start.php.
//
даже не так ,
сделал-бы пару функций вывода шапки и окончания , которые вызывал-бы на страницах | |
| |
|
|
| |
|
|
| |
для: EXP
(01.11.2007 в 18:45)
| | | Да я пробывал, не пашет, еще и одна ошибка вылазиет. Пробую разные варианты. | |
| |
|
|
| |
|
|
| |
для: Санька
(01.11.2007 в 21:19)
| | | вот рабочий пример с использованием сессий
<?php
session_start() ;
if (isset($_POST['tems'])) {
$tems = (int) $_POST['tems'] ;
if ($tems < 1 || $tems > 2) $tems = 1 ; // если неправильный
$_SESSION['tems'] = $tems ;
} else {
$tems = (isset($_SESSION['tems'])) ? (int) $_SESSION['tems'] : 1 ; // по умолчанию 1
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>test</title>
<style>
.d { width: 90%; }
<?php
if ($tems == 1) echo '.d { background: #888888; font-size: 28px; }' . "\n" ;
if ($tems ==2 ) echo '.d { background: #ffff55; font-size: 56px; color: red; }' . "\n" ;
?>
</style>
<script type="text/javascript">
function dataSelect(f) {
n = f.hero.selectedIndex
if(n) alert("Выбран герой: " + f.hero.options[n].value + " ???")
}
</script>
</head>
<body>
<form action="" method="post">
Сменить скин<br />
<select size="1" name="tems">
<option value="1">Тема 1</option>
<option value="2">Тема 2</option>
</select>
<input type="submit" value="set">
</form>
выберете кто симпатишнее
<form action="" method="post">
<select name="hero" size="1">
<option>Выберите героя</option>
<option value="Чебурашка">Чебурашка</option>
<option value="Крокодил Гена">Крокодил Гена</option>
<option value="Шапокляк">Шапокляк</option>
<option value="Крыса Лариса">Крыса Лариса</option>
</select>
<input type="submit" value="OK" onClick="dataSelect(this.form)">
</form>
<?php
$hero = (isset($_POST['hero'])) ? htmlspecialchars($_POST['hero']) : 'никто не выбран';
$hero .= ($tems == 1) ? ' :(' : ' :) ' ;
echo '<div class="d">' . $hero . '</div>' ;
?>
</body>
</html>
| :) только не нашёл на чём применить кроме как на примере из учебника | |
| |
|
|
| |
|
|
| |
для: EXP
(02.11.2007 в 00:06)
| | | Вобщем сделал но по другому, при выборе тем я просто поставил чтобы стиль менялся для этого сделал 1.php и 2.php
И прописал условие
if($tems==1) include"1.php"; и т.д | |
| |
|
|
| |
|
|
| |
для: EXP
(02.11.2007 в 00:06)
| | | При переходе на другую страницу тема остается та которую выбрали, но в форме скидывается на самую первую, как сделать чтоб так которую выбрали оставалась в форме? | |
| |
|
|
| |
|
|
| |
для: Санька
(02.11.2007 в 10:44)
| | | можно хотя-бы так
<?php
session_start() ;
if (isset($_POST['tems'])) {
$tems = (int) $_POST['tems'] ;
if ($tems < 1 || $tems > 2) $tems = 1 ; // если неправильный
$_SESSION['tems'] = $tems ;
} else {
$tems = (isset($_SESSION['tems'])) ? (int) $_SESSION['tems'] : 1 ; // по умолчанию 1
}
$select = array('', '', '') ;
$select[ ($tems) ] = 'selected ' ;
?>
<form action="" method="post">
Сменить скин<br />
<select size="1" name="tems">
<option value="1" <?php echo $select[1] ?>>Тема 1</option>
<option value="2" <?php echo $select[2] ?>>Тема 2</option>
</select>
<input type="submit" value="set">
</form>
| но даже в таком простом есть масса вариантов как сделать.
например здесь сначала проверяется ($_POST['tems']), потом $_SESSION['tems'], хотя ($_POST['tems']) посылается только один раз. можно например сделать отдельный файл
и проверять $_POST['tems'] только в нём, как например так с использованием cookie
<?php
$tems = (isset($_COOKIE['tems'])) ? (int) $_COOKIE['tems'] : 1 ; // по умолчанию 1
if ($tems != 2) $tems = 1 ; // если неправильный
$select = array('', '', '') ;
$select[ ($tems) ] = 'selected ' ;
?>
<form action="deliver.php" method="post">
<input type="hidden" name="back" value="<?php echo $_SERVER['REQUEST_URI']?>">
Сменить скин<br />
<select size="1" name="tems">
<option value="1" <?php echo $select[1] ?>>Тема 1</option>
<option value="2" <?php echo $select[2] ?>>Тема 2</option>
</select>
<input type="submit" value="set">
</form>
|
deliver.php
<?php
if (isset($_POST['tems'])) {
$tems = (int) $_POST['tems'] ;
if ( $tems == 2) setcookie('tems', 2, time() + (3600 * 5), '/' ) ; // влепление в cookie на 5 суток
else setcookie('tems', '2', time() - 3600, '/') ; // деактуализация :)
}
?>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta http-equiv="Refresh" content="0; url=<?php echo htmlspecialchars($_POST['back']) ?>"/>
</head><body>
секундочку
</body></html>
|
| |
| |
|
|
| |
|
|
| |
для: EXP
(02.11.2007 в 15:41)
| | | Когда вставляю $select=array(",","); юзает ошибка Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, еxpecting T_STRING or T_VARIABLE or T_NUM_STRING
а когда $select=[('$tems')]='selected';
Юзает 2 ошибки Notice: Undefined offset | |
| |
|
|
| |
|
|
| |
для: Санька
(02.11.2007 в 16:43)
| | | проверь , кажется пробел затесался между $ и select.
во втором случае из-за того что необъявляется массив | |
| |
|
|
| |
|
|
| |
для: EXP
(02.11.2007 в 17:00)
| | | Пробелов нет. | |
| |
|
|