Сайт сообщества | Клуб пользователей | О проекте

Имя
Пароль
ПравилаРегистрацияСправка
Сообщения за деньПоиск

Вернуться   Клуб пользователей портальной системы RUNCMS > Опен Ресурс > Разработчикам > Готовые хаки

 
 
Опции темы Опции просмотра
Zormax вне форума Zormax
Старожил

Аватар для Zormax

| Цитировать Старый #1 03-30-2005, 16:39

Зайдите ко мне на сайт на главной, справа увидите блок "Выбор темы"...
Хотите такой?

Начнем:

Создаем собственный блок, выставляем ему видимость, расположение и тип контента как 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 но всё же...

Последний раз редактировалось Zormax, 04-02-2005 в 20:09
Причина: Изменение кода


Всё для Sony Ericsson
Посетить домашнюю страницу Zormax
  Сообщения: 2,424 c 15.05.2004 | Репутация: 149
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Рейтинг@Mail.ru Хостинг провайдер Majordomo. Powered by: vBulletin Version 3.0
Copyright ©2000-2024, Jelsoft Enterprises Ltd.
Все разделы прочитаны - Руководство форума - Архив - Вверх
Rambler's Top100
Output: 305.07 Kb. compressed to 303.33 Kb. by saving 1.74 Kb. (0.57%)
Page generated in 0.24863 seconds with 12 queries