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

Отображение id пользователя вместо логина

У вас есть идея для расширения функциональности phpBB 3.0.x? Расскажите о ней здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
lord_nikon
phpBB 1.2.0
Сообщения: 18
Стаж: 16 лет 9 месяцев
Откуда: Бишкек, Кыргызстан

Отображение id пользователя вместо логина

Сообщение lord_nikon »

Так сложилось, что появилась острая необходимость сделать анонимный портал для пользователей.

Возможно ли сделать так, чтобы при регистрации (либо входе) пользователей, производилась подмена логина в БД на некий идентификатор, что-то вроде anonim_ID, где ID присваивалось бы либо в хаотичном порядке, либо поочередно в цифрах, типа anonim_001, anonim_002 и т.п.?

или (что было бы удобнее)
пользователь регистрируется с неким логином и выполняет вход на форум тоже с него, а в темах форума и профайле отображается идентификатор, что-то вроде anonim_ID, где ID присваивалось бы либо в хаотичном порядке, либо поочередно в цифрах, типа anonim_001, anonim_002 и т.п.?

Возможно существуют какие-либо модификации? Честно говоря не нашел ничего.

Заранее благодарен за внимание к теме и возможную помощь.

phpBB: 3.0.7-PL1
php: PHP Version 5.2.10
СУБД: MySQL(i) 5.0.77
MAzZY
Бывший член :)
Сообщения: 2925
Стаж: 21 год 5 месяцев
Благодарил (а): 79 раз
Поблагодарили: 69 раз
Забанен: Бессрочно

Re: Отображение id пользователя вместо логина

Сообщение MAzZY »

Искать везде в шаблонах вывод вроде {postrow.POST_AUTHOR_FULL} и заменять на то, что нужно.
lord_nikon
phpBB 1.2.0
Сообщения: 18
Стаж: 16 лет 9 месяцев
Откуда: Бишкек, Кыргызстан

Re: Отображение id пользователя вместо логина

Сообщение lord_nikon »

допустим, нашел я {postrow.POST_AUTHOR_FULL}, а на что менять та? Всмысле такая же переменная есть, отображающая что-то вроде этого самого ID?
MAzZY
Бывший член :)
Сообщения: 2925
Стаж: 21 год 5 месяцев
Благодарил (а): 79 раз
Поблагодарили: 69 раз
Забанен: Бессрочно

Re: Отображение id пользователя вместо логина

Сообщение MAzZY »

Можно отображать ID пользователя. Но нужно найти, где генерируется вывод {postrow.POST_AUTHOR_FULL} и поменять. А я не могу сейчас сказать, где это сделать. Так что либо сами поищите по файлам php, либо ждите пока кто-то подскажет
lord_nikon
phpBB 1.2.0
Сообщения: 18
Стаж: 16 лет 9 месяцев
Откуда: Бишкек, Кыргызстан

Re: Отображение id пользователя вместо логина

Сообщение lord_nikon »

спасибо за подсказку.
Буду ждать.
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 7 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1455 раз

Re: Отображение id пользователя вместо логина

Сообщение Nekstati »

Например:

Код: Выделить всё

==== viewtopic.php
'author_full'		=> get_username_string('full', $poster_id, $row['username'], $row['user_colour']),
==== заменить на
'author_full'		=> get_username_string('full', $poster_id, 'Anonymous_' . $poster_id, $row['user_colour']),
Имена примут вид Anonymous_431. Но это только во вьютопике. А ещё кучу скриптов копать. Можно и в шаблонах, по принципу {postrow.POST_AUTHOR_FULL} → {postrow.POSTER_ID}, но тогда имена перестанут быть ссылками и потеряют цвета групп.
lord_nikon
phpBB 1.2.0
Сообщения: 18
Стаж: 16 лет 9 месяцев
Откуда: Бишкек, Кыргызстан

Re: Отображение id пользователя вместо логина

Сообщение lord_nikon »

