Центр пользователя  |  Ваши сообщения  |  FAQ
Форум поддержки phpBB » phpBB 3.0.x » Модификация phpBB 3.0.x » Новые возможности

Показ возраста форума

Публикация и обсуждение идей о расширении функциональности phpBB3
Пожалуйста, помните, что существуют: Поиск, Правила форума
Возможно, ответ на Ваш вопрос уже имеется: Документация, Статьи, Накопленный опыт
Полезные материалы по этой теме: Инструкция по установке модов

Сообщение 12 окт 2012, 21:35

В index_body.html имеется вот такой кусок (нашёл в интернете):

Код: выделить все
<SCRIPT language=JavaScript>
<!--
firstDay = new Date('August 25, 2012');
todayDate = new Date();
daysQty = (todayDate.getTime() - firstDay.getTime()) / (1000*60*60*24);
document.write('Форум живет ' + Math.round(daysQty) + '-й день.');
-->
</SCRIPT>


Он высвечивает следующее сообщение: "Форум живет 49-й день."

Пока форум молод, это ещё терпимо, но если он не сдохнет :mrgreen: и пройдут годы, то хотелось бы видеть сообщение типа "Форуму 3 года 11 месяцев 18 дней." (вместо непонятных тысяч дней). Господа специалисты, может, кто имеет готовый алгоритм? Желательно (но необязательно) с поддержкой правильного русского языка (4 "года", но 5 "лет" - и т.п.).

Спасибо!
North-Ameri.ca
Аватар пользователя
ursego
Активный участник
 
Сообщений: 72
Зарегистрирован:
13 сен 2012, 23:29
Откуда:
Торонто
Благодарил (а): 4 раз.
Поблагодарили: 2 раз.

Сообщение 14 окт 2012, 06:36

Господа, вот решение проблемы - возможно, кто-то захочет у себя установить (высвечивает сообщение в формате "Форуму 3 года 11 месяцев и 5 дней" с соблюдением правильности русского языка):

Код: выделить все
<!-- Высветить "Форуму ... лет ... месяцев и ... дней" ------- BEGIN -->
<SCRIPT language=JavaScript>
<!--
var fD = [2012, 8, 25], d1 = 6, m1 = 4, tx = [], rz, d = new Date,
tD = [d.getFullYear (), d.getMonth (), d.getDate ()], dr = tD [2] - fD [2],
mr = tD [1] - fD [1], yr = tD [0] - fD [0], Y = 'год-года-лет',
M = 'месяц-месяца-месяцев', D = 'день-дня-дней', t = function (v, w) {
var x = w.toString ().split (''), y = x [x.length - 1], z = 0; if (w > 4 && w < 21
|| y == 0) z = 2; else if (y > 1 && y < 5) z = 1; else if (y > 4) z = 2; return ' ' + v.split ('-') [z]}
if (dr < 0) dr = tD [2] + d1; if (yr > 0 && mr < 0) yr -= 1; if (mr < 0) mr = tD [1] + m1;
var yt = (yr) ? yr + t (Y, yr) : ''; if (yt) tx [tx.length] = yt;
var mt = (mr) ? mr + t (M, mr) : ''; if (mt) tx [tx.length] = mt;
var dt = (dr) ? dr + t (D, dr) : ''; if (dt) tx [tx.length] = dt;
if (tx.length == 1) rz = tx [0];
if (tx.length == 2) rz = tx.join (' и ');
if (tx.length == 3) rz = tx [0] + ', ' + tx [1] + ' и ' + tx [2];
document.write ('Форуму ' + rz);
-->
</SCRIPT>
<!-- Высветить "Форуму ... лет ... месяцев и ... дней" --------- END -->


Важный ремарк: автор кода - не я, мне его дали в готовом виде на форуме программистов.
North-Ameri.ca
Аватар пользователя
ursego
Активный участник
 
Сообщений: 72
Зарегистрирован:
13 сен 2012, 23:29
Откуда:
Торонто
Благодарил (а): 4 раз.
Поблагодарили: 2 раз.

Сообщение 14 окт 2012, 13:55

первый код лудше,форум грузится быстро.а на втором отказуется грузится.
satcrimea
Пользователь
 
Сообщений: 33
Зарегистрирован:
04 фев 2011, 20:25
Благодарил (а): 0 раз.
Поблагодарили: 5 раз.

Сообщение 19 окт 2012, 05:58

У меня нормально работает.
Любое изменение (не только это) надо делать очень аккуратно, чтоб не набедокурить - ведь достаточно одного лишнего знака (оставленного по невнимательности) - и кирдык, форум вообще не грузится (в чём, впрочем, нет ничего странного). Или наоборот - стирая код, можно нечаянно стереть лишнее с тем-же результатом.
North-Ameri.ca
Аватар пользователя
ursego
Активный участник
 
Сообщений: 72
Зарегистрирован:
13 сен 2012, 23:29
Откуда:
Торонто
Благодарил (а): 4 раз.
Поблагодарили: 2 раз.

Сообщение 05 дек 2012, 02:52

Оказывается, в скрипте был косячок, который уже устранён. Вот правильная версия:

Код: выделить все
<!-- Высветить "Форуму ... лет ... месяцев и ... дней" ------- BEGIN -->
<SCRIPT language=JavaScript>
<!--
var fD = [2012, 7, 25], d1 = 6, m1 = 4, tx = [], rz, d = new Date,
tD = [d.getFullYear (), d.getMonth (), d.getDate ()], dr = tD [2] - fD [2],
mr = tD [1] - fD [1], yr = tD [0] - fD [0], Y = 'год-года-лет',
M = 'месяц-месяца-месяцев', D = 'день-дня-дней', t = function (v, w) {
var x = w.toString ().split (''), y = x [x.length - 1], z = 0; if (w > 4 && w < 21
|| y == 0) z = 2; else if (y > 1 && y < 5) z = 1; else if (y > 4) z = 2; return ' ' + v.split ('-') [z]}
if (dr < 0) dr = tD [2] + d1, mr--; if (yr > 0 && mr < 0) yr -= 1; if (mr < 0) mr = tD [1] + m1;
var yt = (yr) ? yr + t (Y, yr) : ''; if (yt) tx [tx.length] = yt;
var mt = (mr) ? mr + t (M, mr) : ''; if (mt) tx [tx.length] = mt;
var dt = (dr) ? dr + t (D, dr) : ''; if (dt) tx [tx.length] = dt;
if (tx.length == 1) rz = tx [0];
if (tx.length == 2) rz = tx.join (' и ');
if (tx.length == 3) rz = tx [0] + ', ' + tx [1] + ' и ' + tx [2];
document.write ('Форуму ' + rz);
-->
</SCRIPT>
<!-- Высветить "Форуму ... лет ... месяцев и ... дней" --------- END -->
North-Ameri.ca
Аватар пользователя
ursego
Активный участник
 
Сообщений: 72
Зарегистрирован:
13 сен 2012, 23:29
Откуда:
Торонто
Благодарил (а): 4 раз.
Поблагодарили: 2 раз.


Вернуться в Новые возможности

 


  • Похожие темы
    Ответов
    Просмотров
    Последнее сообщение

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Форум поддержки phpBB
2008 - 2017 © BB3x.ru - русская поддержка форума phpBB3
Создано на основе phpBB® Forum Software © phpBB Group
авторов модов
разработчиков скинов
русификаторов
и всех поклонников phpBB3