Небольшой скрипт, который позволяет отобразить количество дней со дня регистрации пользователя, под его аватарой, при просмотре тем.

Скрипт можно установить как дополнение к уже существующему полю "Зарегистрирован: ...", либо как замену.

Установка крайне проста.
Для prosilver и его клонов. Открываете шаблон viewtopic_body.html, находите:

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

<!-- IF postrow.POSTER_POSTS != '' --><dd><strong>{L_POSTS}:</strong> {postrow.POSTER_POSTS}</dd><!-- ENDIF -->
Добавляете после, либо меняете на:

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

<!-- IF postrow.POSTER_POSTS != '' -->
<dd>
<script type="text/javascript">
p_j = '{postrow.POSTER_JOINED}';
ms='янвфевмарапрмайиюниюлавгсеноктноядек';
d = p_j.substr(0,2)*1;
m = ms.indexOf(p_j.substr(3,3))/3;
y = p_j.substr(7,4)*1;
d0 = new Date(y,m,d);
d1 = new Date();
dt = (d1.getTime() - d0.getTime()) / (1000*60*60*24);
cDay = Math.floor(dt);
cMon = "0";
cNear = "0";
tDay = " дней ";
tMon = " месяцев ";
tNear = " лет ";
if (cDay >= 30) cMon = Math.floor(cDay/30.4375);
if (cDay >= 365) cNear = Math.floor(cMon/12);
cDay = cDay-Math.floor(cMon*30.4375);
cMon = cMon-(cNear*12);
if (cDay >=2 && cDay <=4 || cDay >=22 && cDay <=24) tDay = " дня ";
if (cDay ==1 || cDay ==21 || cDay ==31) tDay = " день ";
if (cMon >=2 && cMon <=4) tMon = " месяца ";
if (cMon ==1) tMon = " месяц ";
if (cNear >=2 && cNear <=4 || cNear >=22 && cNear <=24) tNear = " года ";
if (cNear ==1 || cNear ==21 || cNear ==31) tNear = " год ";
document.write('<strong>На форуме:</strong> ');
if (cMon<1 && cNear<1) document.write(cDay+tDay);
else if (cMon>=1 && cNear<1) document.write(cMon+tMon+cDay+tDay);
else document.write(cNear+tNear+cMon+tMon+cDay+tDay);
</script>
</dd>
<!-- ENDIF -->


Для subsilver2 и его клонов. Открываете шаблон viewtopic_body.html, находите:

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

<!-- IF postrow.POSTER_JOINED --><br /><b>{L_JOINED}:</b> {postrow.POSTER_JOINED}<!-- ENDIF -->
Добавляете после, либо меняете на:

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

<!-- IF postrow.POSTER_JOINED -->
<script type="text/javascript">
p_j = '{postrow.POSTER_JOINED}';
ms='янвфевмарапрмайиюниюлавгсеноктноядек';
d = p_j.substr(0,2)*1;
m = ms.indexOf(p_j.substr(3,3))/3;
y = p_j.substr(7,4)*1;
d0 = new Date(y,m,d);
d1 = new Date();
dt = (d1.getTime() - d0.getTime()) / (1000*60*60*24);
cDay = Math.floor(dt);
cMon = "0";
cNear = "0";
tDay = " дней ";
tMon = " месяцев ";
tNear = " лет ";
if (cDay >= 30) cMon = Math.floor(cDay/30.4375);
if (cDay >= 365) cNear = Math.floor(cMon/12);
cDay = cDay-Math.floor(cMon*30.4375);
cMon = cMon-(cNear*12);
if (cDay >=2 && cDay <=4 || cDay >=22 && cDay <=24) tDay = " дня ";
if (cDay ==1 || cDay ==21 || cDay ==31) tDay = " день ";
if (cMon >=2 && cMon <=4) tMon = " месяца ";
if (cMon ==1) tMon = " месяц ";
if (cNear >=2 && cNear <=4 || cNear >=22 && cNear <=24) tNear = " года ";
if (cNear ==1 || cNear ==21 || cNear ==31) tNear = " год ";
document.write('<br /><b>На форуме:</b> ');
if (cMon<1 && cNear<1) document.write(cDay+tDay);
else if (cMon>=1 && cNear<1) document.write(cMon+tMon+cDay+tDay);
else document.write(cNear+tNear+cMon+tMon+cDay+tDay);
</script>
<!-- ENDIF -->
Надпись На форуме: можно поменять на Стаж:, либо на что нибудь своё.

Скрипт будет использовать правильный русский язык при отображении даты: месяцев, дней, лет, года и т.д.

