Forums / National / Russian / Тег cotonti в php код который на tpl странице

12>>>

vpktz
#1 2024-04-20 14:55

Подразумевается что на одно из страниц projects.list.tpl будет есть тег с датой

{PRJ_ROW_EXPIRED|cot_date('d.m.Yг H:i', $this)}

Это дата до которой действует заказ. 

Можно ли как то этот тег интегрировать в маленький php код который будет прямо на странице, который обращаясь к этой дате будет отсчитывать сколько осталось дней/часов/минут/секунд?

Или просто подскажите есть ли варианты вписывать теги cotonti прямо  в php код который будет прямо на странице tpl? Хочу по эксперементировать.

Я понимаю что это не правльный путь и проще дописать этот самый плагин который выдает дату до которой идет отсчет.  Но  все же интересно, возможно ли теги вставлять в php код

Kopusha
#2 2024-04-21 04:31

Не правильный путь задать вопрос так что я дважды прочитав не понял что спрашивали.

Kort
#3 2024-04-21 05:37

Смешались в кучу кони, люди... Если надо просто статично вывести время до окончания проекта, то это будет php. Про теги и Котонти тоже ничего не понял. Если надо чтобы "тикало", то javascript. Самый простой вариант:

<html>
<head>
	<title>Multiple Countdown Clocks</title>
</head>
<body>
	<div id="clock"></div>
</body>
<script language="JavaScript">

StartCountDown("clock","4/21/2024 19:00 +0300")

/*
Author:		Robert Hashemian (http://www.hashemian.com/)
Modified by:	Munsifali Rashid (http://www.munit.co.uk/)
Modified by:	Tilesh Khatri
*/

function StartCountDown(myDiv,myTargetDate) {
	var dthen	= new Date(myTargetDate);
	var dnow	= new Date();
	ddiff		= new Date(dthen-dnow);
	gsecs		= Math.floor(ddiff.valueOf()/1000);
	CountBack(myDiv,gsecs);
}

function Calcage(secs, num1, num2) {
	s = ((Math.floor(secs/num1))%num2).toString();
	if (s.length < 2) {	
		s = "0" + s;
	}
	return (s);
}

function CountBack(myDiv, secs) {
	var DisplayStr;
	var DisplayFormat = "%%D%% Days %%H%%:%%M%%:%%S%%";
	DisplayStr = DisplayFormat.replace(/%%D%%/g,	Calcage(secs,86400,100000));
	DisplayStr = DisplayStr.replace(/%%H%%/g,		Calcage(secs,3600,24));
	DisplayStr = DisplayStr.replace(/%%M%%/g,		Calcage(secs,60,60));
	DisplayStr = DisplayStr.replace(/%%S%%/g,		Calcage(secs,1,60));
	if (secs > 0) {	
		document.getElementById(myDiv).innerHTML = DisplayStr;
		setTimeout("CountBack('" + myDiv + "'," + (secs-1) + ");", 990);
	} else {
		document.getElementById(myDiv).innerHTML = "Auction Over";
	}
}

</script>
</html>

Скрипт, конечно убираем в отдельный файл.

SED.by - создание сайтов, разработка плагинов и тем для Котонти
This post was edited by Kort (2024-04-21 06:07, 6 months ago)
Kabak
#4 2024-04-21 08:36

Нужно писать код на JS чтобы на странице шёл обратный отсчёт в реальном времени

Kopusha
#5 2024-04-21 10:24
#47974 Kort:

Скрипт, конечно убираем в отдельный файл.

А смысл?

Kort
#6 2024-04-21 10:35
#47976 Kopusha:
#47974 Kort:

Скрипт, конечно убираем в отдельный файл.

А смысл?

Ну это кто как хочет)

SED.by - создание сайтов, разработка плагинов и тем для Котонти
Kopusha
#7 2024-04-21 12:13

Смутило "конечно". Обычно оставляю единичные не используемые более нигде скрипты в теле. Вынести всегда успею. Особенно при разработке в теле норм.

vpktz
#8 2024-04-21 13:23

 Начал интересоваться про php 

 и хотел по эксперементировать, но сейчас понял что php не воспроизводитьсяся на tpl страницах в целях безопасности. Ладно отпустим этот php)))

 

Вопрос.

Для модуля projects есть плагин expiredprojects который обозначает время до которого проект "годен".

Тег указывает дату пример (до 03.05.2024г 18:14).

{PRJ_ROW_EXPIRED|cot_date('d.m.Yг H:i', $this)}

 

Тег указывает сколько дней есталось пример (осталось 4 дня)

{PRJ_ROW_EXPIRED_DAYS|cot_date('d.m.Y H:i:s', $this)}

 

Хочется что бы он показывал не так грубо ( в днях), а до минуты например (осталось 4 дня, 7 часов, 56 минут)

 

Kort
#9 2024-04-21 13:42

Тебе же готовый скрипт дан. Сформируй дату завершения проекта, добавь ее в кастомный атрибут тега чтобы можно было считать его javascript и все.

Примерно так:

<div id="clock" data-expires="{PRJ_ROW_EXPIRED|cot_date('m/d/Y H:i +0300', $this)}"></div>

https://jsfiddle.net/Rackne/2x1rdgzy/3/

Добавлено 1 минута спустя:

#47978 Kopusha:

Смутило "конечно". Обычно оставляю единичные не используемые более нигде скрипты в теле. Вынести всегда успею. Особенно при разработке в теле норм.

