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

Возраст и user_from на все страницы

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
ВладимирТ
phpBB 2.0.4
Сообщения: 421
Стаж: 16 лет 4 месяца
Откуда: Москва
Благодарил (а): 52 раза
Поблагодарили: 75 раз

Возраст и user_from на все страницы

Сообщение ВладимирТ »

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

В шапке поставил имя пользователя и аватару, с которыми вроде боле менее все понятно, они отображаются на всех страницах, а вот с возрастом и "Откуда" не получается.
На вкус и цвет - разный CSS
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 8 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Возраст и user_from на все страницы

Сообщение Sheer »

Можно. Только зачем на всех страницах-то?
ВладимирТ писал(а):а вот с возрастом и "Откуда" не получается.
Что делал, куда ставил?
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
ВладимирТ
phpBB 2.0.4
Сообщения: 421
Стаж: 16 лет 4 месяца
Откуда: Москва
Благодарил (а): 52 раза
Поблагодарили: 75 раз

Re: Возраст и user_from на все страницы

Сообщение ВладимирТ »

Sheer писал(а):Можно. Только зачем на всех страницах-то?
Сделал я дополнительное меню которое отображается почти на всех страницах, после overall_header.html, в нем помимо списка самого меню, по задумке отображается аватара пользователя, имя, возраст, город, страна и последнее посещение.

Имя и последнее посещение - выводятся без проблем поскольку это глобальные переменные.

Аватар - решил с помощью переноса функции get_user_avatar() из файла includes/functions_display.php в includes/functions.php (по совету Nekstati) и добавлением переменной

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

		'USER_AVATAR'			=>($user->optionget('viewavatars') && function_exists('get_user_avatar')) ? get_user_avatar($user->data['user_avatar'], $user->data['user_avatar_type'], $user->data['user_avatar_width'], $user->data['user_avatar_height']) : '',
в файлы index.php, viewforum.php, faq.php, mcp.php, memberlist.php, posting.php, report.php, search.php, ucp.php, viewonline.php, viewtopic.php.

Страна - думаю решить с помощью мода "Country Flags User Edition" там вроде есть решение глобального вывода переменной.

Осталось вывести Возраст и Город

С переменными вроде немного понятно

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

'AGE'					 => $age,
'LOCATION'				 => ($member['user_from']) ? $member['user_from'] : '',
А вот разобраться с функциями не получается в связи с плохим знанием php.
На вкус и цвет - разный CSS
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 8 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Возраст и user_from на все страницы

Сообщение Sheer »

ВладимирТ писал(а):поскольку это глобальные переменные.
В phpBB3 есть такой замечательный волшебный глобальный класс, имя которому $user
Оттуда можно извлечь все.

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

'AGE'		=> $user->data['user_birthday'],
'LOCATION'	=> $user->data['user_from'],
Единственное, AGE будет выводиться в форматеdd-mm-yyyy (день-месяц[цифрами без ведущих нулей]-год), так как записано в БД. Если пририсовать функцию преобразования в нужный формат, то будет красиво.
Развлекайся:

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

<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();

print "<pre>"; print_r($user); print "</pre>"
?>
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
ВладимирТ
phpBB 2.0.4
Сообщения: 421
Стаж: 16 лет 4 месяца
Откуда: Москва
Благодарил (а): 52 раза
Поблагодарили: 75 раз

Re: Возраст и user_from на все страницы

Сообщение ВладимирТ »

Спасибо Sheer, здорово!, $user действительно волшебный класс!

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

Может есть похожее решение?
На вкус и цвет - разный CSS
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 8 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Возраст и user_from на все страницы

Сообщение Sheer »

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

'AGE'		=> isodate_to_user_format($user->data['user_birthday']),
/*  ---- */
function isodate_to_user_format($birth_date = 0)
{
	global $user;
    list($d,$m,$y) = explode('-', $birth_date);
    $timp = explode(' ', date('d M Y', mktime(0, 0, 0, $m, $d, $y)));
    $timp[1] = $user->lang['datetime'][$timp[1]];
    return implode (' ', $timp);
}
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
ВладимирТ
phpBB 2.0.4
Сообщения: 421
Стаж: 16 лет 4 месяца
Откуда: Москва
Благодарил (а): 52 раза
Поблагодарили: 75 раз

Re: Возраст и user_from на все страницы

Сообщение ВладимирТ »

Огромное спасибо Sheer, а можно последний вопрос?

Как вычислить и вывести вместо даты рождения - возраст человека, типа 30 лет
На вкус и цвет - разный CSS
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 8 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Возраст и user_from на все страницы

Сообщение Sheer »

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

