Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Ссылка на аватар

Проблемы с установкой или работой phpBB 3.2.x? Получите помощь здесь!
Внимание: с 7 ноября 2020 года phpBB Group завершено дальнейшее развитие phpBB версии 3.2, а с 1 августа 2024 года будет прекращена её поддержка.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.

Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Xaker1493
phpBB 1.2.0
Сообщения: 10
Стаж: 7 лет 3 месяца
Благодарил (а): 5 раз

Ссылка на аватар

Сообщение Xaker1493 »

Доброго дня.
Есть тег аватар: {CURRENT_USER_AVATAR}, мне нужна только ссылка на аватар.
Вот такой вопрос:
Есть ли тег Ссылка на аватар пользователя, если нет, то где находиться сам код тега {CURRENT_USER_AVATAR} в движке?
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12422
Стаж: 12 лет 8 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2474 раза

Re: Ссылка на аватар

Сообщение Татьяна5 »

includes/functions.php

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

'CURRENT_USER_AVATAR'			=> phpbb_get_user_avatar($user->data),

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

function phpbb_get_user_avatar($user_row, $alt = 'USER_AVATAR', $ignore_config = false, $lazy = false)
{
	$row = \phpbb\avatar\manager::clean_row($user_row, 'user');
	return phpbb_get_avatar($row, $alt, $ignore_config, $lazy);
}

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

function phpbb_get_avatar($row, $alt, $ignore_config = false, $lazy = false)
{
	global $user, $config;
	global $phpbb_container, $phpbb_dispatcher;

	if (!$config['allow_avatar'] && !$ignore_config)
	{
		return '';
	}

	$avatar_data = array(
		'src' => $row['avatar'],
		'width' => $row['avatar_width'],
		'height' => $row['avatar_height'],
	);

	/* @var $phpbb_avatar_manager \phpbb\avatar\manager */
	$phpbb_avatar_manager = $phpbb_container->get('avatar.manager');
	$driver = $phpbb_avatar_manager->get_driver($row['avatar_type'], !$ignore_config);
	$html = '';

	if ($driver)
	{
		$html = $driver->get_custom_html($user, $row, $alt);
		if (!empty($html))
		{
			return $html;
		}

		$avatar_data = $driver->get_data($row);
	}
	else
	{
		$avatar_data['src'] = '';
	}

	if (!empty($avatar_data['src']))
	{
		if ($lazy)
		{
			// Determine board url - we may need it later
			$board_url = generate_board_url() . '/';
			// This path is sent with the base template paths in the assign_vars()
			// call below. We need to correct it in case we are accessing from a
			// controller because the web paths will be incorrect otherwise.
			$phpbb_path_helper = $phpbb_container->get('path_helper');
			$corrected_path = $phpbb_path_helper->get_web_root_path();

			$web_path = (defined('PHPBB_USE_BOARD_URL_PATH') && PHPBB_USE_BOARD_URL_PATH) ? $board_url : $corrected_path;

			$theme = "{$web_path}styles/" . rawurlencode($user->style['style_path']) . '/theme';

			$src = 'src="' . $theme . '/images/no_avatar.gif" data-src="' . $avatar_data['src'] . '"';
		}
		else
		{
			$src = 'src="' . $avatar_data['src'] . '"';
		}

		$html = '<img class="avatar" ' . $src . ' ' .
			($avatar_data['width'] ? ('width="' . $avatar_data['width'] . '" ') : '') .
			($avatar_data['height'] ? ('height="' . $avatar_data['height'] . '" ') : '') .
			'alt="' . ((!empty($user->lang[$alt])) ? $user->lang[$alt] : $alt) . '" />';
	}

	/**
	* Event to modify HTML <img> tag of avatar
	*
	* @event core.get_avatar_after
	* @var	array	row				Row cleaned by \phpbb\avatar\manager::clean_row
	* @var	string	alt				Optional language string for alt tag within image, can be a language key or text
	* @var	bool	ignore_config	Ignores the config-setting, to be still able to view the avatar in the UCP
	* @var	array	avatar_data		The HTML attributes for avatar <img> tag
	* @var	string	html			The HTML <img> tag of generated avatar
	* @since 3.1.6-RC1
	*/
	$vars = array('row', 'alt', 'ignore_config', 'avatar_data', 'html');
	extract($phpbb_dispatcher->trigger_event('core.get_avatar_after', compact($vars)));

	return $html;
}
Так что можно из расширения вклиниться в событие core.get_avatar_after и оттуда получить что хочется (проще из $avatar_data вытащить)
Xaker1493
phpBB 1.2.0
Сообщения: 10
Стаж: 7 лет 3 месяца
Благодарил (а): 5 раз

