Разница в датах документа опубликовано и снято
        Подскажите пожалуйста, как можно вывести разницу во времени публикации и снято с публикации документа.
Например, должно выводится так:
    
    
                                                                                
            Например, должно выводится так:
до отмены публикации документа осталось 8 дней 23ч 30 мин 20 сек    Комментарии: 15
                Все просто, можно, например, использовать такой сниппет.
Выдаст разницу между текущем временем и временем окончания публикации.
            
                    Выдаст разницу между текущем временем и временем окончания публикации.
/* Сниппет untilEndPublish */
$until_end_publish = $modx->resource->unpub_date - time();
return date('d дней, H часов, m минут, s секунд ',$until_end_publish);Вызов на странице с ресурсом: [[!untilEndPublish]].
                … и каждую секунду обновлять страницу. :)            
                    
                Сергей, если вы подругому не умеете, можете обновлять :) А я бы дописал к этому еще обратный отсчет на js)            
                    
                Ну попробуйте дописать js к вашему сниппету, а я посмотрю и поучусь.            
                    
                Я напишу js скрипт и поделюсь)            
                    
                Спасибо большое за подсказку. Я не знал как получить дату в нужном формате, почему то с глупости пытался сделать по другому.            
                    
                Всегда, пожалуйста!)            
                    
                Перед тем как задать вопрос я бы начал с Яндекса — javascript таймера обратного отсчета.            
                    
                А что толку от таймера, если человеку надо сначала время получить? По той ссылке, что вы кинули на яндекс, это не очень понятно.            
                    
                А по вашему сниппету все супер мега понятно. Мда.
П.С. Сразу видно — школа Николая.
                    П.С. Сразу видно — школа Николая.
                Мой сниппет отдает время до окончания публикации, об этом и был вопрос. Про таймеры в вопросе не было ни слова.            
                    
                Точно.
П.С. Анекдот вспомнился:
— Товарищ прапорщик, разрешите спросить, под каким углом надо выстрелить из пушки, чтобы снаряд улетел максимально далеко?
— Спрашивайте.
))
                    П.С. Анекдот вспомнился:
— Товарищ прапорщик, разрешите спросить, под каким углом надо выстрелить из пушки, чтобы снаряд улетел максимально далеко?
— Спрашивайте.
))
                Сергей, напишите ваше решение, если вы такой всезнающий. Мое тут есть, вашего нету. Человеку надо получить ответ на вопрос, а не смотреть наши дебаты.            
                    
                Если кому то будет интересно, то я сделал так:
                    <?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]]`]]            
                А если нужно живой счетчик то так:
                    <?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;
}            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.