function user_age()
{
	global $user;
	list($bday_day, $bday_month, $bday_year) = array_map('intval', explode('-', $user->data['user_birthday']));
	if ($bday_year)
	{
		$now = phpbb_gmgetdate(time() + $user->timezone + $user->dst);
		$diff = $now['mon'] - $bday_month;
		if ($diff == 0)
		{
			$diff = ($now['mday'] - $bday_day < 0) ? 1 : 0;
		}
		else
		{
			$diff = ($diff < 0) ? 1 : 0;
		}
		$age = max(0, (int) ($now['year'] - $bday_year - $diff));
		return $age;
	}
	return false;
}
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
ВладимирТ
phpBB 2.0.4
Сообщения: 421
Стаж: 16 лет 4 месяца
Откуда: Москва
Благодарил (а): 52 раза
Поблагодарили: 75 раз

Re: Возраст и user_from на все страницы

Сообщение ВладимирТ »

Вот последний штрих, после вывода возраста, напрашивалось написать следующее - 39 лет, 21 год или 3 года.

Вот решение в вдогонку выше приведенного, может кому пригодится :

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

'OP_AGE_YEAR'	       => $op_age_year,

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

$op_age = user_age($user->data['user_birthday']); 
$op_age_vg = substr($op_age, -1, 1); 
if ($op_age_vg == "1") {
$op_age_year = " год,"; }
else {
if ($op_age_vg == "0") {
$op_age_year = " лет,"; }
else {
if ($op_age_vg < "5") {
$op_age_year = " года,"; }
else {
$op_age_year = " лет,"; }}} 

Теперь у меня все по взрослому :), перед носом висит своя аватара, как меня зовут, сколько мне лет, из какого я города и страны, когда был последний раз - ДАБЫ НЕ ЗАБЫТЬ!!!
На вкус и цвет - разный CSS
Аватара пользователя
ВладимирТ
phpBB 2.0.4
Сообщения: 421
Стаж: 16 лет 4 месяца
Откуда: Москва
Благодарил (а): 52 раза
Поблагодарили: 75 раз

Re: Возраст и user_from на все страницы

Сообщение ВладимирТ »

Назрел еще один вопрос.

Возможно ли выводить аватар любого пользователя рядом с его именем, на любой странице, то есть существует глобальная функция и переменная?
На вкус и цвет - разный CSS
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 8 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Возраст и user_from на все страницы

Сообщение Sheer »

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

if (!function_exists('get_user_avatar'))
{
	include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
}
$template->assign_vars(array(
	'USER_AVATAR' 	=> get_user_avatar($user->data['user_avatar'], $user->data['user_avatar_type'], $user->data['user_avatar_width'], $user->data['user_avatar_height']),
));
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
ВладимирТ
phpBB 2.0.4
Сообщения: 421
Стаж: 16 лет 4 месяца
Откуда: Москва
Благодарил (а): 52 раза
Поблагодарили: 75 раз

Re: Возраст и user_from на все страницы

Сообщение ВладимирТ »

Спасибо, но это вроде, если я не ошибаюсь, вывод своего аватара.

Я имел виду, аватар других пользователей, есть куча разрозненных модов, типа аватар в список пользователь, кто в сети, кто создал тему и т.д., а хочется что то единое и ставить переменную где мне удобно, например день рождения.
На вкус и цвет - разный CSS
Аватара пользователя
angst66
phpBB 3.0.0 RC3
Сообщения: 1587
Стаж: 14 лет 9 месяцев
Благодарил (а): 90 раз
Поблагодарили: 165 раз

Re: Возраст и user_from на все страницы

Сообщение angst66 »

ВладимирТ В этом моде ACP Announcement Centre (объявления) для phpBB3 функция вывода аватары в поздравлении на др, поковыряй.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 8 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Возраст и user_from на все страницы

Сообщение Sheer »

Да в принципе аналогично, только сам понимаешь, для любого пользователя глобальных значений нет. Нужно сделать SQL-запрос и получить данные из таблицы users по данному конкретному пользователю.

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

$sql = 'SELECT user_avatar, user_avatar_type, user_avatar_width, user_avatar_height
	FROM ' . USERS_TABLE . '
	WHERE user_id = ' . $uid . ''; // $uid - ид пользователя
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);

if (!function_exists('get_user_avatar'))
{
	include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
}

$template->assign_vars(array(
	'USER_AVATAR' 	=> get_user_avatar($row['user_avatar'], $row['user_avatar_type'], $row['user_avatar_width'], $row['user_avatar_height']),
));
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 16 лет 11 месяцев
Благодарил (а): 42 раза
Поблагодарили: 506 раз

Re: Возраст и user_from на все страницы

Сообщение Pazh »

ВладимирТ писал(а):Вот последний штрих, после вывода возраста, напрашивалось написать следующее - 39 лет, 21 год или 3 года.
примени к своему алгоритму возраст 11-14 лет и получишь неправильную формулировку
Помощь в ЛС/email только за WM или ЮMoney

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