Eugene Generalov

Eugene Generalov

С нами с 28 февраля 2015; Место в рейтинге пользователей: #303
Eugene Generalov
17 августа 2016, 07:08
0
Разобрался сам.
Кто то (наверно я) настроил в параметрах вывода «тип вывода: дата». Поэтому getTVValue так выводил поле.
Eugene Generalov
26 декабря 2015, 18:11
0
Я знаю, читал. Office отличная вещь, но ради одной регистрации ставить целый пакет не вариант.
Eugene Generalov
25 декабря 2015, 12:58
0
А если нужно живой счетчик то так:
<?php
/* Сниппет untilEndPublish */
if (isset($pageId)){
    $res = $modx->getObject('modResource',$pageId);
    $until_end_publish = $res->unpub_date;
    $until_end_publish -= time();
}
else{$until_end_publish = $modx->resource->unpub_date - time();}
return $until_end_publish;
И JS на фронте:
<div id="company-timer-[[*id]]" class="c2">[[!untilEndPublish? &kuponId=`[[*id]]`]]</div>
<script type="text/javascript">new CreateTimer("company-timer-[[*id]]", [[!untilEndPublish? &kuponId=`[[*id]]`]]);</script>
var Timer;
var TotalSeconds;

function CreateTimer(TimerID, Time) {
    var oop = this;
    this.Timer = document.getElementById(TimerID);
    this.TotalSeconds = Time;
    this.update();
    oop.to = setTimeout(function() {
        oop.tick();
    }, 1000);
}
CreateTimer.prototype = {
    tick: function() {
        var oop = this;
        if (this.TotalSeconds <= 0) {
            return;
        }
        this.TotalSeconds -= 1;
        this.update()
        oop.to = setTimeout(function() {
            oop.tick();
        }, 1000);
    },
    update: function() {
        var Seconds = this.TotalSeconds,
            Days = Math.floor(Seconds / 86400);
        Seconds -= Days * 86400;
        var Hours = Math.floor(Seconds / 3600);
        Seconds -= Hours * (3600);
        var Minutes = Math.floor(Seconds / 60);
        Seconds -= Minutes * (60);
        var DD = ' дней ';
        if (Days < 5) DD = ' дня ';
        if (Days < 2) DD = ' день ';
        var TimeStr = ((Days > 0) ? Days + DD : "") + LeadingZero(Hours) + ":" + LeadingZero(Minutes) + ":" + LeadingZero(Seconds)
        this.Timer.innerHTML = TimeStr;
    }
}

function LeadingZero(Time) {
    return (Time < 10) ? "0" + Time : +Time;
}
Eugene Generalov
25 декабря 2015, 12:50
1
0
Если кому то будет интересно, то я сделал так:
<?php
/* Сниппет untilEndPublish */
if (isset($pageId)){
    $res = $modx->getObject('modResource',$pageId);
    $until_end_publish = $res->unpub_date;
    $until_end_publish -= time();
}
else{$until_end_publish = $modx->resource->unpub_date - time();}

if ($until_end_publish < 0){
    return "Время вышло";
}
if($until_end_publish < 3600){
    return date('i минут, s секунд ',$until_end_publish);
}
if ($until_end_publish < 86400){
    return date('G часов, i минут, s секунд ',$until_end_publish);
}
if ($until_end_publish > 86400){
    return date('d дней, G часов, i минут, s секунд ',$until_end_publish);
}
И вызов:
[[!untilEndPublish? &pageId=`[[*id]]`]]
Eugene Generalov
09 декабря 2015, 15:24
0
Я напишу js скрипт и поделюсь)
Eugene Generalov
09 декабря 2015, 15:23
+2
Спасибо большое за подсказку. Я не знал как получить дату в нужном формате, почему то с глупости пытался сделать по другому.