Зайдите ко мне на сайт на главной, справа увидите блок "Выбор темы"...
Хотите такой?
Начнем:
Создаем собственный блок, выставляем ему видимость, расположение и тип контента как
PHP.
Код нашего блока:
PHP код:
global $xoopsConfig;
$path = XOOPS_ROOT_PATH."/themes";
$d = dir($path);
while ($entry = $d->read()) {
if (($entry != ".") && ($entry != "..") && ($entry != "index.html")) {
$theme_list[] = $entry;
}
}
echo "
<div align='center'><br>
<form name='theme_select' method='post' action='./index.php'>
<select name='theme' onchange='submit()'>";
$curr_theme = getTheme();
natcasesort($theme_list);
foreach ($theme_list as $value) {
if ($value == $curr_theme) { $chk = " selected='selected'"; } else { unset($chk); }
echo "<option value='$value'$chk>$value</option>";
}
echo "
</select><br />
<script type='text/javascript'>
function switchTheme(value) {
document.theme_select.theme.options.selectedIndex = document.theme_select.theme.options.selectedIndex + value;
document.theme_select.submit();
}
document.write('<br><b>' + document.theme_select.theme.options.length + '</b>');
</script>
Темы (а)
</form></div>";
Далее заходим в корневую папку
include находим файл
functions.php, открываем его и находим функцию:
function getTheme() {
Всю функию приводить здесь не буду, скажу
нам надо её заменить полностью на нашу функцию (код ниже):
PHP код:
function getTheme($theme="") {
global $xoopsConfig, $xoopsUser, $theme, $HTTP_POST_VARS, $HTTP_COOKIE_VARS;
// START INSERT
if ( !empty($HTTP_POST_VARS['theme']) && !defined("theme") ) {
$value = $HTTP_POST_VARS['theme'];
header("Set-Cookie: theme=$value; 0; path=/");
define("theme", $value);
return $value;
} elseif ( !empty($HTTP_COOKIE_VARS['theme']) && !defined("theme") ) {
define("theme", $HTTP_COOKIE_VARS['theme']);
return theme;
} else if ( defined("theme") ) {
return theme;
}
// END INSERT
$themedir = XOOPS_ROOT_PATH."/themes";
if ($xoopsUser) {
$theme = $xoopsUser->getVar("theme");
} else {
return $xoopsConfig['default_theme'];
}
if ( @file_exists("$themedir/$theme/theme.php") ) {
return $theme;
} else {
return $xoopsConfig['default_theme'];
}
}
Типа тестим...
Естественно вам надо иметь хотя бы две темы, чтобы был выбор для юзера...
Замечу, что после выбора темы, она запоминается в кокиес пользователя и неважно зарегистрирован он или просто гость...
Просьба спецов по PHP внимательно протестировать код самой функции, я хоть и шарю в PHP но всё же...