Выбор шаблона из профиля

Zenden

Пользователь
#1
Автор: Zenden (хотя тут сплошной копипаст):)
Описание: Позволяет выбирать тему оформления из профиля пользователя.

Выполнить запросы
PHP:
ALTER TABLE `bb_users` ADD `user_tpl` varchar(11) NOT NULL default 'default';
открыть functions_select.php в самом низу добавить
PHP:
function tpl_select($default_style, $select_name = "style", $dirname = "templates")
{
global $bb_cfg, $userdata;

$tpl_select = '<select name="' . $select_name . '">';

foreach ($bb_cfg['tpl_name'] as $tpl_name)
{
$selected = ( $tpl_name == $default_style ) ? ' selected="selected"' : '';
$tpl_select .= '<option value="' . $tpl_name . '"' . $selected . '>' . $tpl_name . '</option>';
}
$tpl_select .= "</select>";

return $tpl_select;
}
Открыть usercp_register.php
найти
PHP:
'user_lang'        => true,
ниже добавить
PHP:
'user_tpl'          => true,
найти
PHP:
'user_opt' => 0,
ниже добавить
PHP:
'user_tpl'        => $bb_cfg['tpl_name'],
найти
PHP:
'user_avatar_type' => true,
ниже добавить
PHP:
'user_tpl'        => true,
найти
PHP:
 case 'user_lang':
$user_lang = isset($_POST['user_lang']) ? (string) $_POST['user_lang'] : $pr_data['user_lang'];
if ($submit && ($user_lang != $pr_data['user_lang'] || $mode == 'register'))
{
$pr_data['user_lang'] = $user_lang;
$db_data['user_lang'] = $user_lang;
}
break;
ниже добавить
PHP:
 case 'user_tpl':
$user_tpl = isset($_POST['user_tpl']) ? (string) $_POST['user_tpl'] : $pr_data['user_tpl'];
if ($submit && ($user_tpl != $pr_data['user_tpl'] || $mode == 'register'))
{
$pr_data['user_tpl'] = $user_tpl;
$db_data['user_tpl'] = $user_tpl;
}
break;
найти
PHP:
'LANGUAGE_SELECT'    => language_select($user_lang, 'user_lang'),
ниже добавить
PHP:
'SELECT_TPL'        => tpl_select($user_tpl, 'user_tpl'),
открыть functions.php
найти
PHP:
 global $bb_cfg, $template;
заменить
PHP:
global $bb_cfg, $template, $userdata;
найти
PHP:
 $tpl_dir_name = defined('IN_ADMIN') ? 'default' : basename($bb_cfg['tpl_name']);
заменить
PHP:
$tpl_dir_name = defined('IN_ADMIN') ? 'default' : basename(IS_GUEST ? 'default' : $userdata['user_tpl']);
открыть config.php
найти
PHP:
 $bb_cfg['tpl_name'] = 'default';
заменить
PHP:
$bb_cfg['tpl_name'] = array( 'default'); // для установки новой темы оформления, через запятую добавляем, название (название должно строго соответствовать названию папки вашей темы)
открыть usercp_register.tpl
найти
HTML:
<!-- IF $bb_cfg['allow_change']['language'] -->
<tr>
    <td>{L_BOARD_LANG}:</td>
    <td>{LANGUAGE_SELECT}</td>
</tr>
<!-- ENDIF -->
ниже вставить
HTML:
<tr>
    <td>{L_SELECT_TPL}:</td>
    <td>{SELECT_TPL}</td>
</tr>
В lang_main.php добавить $lang['SELECT_TPL'] = 'Выбор шаблона';
--------------------------
Немного оптимизировал, убрал использование отдельной таблицы. теперь мод работает без дополнительных запросов, выбор шаблона вынес в config.php (загнал в массив).
 

Zenden

Пользователь
#3
У лога разве был мод смены шаблонов?
Я не видел, по крайней мере в паблике.
 
G

Gemini_13

Гость
#10
Spencer, а дальше надо стучать в бубен, призвать дождь, чтобы вырос хмель и пшеница, сварить пиво, выпить пиво, включить моцк или нормально описать проблему/задачу и проспется. хотя... в твоем возрасте о пиве рано, так что банально включи моцк или опиши проблему/задачу.