А ты не смущайся. Кто как хочет, конечно, но в итоге все же желательно убирать все в js.

SED.by - создание сайтов, разработка плагинов и тем для Котонти
This post was edited by Kort (2024-04-23 05:22, 6 months ago)
Kopusha
#10 2024-04-21 17:24
#47979 vpktz:

Хочется что бы он показывал не так грубо ( в днях), а до минуты например (осталось 4 дня, 7 часов, 56 минут)

 

Тебе надо что бы на стр было написано - До 12:15 3 марта 2025
просто {PRJ_ROW_EXPIRED|cot_date('m/d/Y H:i +0300', $his)}
Или "До конца проекта осталось 11 месяцев три дня и 15 минут"
Тогда как Корт советует

vpktz
#11 2024-04-22 19:09
#47980 Kort:

Тебе же готовый скрипт дан. Сформируй дату завершения проекта, добавь ее в кастомный атрибут тега чтобы можно было считать его javascript и все.

Примерно так:

<div id="clock" data-expires="{PRJ_ROW_EXPIRED|cot_date('m/d/Y H:i +0300', $his)}"></div>

https://jsfiddle.net/Rackne/2x1rdgzy/3/

Добавлено 1 минута спустя:

#47978 Kopusha:

Смутило "конечно". Обычно оставляю единичные не используемые более нигде скрипты в теле. Вынести всегда успею. Особенно при разработке в теле норм.

А ты не смущайся. Кто как хочет, конечно, но в итоге все же желательно убирать все в js.

 

 

Не работает.

1) Я не понимаю как скрипт будет работать если у него по дефолту прописанны параметры

<script type="text/javascript">
                    StartCountDown("clock","4/25/2024 19:00 +0300") 
                    function StartCountDown(myDiv,myTargetDate) {
                        var dthen   = new Date(myTargetDate);
                        var dnow    = new Date();
                        ddiff       = new Date(dthen-dnow);
                        gsecs       = Math.floor(ddiff.valueOf()/1000);
                        CountBack(myDiv,gsecs);
                    }
                    function Calcage(secs, num1, num2) {
                        s = ((Math.floor(secs/num1))%num2).toString();
                        if (s.length < 2) {
                            s = "0" + s;
                        }
                        return (s);
                    }
                    function CountBack(myDiv, secs) {
                        var DisplayStr;
                        var DisplayFormat = "%%D%% Days %%H%%:%%M%%:%%S%%";
                        DisplayStr = DisplayFormat.replace(/%%D%%/g,    Calcage(secs,86400,100000));
                        DisplayStr = DisplayStr.replace(/%%H%%/g,       Calcage(secs,3600,24));
                        DisplayStr = DisplayStr.replace(/%%M%%/g,       Calcage(secs,60,60));
                        DisplayStr = DisplayStr.replace(/%%S%%/g,       Calcage(secs,1,60));
                        if (secs > 0) {
                            document.getElementById(myDiv).innerHTML = DisplayStr;
                            setTimeout("CountBack('" + myDiv + "'," + (secs-1) + ");", 990);
                        } else {
                            document.getElementById(myDiv).innerHTML = "Auction Over";
                        }
                    }
                    </script>

Соответственно при вводе  

<div id="clock" data-expires="{PRJ_ROW_EXPIRED|cot_date('m/d/Y H:i +0300', $his)}"></div>

он выводит эти дефолтные значения, то есть отсчет начинается от 4/25/2024 19:00 +0300 и даже {PRJ_ROW_EXPIRED|cot_date('m/d/Y H:i +0300', $his)} не влияет..

 

 

 

 

 

Kort
#12 2024-04-22 19:21
SED.by - создание сайтов, разработка плагинов и тем для Котонти
vpktz
#13 2024-04-22 20:10
#47983 Kort:

https://jsfiddle.net/Rackne/2x1rdgzy/14/

 

Если вставлять тег в data-expires="{PRJ_ROW_EXPIRED|cot_date('m/d/Y H:i +0300', $his)}" в место обычных цифр то не отрабатывает и выводит  Auction Over

Еще заметил что по стандарту идет тег {PRJ_ROW_EXPIRED|cot_date('d.m.Yг H:i', $this)}  он выводит корректную дату

А модифицированный тег {PRJ_ROW_EXPIRED|cot_date('m/d/Y H:i +0300', $his)} выдает не корректно  01/01/1970 02:00 +0300

Следовательно подумал что менять местами значения в стандартном теге нельзя, и хотел поменять местами значения в скрипте. Бегло осмотрел код, ничего подобного m/d/Y H:i не увидел, понял что js это что то другое от php и вот я опять пишу новый пост о помощи.... indecision

Dayver
#14 2024-04-22 23:15
#47984 vpktz:
...PIRED|cot_date('m/d/Y H:i +0300', $his)}" в место обычны....

... {PRJ_ROW_EXPIRED|cot_date('d.m.Yг H:i', $this)}  он выводит корректную дату....

...OW_EXPIRED|cot_date('m/d/Y H:i +0300', $his)} выдает не корре....

$this .... может просто не нужно делать синтаксических ошибок при копипасте?

Pavlo Tkachenko aka Dayver
Kort
#15 2024-04-23 05:24

#47985 Dayver:

Моя плохой)

SED.by - создание сайтов, разработка плагинов и тем для Котонти

12>>>