спасибо. Это сделал, получилось, но как Вы и сказали только в постах, а во всех других местах (на главной форума, статистике etc...) по прежнему выводится имя пользователя. Попробовал тупо заменить по принципу {postrow.POST_AUTHOR_FULL} → {postrow.POSTER_ID}, но переменной {postrow.POST_AUTHOR_FULL} больше нигде нет, кроме как в одном из файлов шаблона.
В других местах встречается {postrow.USERNAME_FULL}, но при попытке заменить на {postrow.USERNAME_ID} или {postrow.POSTER_ID}, ничего в результате не выводится, просто пустое место вместо ника, тоесть он просто исчезает со страниц и не показывается.

Может есть какой-то ман, где есть разъяснения всех значения данных переменных, чтобы я Вас не забибикивал этим долго?

Заранее благодарен
MAzZY
Бывший член :)
Сообщения: 2925
Стаж: 21 год 5 месяцев
Благодарил (а): 79 раз
Поблагодарили: 69 раз
Забанен: Бессрочно

Re: Отображение id пользователя вместо логина

Сообщение MAzZY »

Нужно делать аналогично: открывать нужный файл шаблона, искать переменную, открывать соответствующий файл php и выполнять замену по принципу, указанному Nekstati. Ну и кое-что можно выкинуть, например, профили пользователей, список пользователей.
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 7 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1455 раз

Re: Отображение id пользователя вместо логина

Сообщение Nekstati »

lord_nikon, вот вам пример для viewforum.php. Открываете viewforum_body.html, ищете переменные, содержащие имена. Очевидно, это {topicrow.TOPIC_AUTHOR_FULL} и {topicrow.LAST_POST_AUTHOR_FULL}. Открываете viewforum.php, находите там эти переменные и изменяете примерно так:

Код: Выделить всё

==== было

'TOPIC_AUTHOR_FULL'			=> get_username_string('full', $row['topic_poster'], $row['topic_first_poster_name'], $row['topic_first_poster_colour']),

'LAST_POST_AUTHOR_FULL'		=> get_username_string('full', $row['topic_last_poster_id'], $row['topic_last_poster_name'], $row['topic_last_poster_colour']),

==== стало

'TOPIC_AUTHOR_FULL'			=> get_username_string('full', $row['topic_poster'], 'Anonymous_' . $row['topic_poster'], $row['topic_first_poster_colour']),

'LAST_POST_AUTHOR_FULL'		=> get_username_string('full', $row['topic_last_poster_id'], 'Anonymous_' . $row['topic_last_poster_id'], $row['topic_last_poster_colour']),
Пример посложнее: для списка форумов на главной странице. Открываете index_body.html, смотрите, где в ней список форумов? — ага, тут есть такая строка: <!-- INCLUDE forumlist_body.html -->. Открываете forumlist_body.html, находите переменную {forumrow.LAST_POSTER_FULL}. Ищете её в index.php. Её там нет? Значит, надо поискать в инклюдах: includes/functions.php, includes/functions_display.php.

Код: Выделить всё

==== было

'LAST_POSTER_FULL'		=> get_username_string('full', $row['forum_last_poster_id'], $row['forum_last_poster_name'], $row['forum_last_poster_colour']),

==== стало

'LAST_POSTER_FULL'		=> get_username_string('full', $row['forum_last_poster_id'], 'Anonymous_' . $row['forum_last_poster_id'], $row['forum_last_poster_colour']),
Ну и так далее…
lord_nikon
phpBB 1.2.0
Сообщения: 18
Стаж: 16 лет 9 месяцев
Откуда: Бишкек, Кыргызстан

Re: Отображение id пользователя вместо логина

Сообщение lord_nikon »

спасибо огромное.

Пошел мучить.
lord_nikon
phpBB 1.2.0
Сообщения: 18
Стаж: 16 лет 9 месяцев
Откуда: Бишкек, Кыргызстан

Re: Отображение id пользователя вместо логина

Сообщение lord_nikon »

все вроде бы сделал, но при цитировании все равно оастается ник, а не анонимный идентификатор.
То есть вместо Anonimous_56 писал(а), отображается Admin писал(а) или lord_nikon писал(а)/

Перерыл все кажется, но не могу найти где это можно сменить.
MAzZY
Бывший член :)
Сообщения: 2925
Стаж: 21 год 5 месяцев
Благодарил (а): 79 раз
Поблагодарили: 69 раз
Забанен: Бессрочно

Re: Отображение id пользователя вместо логина

