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

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


     02.11.2013    Шаблоны (TPL), Хаки    1612

вопрос
Доброго времени суток. Встал такой вопрос, каким образом можно сделать разные профили, для разных групп? В идеале, через разные .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
2

6 | 3

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

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

aleps
16 | 7

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

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

grallast
4

31 | 8

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
4

31 | 8

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
8

30 | 3

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

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

xeon01
8

30 | 3

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

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

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

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