Также скрипт можно немного переделать чтобы использовать в качестве отчета времени со дня основания форума, либо любого другого события, достаточно удалить первые пять строк кода и установит в d0 = new Date необходимую дату, следующего вида - 'September 24, 2013'.
Комментарии: 29

svatomir 15 окт 2015, 01:32 Сообщение

CabinetAdmin писал(а): <!-- IF postrow.POSTER_POSTS -->
<script type="text/javascript">
p_j = '{postrow.POSTER_JOINED}';
ms='янвфевмарапрмайиюниюлавгсеноктноядек';
d = p_j.substr(0,2)*1;
m = ms.indexOf(p_j.substr(3,3))/3;
y = p_j.substr(7,4)*1;
d0 = new Date(y,m,d);
d1 = new Date();
dt = (d1.getTime() - d0.getTime()) / (1000*60*60*24);
cDay = Math.floor(dt);
cMon = "0";
cNear = "0";
oDay = " 0 ";
tDay = " дней ";
tMon = " месяцев ";
tNear = " лет ";
if (cDay >= 30) cMon = Math.floor(cDay/30.4375);
if (cDay >= 365) cNear = Math.floor(cMon/12);
cDay = cDay-Math.floor(cMon*30.4375);
cMon = cMon-(cNear*12);
if (cDay >=2 && cDay <=4 || cDay >=22 && cDay <=24) tDay = " дня ";
if (cDay ==1 || cDay ==21 || cDay ==31) tDay = " день ";
if (cMon >=2 && cMon <=4) tMon = " месяца ";
if (cMon ==1) tMon = " месяц ";
if (cNear >=2 && cNear <=4 || cNear >=22 && cNear <=24) tNear = " года ";
if (cNear ==1 || cNear ==21 || cNear ==31) tNear = " год ";
document.write('<br /><b>На форуме:</b> ');
if (cMon<1 && cNear<1) document.write(oDay+tDay);
else if (cMon<1 && cNear<1) document.write(cDay+tDay);
else if (cMon>=1 && cNear<1) document.write(cMon+tMon+cDay+tDay);
else document.write(cNear+tNear+cMon+tMon+cDay+tDay);
</script>
<!-- ENDIF -->
вот этот скрипт работает. смотрите.http://moispitz.luckbb.ru/viewtopic.php?f=2&t=1
  • 0
Русскоязычный форум любителей собак породы шпиц всех мастей. Приглашаются все желающие. Форум только открылся, и находится в разработке, тем не менее я как админ и основатель форума, учту все пожелания по изменениям в форуме.
http://moispitz.luckbb.ru/

eska 15 окт 2015, 08:18 Сообщение

Это для версии 3.0.x что уже не очень актуально, вот если бы для линейки 3.1.x было бы хорошо.
  • 0

vla20071 15 окт 2015, 17:06 Сообщение

eska писал(а): вот если бы для линейки 3.1.x было бы хорошо.
есть такое -
dmzx-Member-time-counter-63115d6 (1).zip
24.41 КБ 313 скачиваний
Стаж или количество дней на форуме под аватарой на phpbb. - c9249bf5a218b912f098a39a69dc4b0a.PNG
но оно показывает только в профиле, но думаю, что в топик не сложно добавить... а также, там указывается от скольких лет, дней, часов и секунд... Думаю, что часы, минуты и секунды лишние... Полагаю, что понимающий может внести изменения в течении каких-то минут :) Если никто не возьмется, то попробую вечером сам сделать :) но это будет не быстро :D
  • 1

svatomir 15 окт 2015, 23:36 Сообщение

vla20071 писал(а):
eska писал(а): вот если бы для линейки 3.1.x было бы хорошо.
есть такое -
dmzx-Member-time-counter-63115d6 (1).zip
c9249bf5a218b912f098a39a69dc4b0a.PNG
но оно показывает только в профиле, но думаю, что в топик не сложно добавить... а также, там указывается от скольких лет, дней, часов и секунд... Думаю, что часы, минуты и секунды лишние... Полагаю, что понимающий может внести изменения в течении каких-то минут :) Если никто не возьмется, то попробую вечером сам сделать :) но это будет не быстро :D
вот если сделаете чтобы отображалось в личном профиле, и на странице форума, то вообще буду благодарен. :drink:
  • 0
Русскоязычный форум любителей собак породы шпиц всех мастей. Приглашаются все желающие. Форум только открылся, и находится в разработке, тем не менее я как админ и основатель форума, учту все пожелания по изменениям в форуме.
http://moispitz.luckbb.ru/