Сообщение MAzZY »

bbcode.php
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 4 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

Re: Отображение id пользователя вместо логина

Сообщение FladeX »

А не проще ли один раз переделать функцию get_username_string(), чем переделывать каждый ее вызов? :) Измените функцию, чтобы на выходе был айди-юзера, а не его ник. Функция задаётся в includes/functions_content.php
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
lord_nikon
phpBB 1.2.0
Сообщения: 18
Стаж: 16 лет 9 месяцев
Откуда: Бишкек, Кыргызстан

Re: Отображение id пользователя вместо логина

Сообщение lord_nikon »

FladeX
хы, там мне привели пример, поэтому я быстро соориентировался что куда. а тут в куске кода я хоть и вижу знакомые значения, но не могу сообразить на что поменять, ибо я не знаю откровенно говоря рнр

Код: Выделить всё

function get_username_string($mode, $user_id, $username, $username_colour = '', $guest_username = false, $custom_profile_url = false)
{
	static $_profile_cache;

	// We cache some common variables we need within this function
	if (empty($_profile_cache))
	{
		global $phpbb_root_path, $phpEx;

		$_profile_cache['base_url'] = append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u={USER_ID}');
		$_profile_cache['tpl_noprofile'] = '{USERNAME}';
		$_profile_cache['tpl_noprofile_colour'] = '<span style="color: {USERNAME_COLOUR};" class="username-coloured">{USERNAME}</span>';
		$_profile_cache['tpl_profile'] = '<a href="{PROFILE_URL}">{USERNAME}</a>';
		$_profile_cache['tpl_profile_colour'] = '<a href="{PROFILE_URL}" style="color: {USERNAME_COLOUR};" class="username-coloured">{USERNAME}</a>';
	}

	global $user, $auth;

	// This switch makes sure we only run code required for the mode
	switch ($mode)
	{
		case 'full':
		case 'no_profile':
		case 'colour':

			// Build correct username colour
			$username_colour = ($username_colour) ? '#' . $username_colour : '';

			// Return colour
			if ($mode == 'colour')
			{
				return $username_colour;
			}

		// no break;

		case 'username':

			// Build correct username
			if ($guest_username === false)
			{
				$username = ($username) ? $username : $user->lang['GUEST'];
			}
			else
			{
				$username = ($user_id && $user_id != ANONYMOUS) ? $username : ((!empty($guest_username)) ? $guest_username : $user->lang['GUEST']);
			}

			// Return username
			if ($mode == 'username')
			{
				return $username;
			}

		// no break;

		case 'profile':

			// Build correct profile url - only show if not anonymous and permission to view profile if registered user
			// For anonymous the link leads to a login page.
			if ($user_id && $user_id != ANONYMOUS && ($user->data['user_id'] == ANONYMOUS || $auth->acl_get('u_viewprofile')))
			{
				$profile_url = ($custom_profile_url !== false) ? $custom_profile_url . '&u=' . (int) $user_id : str_replace(array('={USER_ID}', '=%7BUSER_ID%7D'), '=' . (int) $user_id, $_profile_cache['base_url']);
			}
			else
			{
				$profile_url = '';
			}

			// Return profile
			if ($mode == 'profile')
			{
				return $profile_url;
			}

		// no break;
	}

	if (($mode == 'full' && !$profile_url) || $mode == 'no_profile')
	{
		return str_replace(array('{USERNAME_COLOUR}', '{USERNAME}'), array($username_colour, $username), (!$username_colour) ? $_profile_cache['tpl_noprofile'] : $_profile_cache['tpl_noprofile_colour']);
	}

	return str_replace(array('{PROFILE_URL}', '{USERNAME_COLOUR}', '{USERNAME}'), array($profile_url, $username_colour, $username), (!$username_colour) ? $_profile_cache['tpl_profile'] : $_profile_cache['tpl_profile_colour']);
}
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 4 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

Re: Отображение id пользователя вместо логина

Сообщение FladeX »

Ну попробуйте например сразу изменить значение $username:

Код: Выделить всё

$username = 'user_' . $user_id; 
это после объявления глобальных переменных вставьте.
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы

Вернуться в «Запросы модов для phpBB 3.0.x»