Перестал работать счётчик
Добрый день
На сайте имеется рандомный показатель цифр из заданного диапазона.
В разделе Ресурсы — ДопПоля — Счётчик — можно было ввести диапазон Х, У и при каждом обновлении сайта цифры менялись.
Теперь при изменении диапазона Х, У — цифры остаются одни и те же: 20, 10, 5, 2, 19
Если в разделе Допполя менять названия полей — они обновляются.
В чём может быть проблема?
Только разбираюсь — уровень новичок — попробую приложить всё, что на мой взгляд имеет отношение.
Если чего-то не хватает моу ещё прислать
сайт

раздел с полями в панели управления


код из шаблона
На сайте имеется рандомный показатель цифр из заданного диапазона.
В разделе Ресурсы — ДопПоля — Счётчик — можно было ввести диапазон Х, У и при каждом обновлении сайта цифры менялись.
Теперь при изменении диапазона Х, У — цифры остаются одни и те же: 20, 10, 5, 2, 19
Если в разделе Допполя менять названия полей — они обновляются.
В чём может быть проблема?
Только разбираюсь — уровень новичок — попробую приложить всё, что на мой взгляд имеет отношение.
Если чего-то не хватает моу ещё прислать
сайт
srk35.ruсчётчик на сайте
раздел с полями в панели управления