romaamor 15 окт 2015, 23:40 Сообщение

А тут вопрос, нагрузка на сервер ? Запросы будет делать.? Даже не будет, та фиг его знает :D а сколько ?Хотя я не гуру. ..
  • 1

eska 16 окт 2015, 07:09 Сообщение

romaamor, ты покурил :D
  • 0

romaamor 16 окт 2015, 10:58 Сообщение

eska писал(а): ты покурил
Не курю принципиально. Но пьяный вчера был. Факт. Я и сейчас не могу понять чё я написал. :)
  • 0

CabinetAdmin 17 окт 2015, 14:18 Сообщение

svatomir писал(а): вот если сделаете чтобы отображалось в личном профиле
В шаблоне memberlist_view.html найти:

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

			<dt>{L_JOINED}:</dt> <dd>{JOINED}</dd>
и заменить на:

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

			<dt>На форуме:</dt> <dd>
<script type="text/javascript">
p_j = '{JOINED}';
ms='янвфевмарапрмайиюниюлавгсеноктноядек';
d = p_j.substr(0,2)*1;
m = ms.indexOf(p_j.substr(3,3))/3;
y = p_j.substr(7,4)*1;
d0 = new Date(y,m,d);
d1 = new Date();
dt = (d1.getTime() - d0.getTime()) / (1000*60*60*24);
cDay = Math.floor(dt);
cMon = "0";
cNear = "0";
tDay = " дней ";
tMon = " месяцев ";
tNear = " лет ";
if (cDay >= 30) cMon = Math.floor(cDay/30.4375);
if (cDay >= 365) cNear = Math.floor(cMon/12);
cDay = cDay-Math.floor(cMon*30.4375);
cMon = cMon-(cNear*12);
if (cDay >=2 && cDay <=4 || cDay >=22 && cDay <=24) tDay = " дня ";
if (cDay ==1 || cDay ==21 || cDay ==31) tDay = " день ";
if (cMon >=2 && cMon <=4) tMon = " месяца ";
if (cMon ==1) tMon = " месяц ";
if (cNear >=2 && cNear <=4 || cNear >=22 && cNear <=24) tNear = " года ";
if (cNear ==1 || cNear ==21 || cNear ==31) tNear = " год ";
if (cMon<1 && cNear<1) document.write(cDay+tDay);
else if (cMon>=1 && cNear<1) document.write(cMon+tMon+cDay+tDay);
else document.write(cNear+tNear+cMon+tMon+cDay+tDay);
</script>
</dd>
Для subsilver2 в том же шаблоне находим:

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

				<td class="gen" align="{S_CONTENT_FLOW_END}" nowrap="nowrap">{L_JOINED}: </td>
				<td width="100%"><b class="gen">{JOINED}</b></td>
и меняете на:

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

				<td class="gen" align="{S_CONTENT_FLOW_END}" nowrap="nowrap">На форуме: </td>
				<td width="100%">
<script type="text/javascript">
p_j = '{JOINED}';
ms='янвфевмарапрмайиюниюлавгсеноктноядек';
d = p_j.substr(0,2)*1;
m = ms.indexOf(p_j.substr(3,3))/3;
y = p_j.substr(7,4)*1;
d0 = new Date(y,m,d);
d1 = new Date();
dt = (d1.getTime() - d0.getTime()) / (1000*60*60*24);
cDay = Math.floor(dt);
cMon = "0";
cNear = "0";
tDay = " дней ";
tMon = " месяцев ";
tNear = " лет ";
if (cDay >= 30) cMon = Math.floor(cDay/30.4375);
if (cDay >= 365) cNear = Math.floor(cMon/12);
cDay = cDay-Math.floor(cMon*30.4375);
cMon = cMon-(cNear*12);
if (cDay >=2 && cDay <=4 || cDay >=22 && cDay <=24) tDay = " дня ";
if (cDay ==1 || cDay ==21 || cDay ==31) tDay = " день ";
if (cMon >=2 && cMon <=4) tMon = " месяца ";
if (cMon ==1) tMon = " месяц ";
if (cNear >=2 && cNear <=4 || cNear >=22 && cNear <=24) tNear = " года ";
if (cNear ==1 || cNear ==21 || cNear ==31) tNear = " год ";
if (cMon<1 && cNear<1) document.write('<b class="gen">'+cDay+tDay+'</b>');
else if (cMon>=1 && cNear<1) document.write('<b class="gen">'+cMon+tMon+cDay+tDay+'</b>');
else document.write('<b class="gen">'+cNear+tNear+cMon+tMon+cDay+tDay+'</b>');
</script></td>
  • 1
Хочешь поблагодарить? Есть способы: заходи на форум, создавай темы, делись опытом и наработками, общайся!

svatomir 19 окт 2015, 02:21 Сообщение

это работающий скрипт? и где указывать дату регистрации пользователя? вот здесь?
d1 = new Date();
  • 0
Последний раз редактировалось CabinetAdmin 19 окт 2015, 15:08, всего редактировалось 1 раз.
Причина: Удалена цитата
Русскоязычный форум любителей собак породы шпиц всех мастей. Приглашаются все желающие. Форум только открылся, и находится в разработке, тем не менее я как админ и основатель форума, учту все пожелания по изменениям в форуме.
http://moispitz.luckbb.ru/

svatomir 19 окт 2015, 03:33 Сообщение

Огромная благодарность
  • 0
Последний раз редактировалось CabinetAdmin 19 окт 2015, 15:09, всего редактировалось 1 раз.
Причина: Удалена цитата
Русскоязычный форум любителей собак породы шпиц всех мастей. Приглашаются все желающие. Форум только открылся, и находится в разработке, тем не менее я как админ и основатель форума, учту все пожелания по изменениям в форуме.
http://moispitz.luckbb.ru/

CabinetAdmin 19 окт 2015, 15:11 Сообщение

Не обязательно цитировать всё предыдущее сообщение целиком.

Скрипт идёт как есть, без всяких правок, заменили и всё сразу будет работать.
  • 0
Хочешь поблагодарить? Есть способы: заходи на форум, создавай темы, делись опытом и наработками, общайся!

eska 02 фев 2018, 14:25 Сообщение

на 3.1 встанет CabinetAdmin?
  • 0

CabinetAdmin 02 фев 2018, 18:27 Сообщение

Встанет, но лучше всё таки поискать расширение, наверно то расширение, что выше, уже дорабатывалось и меняет надпись и в темах, надо поискать его на забугорном форуме.
  • 0
Хочешь поблагодарить? Есть способы: заходи на форум, создавай темы, делись опытом и наработками, общайся!

Иринка 30 янв 2019, 12:18 Сообщение

CabinetAdmin писал(а): Добавляете после, либо меняете на:

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

<!-- IF postrow.POSTER_POSTS != '' -->
<dd>
<script type="text/javascript">
p_j = '{postrow.POSTER_JOINED}';
ms='янвфевмарапрмайиюниюлавгсеноктноядек';
d = p_j.substr(0,2)*1;
m = ms.indexOf(p_j.substr(3,3))/3;
y = p_j.substr(7,4)*1;
d0 = new Date(y,m,d);
d1 = new Date();
dt = (d1.getTime() - d0.getTime()) / (1000*60*60*24);
cDay = Math.floor(dt);
cMon = "0";
cNear = "0";
tDay = " дней ";
tMon = " месяцев ";
tNear = " лет ";
if (cDay >= 30) cMon = Math.floor(cDay/30.4375);
if (cDay >= 365) cNear = Math.floor(cMon/12);
cDay = cDay-Math.floor(cMon*30.4375);
cMon = cMon-(cNear*12);
if (cDay >=2 && cDay <=4 || cDay >=22 && cDay <=24) tDay = " дня ";
if (cDay ==1 || cDay ==21 || cDay ==31) tDay = " день ";
if (cMon >=2 && cMon <=4) tMon = " месяца ";
if (cMon ==1) tMon = " месяц ";
if (cNear >=2 && cNear <=4 || cNear >=22 && cNear <=24) tNear = " года ";
if (cNear ==1 || cNear ==21 || cNear ==31) tNear = " год ";
document.write('<strong>На форуме:</strong> ');
if (cMon<1 && cNear<1) document.write(cDay+tDay);
else if (cMon>=1 && cNear<1) document.write(cMon+tMon+cDay+tDay);
else document.write(cNear+tNear+cMon+tMon+cDay+tDay);
</script>
</dd>
<!-- ENDIF -->
Что-то неправильно считает)
Стаж или количество дней на форуме под аватарой на phpbb. - Безымянный.jpg
Стаж или количество дней на форуме под аватарой на phpbb. - Безымянный.jpg (19.55 КБ) 1549 просмотров
  • 0

CabinetAdmin 30 янв 2019, 16:15 Сообщение

Для современных версий нужно использовать расширение, выше как раз есть вложение с ним.
  • 1
Хочешь поблагодарить? Есть способы: заходи на форум, создавай темы, делись опытом и наработками, общайся!

Похожие темы