Выводим в профиль дату рождения

Автор vladok, 28 января 2007, 12:16:15

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

vladok

В Профиль пользователя - Основная информация - пол, возраст ...
Добавляем вывод даты рождения
Т.е.
пол, дата рождения, возраст

В \Themes\default\Profile.template.php
ищем


Цитировать<td><b>', $txt[231], ': </b></td>
               <td>', $context['member']['gender']['name'], '</td>
            </tr><tr>
После этого добавляем:
Цитировать<td><b>', 'Дата рождения', ': </b></td>
               <td>',$context['member']['birth_date'] , '</td>
            </tr><tr>
Харе кришна, май либер зольдат...

Шева

Каждый человек способен на многое. Но к сожалению, не каждый знает, на что он способен.


0daliska

Уехала отдыхать. Сейчас без интернета до 1 августа. Приеду - выполню все обещания
® For members of Russian community (simplemachines.ru) only

Шаннар

Небольшое дополнение — написать $txt[563] вместо 'Дата рождения', для того, чтобы при выборе языка, отличного от русского, всё оставалось таким же.

0daliska

Небольшое дополнение.... Для SMF1.1.X

1. Сменить порядок ввода данных дня рождения пользователя в профиле (Настройки профиля):
Берем Profile.template.php, находим там
// Gender, birthdate and location.
echo '
<tr>
<td width="40%">
<b>', $txt[563], ':</b>
<div class="smalltext">', $txt[566], ' - ', $txt[564], ' - ', $txt[565], '</div>
</td>
<td class="smalltext">
<input type="text" name="bday3" size="4" maxlength="4" value="', $context['member']['birth_date']['year'], '" /> -
<input type="text" name="bday1" size="2" maxlength="2" value="', $context['member']['birth_date']['month'], '" /> -
<input type="text" name="bday2" size="2" maxlength="2" value="', $context['member']['birth_date']['day'], '" />

и меняем на:
// Gender, birthdate and location.
echo '
<tr>
<td width="40%">
<b>', $txt[563], ':</b>
                                                                        <div class="smalltext">', $txt[565], ' - ', $txt[564], ' - ', $txt[566], '</div>
</td>
<td class="smalltext">
<input type="text" name="bday2" size="2" maxlength="2" value="', $context['member']['birth_date']['day'], '" /> -
<input type="text" name="bday1" size="2" maxlength="2" value="', $context['member']['birth_date']['month'], '" /> -
<input type="text" name="bday3" size="4" maxlength="4" value="', $context['member']['birth_date']['year'], '" />


Это сделает ввод информации в привычном виде... То есть при занесении в профиль даты рождения поля будут идти так, как мы привыкли... Дата, месяц, год... (смотрим аттачмент)

2. Выводим в основной информации пользователя в профиле дату рождения в виде число Месяц в родительном падеже и год...
Находим в Profile.template.php следующий код:
<td><b>', $txt[420], ':</b></td>
<td>', $context['member']['age'] . ($context['member']['today_is_birthday'] ? ' &nbsp; <img src="' . $settings['images_url'] . '/bdaycake.gif" width="40" alt="" />' : ''), '</td>
</tr><tr>

После него добавляем:
<td><b>', $txt[563], ':</b></td>';
if (empty($context['member']['birth_date'])  || $context['member']['birth_date'] == 0)
{
echo '<td> &mdash; </td>';
}
else {
list ($birth_year, $birth_month, $birth_day) = sscanf($context['member']['birth_date'], '%d-%d-%d');
$birth_m = $txt['months'];
echo '<td>',$birth_day, ' ', $birth_m[$birth_month], ' ',$birth_year, '</td>';}
echo '
</tr><tr>

Получим вывод день рождения вот так, как в приложении.
Удачи!
Уехала отдыхать. Сейчас без интернета до 1 августа. Приеду - выполню все обещания
® For members of Russian community (simplemachines.ru) only

Шаннар

Цитата: 0daliska от 17 июня 2010, 01:34:29
Небольшое дополнение.... Для SMF1.1.X

Замечательное дополнение, благодарю!

Цитата: 0daliska от 17 июня 2010, 01:34:29
2. Выводим в основной информации пользователя в профиле дату рождения в виде число Месяц в родительном падеже и год...

Ежели у пользователя указан месяц и день, но не указан год — показывается «—». Можно ли учесть этот вариант?

0daliska

#7
Цитата: Шаннар от 17 июня 2010, 11:08:47
Ежели у пользователя указан месяц и день, но не указан год — показывается «—». Можно ли учесть этот вариант?
Можно... Тогда вписываемый по дополнению 2 код (вместо преложенного ранее) должен быть вот таким:
            <td><b>', $txt[563], ':</b></td>';
if (empty($context['member']['birth_date']))
{
echo '<td> &mdash; </td>';
}
else {
list ($birth_year, $birth_month, $birth_day) = sscanf($context['member']['birth_date'], '%d-%d-%d');
$birth_m = $txt['months'];
echo '<td>',
($birth_day == 0) ? '&mdash;' : ''.$birth_day. ' ',
($birth_month == 0) ? '&mdash;' : ''.$birth_m[$birth_month]. ' ',
($birth_year == 0) ? '' : ''. $birth_year. ' ';
echo '</td>';
}
            echo '
            </tr><tr>
...
В этом случае, если дата или месяц не указаны, будут выведены --. Если дата и месяц указаны, но не указан год, то выведен будет день рождения без года
Уехала отдыхать. Сейчас без интернета до 1 августа. Приеду - выполню все обещания
® For members of Russian community (simplemachines.ru) only

Шаннар

Цитата: 0daliska от 17 июня 2010, 12:43:04
Неужели самим не интересно решить? Для этого ж все уже дано было...

Увы, сам я пока что весьма слаб в синтаксисе PHP.

Впрочем, уже выкачал пару учебников и выделил время в расписании.

И ещё раз благодарю за помощь!

0daliska

Уехала отдыхать. Сейчас без интернета до 1 августа. Приеду - выполню все обещания
® For members of Russian community (simplemachines.ru) only