код из шаблона
<section class="counters">
<div class="polygon-wrap pg2"><div class="polygon"></div></div>
<div class="container">
{$_modx->runSnippet('!AjaxForm@ajaxform', [
'form'=>'form1.form',
'hooks'=>'email',
'emailSubject'=>$_modx->resource.form_01,
'validate'=>'phone:required,name,extra:blank',
'emailTpl'=>'emailTpl',
'emailTo'=>$_modx->resource.manager,
'emailFromName'=>$sn,
])}
{'!setRandom' | snippet}
<div class="counters-group flex-wrapper flex-hl-space-btw flex-vl-top">
<div class="counter-item i1">
<div class="item-content">
<p class="digit" id="dig1">{$_modx->getPlaceholder('r1')}</p>
<p>{$_modx->resource.count_01_text}</p>
</div>
</div>
<div class="counter-item i2">
<div class="item-content">
<p class="digit" id="dig2">{$_modx->getPlaceholder('r2')}</p>
<p>{$_modx->resource.count_02_text}</p>
</div>
</div>
<div class="counter-item i3">
<div class="item-content">
<p class="digit" id="dig3">{$_modx->getPlaceholder('r3')}</p>
<p>{$_modx->resource.count_03_text}</p>
</div>
</div>
<div class="counter-item i4">
<div class="item-content">
<p class="digit" id="dig4">{$_modx->getPlaceholder('r4')}</p>
<p>{$_modx->resource.count_04_text}</p>
</div>
</div>
<div class="counter-item i5">
<div class="item-content">
<p class="digit" id="dig5">{$_modx->getPlaceholder('r5')}</p>
<p>{$_modx->resource.count_05_text}</p>
</div>
</div>
</div>
</div>
</section>код сниппета setRandom <?php
function saveOpt($modx, $opt, $val){
$d = explode(',',$val);
$value = rand($d[0], $d[1]);
$Setting = $modx->getObject('modSystemSetting', $opt);
$Setting->set('value', $value);
$Setting->save();
return $value;
}
$time = 0;
$r_time = (int)$modx->getOption('r_time');
$r_1= (int)$modx->getOption('r1');
if(time() > $r_time || (int)$r_1 == 0 || $r_time == 0){
$t = time();
$r1 = $modx->resource->getTVvalue(36);
$r2 = $modx->resource->getTVvalue(38);
$r3 = $modx->resource->getTVvalue(40);
$r4 = $modx->resource->getTVvalue(42);
$r5 = $modx->resource->getTVvalue(44);
saveOpt($modx, 'r1', $r1);
saveOpt($modx, 'r2', $r2);
saveOpt($modx, 'r3', $r3);
saveOpt($modx, 'r4', $r4);
saveOpt($modx, 'r5', $r5);
$Setting = $modx->getObject('modSystemSetting', 'r_time');
$Setting->set('value', time()+ $time);
$Setting->save();
$modx->cacheManager->refresh(array('system_settings' => array()));
}
$pls['r1'] = $modx->getOption('r1');
$pls['r2'] = $modx->getOption('r2');
$pls['r3'] = $modx->getOption('r3');
$pls['r4'] = $modx->getOption('r4');
$pls['r5'] = $modx->getOption('r5');
$modx->setPlaceholders($pls);код из assets/js/main.js//счетчики
var show = true;
var countbox = ".counters-group";
jQuery(window).on("scroll load resize", function(){
if (!show) return false; // Отменяем показ анимации, если она уже была выполнена
var w_top = jQuery(window).scrollTop(); // Количество пикселей на которое была прокручена страница
var e_top = jQuery(countbox).offset().top; // Расстояние от блока со счетчиками до верха всего документа
var w_height = jQuery(window).height(); // Высота окна браузера
var d_height = jQuery(document).height(); // Высота всего документа
var e_height = jQuery(countbox).outerHeight(); // Полная высота блока со счетчиками
if(w_top + 550 >= e_top || w_height + w_top == d_height || e_height + e_top < w_height) {
var options = {
useEasing: false
}
var numAnim1 = new countUp("dig1", 0, $('#dig1').html()-0, 0, 1, options);
numAnim1.start();
var numAnim2 = new countUp("dig2", 0, $('#dig2').html()-0, 0, 1, options);
numAnim2.start();
var numAnim3 = new countUp("dig3", 0, $('#dig3').html()-0, 0, 1, options);
numAnim3.start();
var numAnim4 = new countUp("dig4", 0, $('#dig4').html()-0, 0, 1, options);
numAnim4.start();
var numAnim5 = new countUp("dig5", 0, $('#dig5').html()-0, 0, 1, options);
numAnim5.start();
show = false;
}
});код countUp.jsfunction countUp(a,b,c,d,e,f){this.options=f||{useEasing:!0,useGrouping:!0,separator:",",decimal:"."};for(var g=0,h=["webkit","moz","ms"],i=0;i<h.length&&!window.requestAnimationFrame;++i)window.requestAnimationFrame=window[h[i]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[h[i]+"CancelAnimationFrame"]||window[h[i]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(a){var c=(new Date).getTime(),d=Math.max(0,16-(c-g)),e=window.setTimeout(function(){a(c+d)},d);return g=c+d,e}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(a){clearTimeout(a)});var j=this;this.d="string"==typeof a?document.getElementById(a):a,this.startVal=Number(b),this.endVal=Number©,this.countDown=this.startVal>this.endVal?!0:!1,this.startTime=null,this.timestamp=null,this.remaining=null,this.frameVal=this.startVal,this.rAF=null,this.decimals=Math.max(0,d||0),this.dec=Math.pow(10,this.decimals),this.duration=1e3*e||2e3,this.easeOutExpo=function(a,b,c,d){return 1024*c*(-Math.pow(2,-10*a/d)+1)/1023+b},this.count=function(a){null===j.startTime&&(j.startTime=a),j.timestamp=a;var b=a-j.startTime;if(j.remaining=j.duration-b,j.options.useEasing)if(j.countDown){var c=j.easeOutExpo(b,0,j.startVal-j.endVal,j.duration);j.frameVal=j.startVal-c}else j.frameVal=j.easeOutExpo(b,j.startVal,j.endVal-j.startVal,j.duration);else if(j.countDown){var c=(j.startVal-j.endVal)*(b/j.duration);j.frameVal=j.startVal-c}else j.frameVal=j.startVal+(j.endVal-j.startVal)*(b/j.duration);j.frameVal=Math.round(j.frameVal*j.dec)/j.dec,j.frameVal=j.countDown?j.frameVal<j.endVal?j.endVal:j.frameVal:j.frameVal>j.endVal?j.endVal:j.frameVal,j.d.innerHTML=j.formatNumber(j.frameVal.toFixed(j.decimals)),b<j.duration?j.rAF=requestAnimationFrame(j.count):null!=j.callback&&j.callback()},this.start=function(a){return j.callback=a,isNaN(j.endVal)||isNaN(j.startVal)?(console.log("countUp error: startVal or endVal is not a number"),j.d.innerHTML="--"):j.rAF=requestAnimationFrame(j.count),!1},this.stop=function(){cancelAnimationFrame(j.rAF)},this.reset=function(){j.startTime=null,cancelAnimationFrame(j.rAF),j.d.innerHTML=j.formatNumber(j.startVal.toFixed(j.decimals))},this.resume=function(){j.startTime=null,j.duration=j.remaining,j.startVal=j.frameVal,requestAnimationFrame(j.count)},this.formatNumber=function(a){a+="";var b,c,d,e;if(b=a.split("."),c=b[0],d=b.length>1?j.options.decimal+b[1]:"",e=/(\d+)(\d{3})/,j.options.useGrouping)for(;e.test©;)c=c.replace(e,"$1"+j.options.separator+"$2");return c+d},j.d.innerHTML=j.formatNumber(j.startVal.toFixed(j.decimals))}
Техническая поддержка MODX
Сайт лежит, тормозит или остался без разработчика?
Переезд с MODX 2 на 3, PHP 7 на 8, скорость и безопасность. Поддержка со сроками и ответственностью, а не совет в чате.
Подробнее
Реклама
Комментарии: 3
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Скриншот:
Копия:
В сниппете setRandom вижу параметр time.
Я правильно понимаю, что это время в секундах, в течение которого обновляются цифры?
Изначально стояло 8000 — что примерно 2 дня и поэтому 2 дня цифры были старыми