Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Шаблоны (TPL) » Как реализовать разные страницы профилей для разных групп пользователей?

Как реализовать разные страницы профилей для разных групп пользователей?


     02.11.2013    профиль, профиль пользователя    Шаблоны (TPL), Хаки    2188

вопрос
Доброго времени суток. Встал такой вопрос, каким образом можно сделать разные профили, для разных групп? В идеале, через разные .tpl файлы. Требуется лишь замена содержания страницы, не плохо бы ещё и разные доп. поля.

Ответил: MaRZoCHi


открыть
engine/modules/profile.php

Найти
$xfieldsaction = "list";


добавить выше
    // user-group hack
    if( strpos ( $tpl->copy_template, "[user-group=" ) !== false ) {
        $tpl->set_block( "'\\[user-group=" . $row['user_group'] . "\\](.*?)\\[/user-group\\]'si", "\\1" );
        $tpl->set_block( "'\\[user-group=([0-9]+)\\](.*?)\\[/user-group\\]'is", "" );
    }
    // user-group hack


[user-group=1] Admin [/user-group]
[user-group=2] Editor [/user-group]
.
[user-group=4] User [/user-group]

6 комментариев

MaRZoCHi
Юзер

MaRZoCHi - 2 ноября 2013 23:02 -

userinfo.tpl
[group=1] Administator [/group]
[group=2] Editor [/group]
...
..
.

aleps
Юзер

aleps - 2 ноября 2013 23:09 -

MaRZoCHi,
по-моему это всеголишь сделает что разным группам будет видна разная информация
а тут, как мне кажется. вопрос в том чтобы профель для определенных групп был иным
а не его отображение в зависимости от группы в которой находишься когда его просматриваешь

grallast
Юзер

grallast - 3 ноября 2013 00:15 -

Чтобы разные tpl файлы были, это бесплатно тебе никто не сделает.
Можешь сделать таким образом:

В /engine/modules/profile.php найди:
$tpl->load_template( 'userinfo.tpl' );

и НИЖЕ добавь:

    if( $row['user_group'] == 1 ) {
        $tpl->set( '[admin_profile]', "");
        $tpl->set( '[/admin_profile]', "");
        $tpl->set_block( "'\\[user_profile\\](.*?)\\[/user_profile\\]'si", "" );
    } else {
        $tpl->set( '[user_profile]', "");
        $tpl->set( '[/user_profile]', "");
        $tpl->set_block( "'\\[admin_profile\\](.*?)\\[/admin_profile\\]'si", "" );
    }

И в userinfo.tpl возьми в теги [admin_profile][/admin_profile] возьми все то, что будет у админа на странице, а в теги [user_profile][/user_profile] все то, что у юзера.

P.S. Дальше создавай свои теги для разных групп.

grallast
Юзер

grallast - 3 ноября 2013 00:18 -

Хотя нет, можно сделать разные tpl файлы (не подумал сразу):

В /engine/modules/profile.php найди:

$tpl->load_template( 'userinfo.tpl' );


и заменяй:

if( $row['user_group'] == 1 ) $tpl->load_template( 'admin_profile.tpl' );
elseif( $row['user_group'] == 2 ) $tpl->load_template( 'moder_profile.tpl' );
else $tpl->load_template( 'userinfo.tpl' );

xeon01
Юзер

xeon01 - 3 ноября 2013 07:52 -

Но тогда здесь, возникнут проблемы с ссылкой на страницу пользователя, верно? Тогда лучше использовать первый вариант?

xeon01
Юзер

xeon01 - 3 ноября 2013 09:59 -

Первый способ не работает.
Второй тоже. :(

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх