Перейти к контенту

[2.3.x]Время жизни форума


Рекомендуемые сообщения

  • 4 недели спустя...
  • 2 месяца спустя...
Как ни странно, у меня скрипт с самого начала не заработал. Фаерфокс молчал как партизан, просто ничего не выводил. Использовал эксплорер - он мне выдаёт: Expected '}' Т.е. где-то условие не закрыто. Нашёл, закрыл (кстати, видимо я ещё раз после этого где-то ошибся и удалил одну скобку...) Лан, это мелочи, думаю, я один такой. А вот в одном месте промашка...

_y = Math.floor((_m-1)/12);if(x)_y++;

Т.е. сначала от месяца отнимается единичка, а потом уже он делится для получения кол-ва лет.

Вообщем, вот мой код, если у вас не работает - попробуйте его:

<script language="javascript">
function rus(n,a1,a2,a3){
var s=new String(n);
if(s.length>=2&s.substr(-2,1)=="1") return a1;
switch(s.charAt(s.length-1)){case"1":return a2;case"2":case"3":case"4":return a3;}
return a1;}

x=false;
showYear=true;
start=new Date('May 22, 2007');
dd=new Date();
d0=dd.getDate();
d1=start.getDate();
m0=dd.getMonth();
m1=start.getMonth();
y0=dd.getFullYear();
y1=start.getFullYear();
var _m=(y0-y1)*12+(m0-m1);var _d=0;txt="";
if(d0>d1){_d=d0-d1;
if(x){_m++;_d++;}}

if(d0<d1){__y=(m0==0)?y0-1:y0;__m=(m0==0)?11:m0-1;
_d=(new Date(y0,m0,d0,0,0,0)-new Date(__y,__m,d1,0,0,0))/(1000*24*60*60);
if(!x){_m--;_d--;}}
if(d0==d1)
 txt="Форуму <b>"+_m+"</b> "+rus(_m,"месяцев","месяц","месяца")+" <font color=red>РОВНО!</font>";
_y = Math.floor((_m)/12);if(x)_y++;
if(d0==d1&m0==m1)
 txt="Форуму <b>"+_y+"</b> "+rus(_y,"лет","год","года")+" <b><font color=red>ДР форума!</font></b>";
_m=(_y>0&showYear)?_m%12:_m;
ty=(showYear&_y>0)?"<b>"+_y+"</b> "+rus(_y,"лет","год","года"):"";
tm=(_m>0)?"<b>"+_m+"</b> "+rus(_m,"месяцев","месяц","месяца"):"";
_d=Math.ceil(_d);
td="<b>"+_d+"</b> "+rus(_d,"дней","день","дня");
if(x){
ty=(showYear)?"<b>"+_y+"</b>-й год":"";
tm="<b>"+_m+"</b>-й месяц";
td="<b>"+_d+"</b>-й день";
if(txt=="")txt="Форум в сети: "+ty+" "+tm+" "+td+".";
}else
if(txt=="")txt="Форуму уже: "+ty+" "+tm+" и "+td+".";
document.write(txt); 
</script>

Да, он занимает много места, зато в нём удобнее ориентироваться.

 

Родной код работол нормально пока не исполнился год форуму и он мне показал Форуму 0 лет

 

Поставил этот код и теперь все нормально показывает

Спасибо Dvvarf

Ссылка на комментарий
Поделиться на других сайтах

  • 8 месяцев спустя...
ребят а кто-нибуть может подсказать в какой шаблон и куда надо вставить этот код чтоб он был только на главной странице внизу статистики?

post-82499-1244286834_thumb.jpg

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...
  • 1 месяц спустя...

mylipetsk, по какому стандарту валидация?

Aleksandriiskii, это очень просто. Внешний вид -> Изменение HTML-шаблонов -> skin_boards (главная страница) -> ShowStats.

Там, после

<td class="row1" width="1%"><{F_STATS}></td>

добавляем

<td class="row2">тут.код</td>

где, соответственно вместо тут.код надо вписать код. =)

З.Ы. Ох, давно меня тут не было... Отдалился я от ипб.

З.З.Ы. Код счётчика, скажем так, не до конца совершенен. Но после нескольких изменений он точно стал лучше + одна полноценная настройка

<script language="javascript">
function rus(n,a1,a2,a3){
var s=new String(n);
if(s.length>=2&s.substr(-2,1)=="1") return a1;
switch(s.charAt(s.length-1)){case"1":return a2;case"2":case"3":case"4":return a3;}
return a1;
}

start=new Date('July 10, 2010');
showYear=true;
x=false;
// эти параметры, если вы поставите x в true
showDay=false;
showMonth=false;
// всё, дальше код
dd=new Date();
d0=dd.getDate();
d1=start.getDate();
m0=dd.getMonth();
m1=start.getMonth();
y0=dd.getFullYear();
y1=start.getFullYear();
var _m=(y0-y1)*12+(m0-m1);
var _d=0;
var txt="";

if(d0>d1){_d=d0-d1;if(x){_m++;_d++;}}
if(d0<d1){
__y=(m0==0)?y0-1:y0;__m=(m0==0)?11:m0-1;
_d=(new Date(y0,m0,d0,0,0,0)-new Date(__y,__m,d1,0,0,0))/(1000*24*60*60);
if(!x){_m--;_d--;}
}

if(d0==d1&txt=="")
txt="Форуму <b>"+_m+"</b> "+rus(_m,"месяцев","месяц","месяца")+" <font color=red>ровно!</font>";
_y = Math.floor((_m)/12);
if(d0==d1&m0==m1&txt=="")
txt="Форуму <b>"+_y+"</b> "+rus(_y,"лет","год","года")+" <b><font color=red>Юбилей!</font></b>";
_m=(_y>0&showYear)?_m%12:_m;
_d=Math.ceil(_d);
if(txt==""){
if(x){
_y++;ty=(showYear)?" <b>"+_y+"</b>-й год":"";
tm=(showMonth)?" <b>"+_m+"</b>-й месяц":"";
td=(showDay)?"<b> "+_d+"</b>-й день":"";
txt="Форум в сети уже"+ty+tm+td+".";
} else {
ty=(showYear&_y>0)?" <b>"+_y+"</b> "+rus(_y,"лет","год","года"):"";
tm=(_m>0)?" <b>"+_m+"</b> "+rus(_m,"месяцев","месяц","месяца"):"";
td=(_m>0)?" и ":" ";td+="<b>"+_d+"</b> "+rus(_d,"дней","день","дня");
txt="Форуму уже:"+ty+tm+td+".";
}
}
if(_y<0|_m<0|_d<0) txt="Если верить звёздам, то форум ещё не появился...";
document.write(txt);
</script>

Если поставите x=true, то вывод будет "Форум в сети уже 3-й год". С помощью параметров ShowMonth и ShowDay можно соответственно добавить в вывод месяц и день, а с помощью параметра ShowYear убрать год (чтобы сделать вывод "Форум в сети уже 8-й месяц" или даже "Форум в сети уже 5й день").

Ссылка на комментарий
Поделиться на других сайтах

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.