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

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

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

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

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

Сообщение Xaker1493 »

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

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
Стаж: 9 лет 9 месяцев
Благодарил (а): 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
Поддержка
Поддержка
Сообщения: 13177
Стаж: 15 лет 2 месяца
Благодарил (а): 236 раз
Поблагодарили: 3754 раза

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

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

Дважды при каждом обращении к аватару вызывать clean_row незачем, это лишняя нагрузка
Если нужно только название, то это в событии $row['avatar']
Xaker1493
phpBB 1.2.0
Сообщения: 10
Стаж: 9 лет 9 месяцев
Благодарил (а): 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
Поддержка
Поддержка
Сообщения: 13177
Стаж: 15 лет 2 месяца
Благодарил (а): 236 раз
Поблагодарили: 3754 раза

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
Стаж: 9 лет 9 месяцев
Благодарил (а): 5 раз

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

Сообщение Xaker1493 »

Не работает код.
Последний раз редактировалось Sheer 20.01.2017 11:45, всего редактировалось 1 раз.
Причина: Удален оверквотинг
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13177
Стаж: 15 лет 2 месяца
Благодарил (а): 236 раз
Поблагодарили: 3754 раза

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

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

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

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

Сообщение Xaker1493 »

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

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

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

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

Вернуться в «phpBB 3.2.x (архив)»