Re: Ссылка на аватар

Сообщение Xaker1493 »

Татьяна5 - Спасибо за отклик.

Помогите исправить код:

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

'CURRENT_USER_AVATAR_URL'		=> \phpbb\avatar\manager::clean_row($user->data, 'user')['avatar'],
Выводить: 2_1484821753.jpg место ссылки: ./download/file.php?avatar=2_1484821753.jpg
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12422
Стаж: 12 лет 8 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2474 раза

Re: Ссылка на аватар

Сообщение Татьяна5 »

Дважды при каждом обращении к аватару вызывать clean_row незачем, это лишняя нагрузка
Если нужно только название, то это в событии $row['avatar']
Xaker1493
phpBB 1.2.0
Сообщения: 10
Стаж: 7 лет 3 месяца
Благодарил (а): 5 раз

Re: Ссылка на аватар

Сообщение Xaker1493 »

Татьяна5 писал(а): Дважды при каждом обращении к аватару вызывать clean_row незачем, это лишняя нагрузка
Если нужно только название, то это в событии $row['avatar']
Понятно.
Я сделал так:

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

'CURRENT_USER_AVATAR_URL'		=> phpbb_get_user_avatar($user->data,true),

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

function phpbb_get_user_avatar($user_row, $url = false, $alt = 'USER_AVATAR', $ignore_config = false, $lazy = false)
{
	$row = \phpbb\avatar\manager::clean_row($user_row, 'user');
	return phpbb_get_avatar($row, $url, $alt, $ignore_config, $lazy);
}

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


if(!$url){
	$html = '<img class="avatar" ' . $src . ' ' .
	($avatar_data['width'] ? ('width="' . $avatar_data['width'] . '" ') : '') .
	($avatar_data['height'] ? ('height="' . $avatar_data['height'] . '" ') : '') .
	'alt="' . ((!empty($user->lang[$alt])) ? $user->lang[$alt] : $alt) . '" />';
}else{
	$html = $avatar_data['src'];
}	
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12422
Стаж: 12 лет 8 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2474 раза

Re: Ссылка на аватар

Сообщение Татьяна5 »

Вопрос: зачем?

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

'core.get_avatar_after' => 'get_avatar_after',

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

public function get_avatar_after($event)
{
    $this->template->assign_var('CURRENT_USER_AVATAR_URL', $event['row']['avatar']);
}
Не идеально, но большего и не требуется
Xaker1493
phpBB 1.2.0
Сообщения: 10
Стаж: 7 лет 3 месяца
Благодарил (а): 5 раз

Re: Ссылка на аватар

Сообщение Xaker1493 »

Не работает код.
Последний раз редактировалось Sheer 20.01.2017 14:45, всего редактировалось 1 раз.
Причина: Удален оверквотинг
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12422
Стаж: 12 лет 8 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2474 раза

Re: Ссылка на аватар

Сообщение Татьяна5 »

Xaker1493 писал(а): Не работает
Весь свой listener.php покажите
Xaker1493
phpBB 1.2.0
Сообщения: 10
Стаж: 7 лет 3 месяца
Благодарил (а): 5 раз

Re: Ссылка на аватар

Сообщение Xaker1493 »

Татьяна5 писал(а):
Так, это код надо в listener.php добавлять?
А я в файл includes/functions.php скопировал.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12422
Стаж: 12 лет 8 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2474 раза

Re: Ссылка на аватар

Сообщение Татьяна5 »

Конечно. В своё расширение (заготовка через stk неплохо генерируется)

Вернуться в «Поддержка phpBB 3.2.x»