Перейти к содержимому


Скипт Обратного Отсчета


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 17

#1 Frost

Frost

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 62 сообщений

Отправлено 18 Апрель 2012 - 21:03

Здравствуйте! Имеется скрипт обратного отсчета, который (или различные подобные ему) используют многие владельцы магазинов здесь. Однако, у него есть один существенный недостаток: данные о времени, то есть о начальной точке отсчета он берет с клиентского компьютера и, соответственно в одном городе он может все еще отсчитывать время акции, тогда как в другом выдавать сообщение что акция завершена, в зависимости от часового пояса. А если у клиента на компьютере время (например год) выставлено некорректно, то совсем полная неразбериха получится. С учетом того, что встроенные акции ведут отсчет по серверному времени, хотелось бы и этот скрипт приспособить под серверное время, чтобы отсчет происходил в соответствии с продолжительностью акции и не зависел от внешних факторов (персональных настроек клиента). Таким образом, прошу помощи в преобразовании скрипта в соответствии с описанной задачей. Спасибо!

Код скрипта:

/*Usage Sample:

<script language="JavaScript">
TargetDate = "12/31/2020 5:00 AM";
BackColor = "palegreen";
ForeColor = "navy";
CountActive = true;
CountStepper = -1;
LeadingZero = true;
DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds.";
FinishMessage = "It is finally here!";
</script>
<script language="JavaScript" src="http://scripts.hashemian.com/js/countdown.js"></script>
*/

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

function CountBack(secs) {
  if (secs < 0) {
	document.getElementById("cntdwn").innerHTML = FinishMessage;
	return;
  }
  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));

  document.getElementById("cntdwn").innerHTML = DisplayStr;
  if (CountActive)
	setTimeout("CountBack(" + (secs+CountStepper) + ")", SetTimeOutPeriod);
}

function putspan(backcolor, forecolor) {
 document.write("<span id='cntdwn' style='background-color:" + backcolor + 
				"; color:" + forecolor + "'></span>");
}

if (typeof(BackColor)=="undefined")
  BackColor = "white";
if (typeof(ForeColor)=="undefined")
  ForeColor= "black";
if (typeof(TargetDate)=="undefined")
  TargetDate = "12/31/2020 5:00 AM";
if (typeof(DisplayFormat)=="undefined")
  DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds.";
if (typeof(CountActive)=="undefined")
  CountActive = true;
if (typeof(FinishMessage)=="undefined")
  FinishMessage = "";
if (typeof(CountStepper)!="number")
  CountStepper = -1;
if (typeof(LeadingZero)=="undefined")
  LeadingZero = true;


CountStepper = Math.ceil(CountStepper);
if (CountStepper == 0)
  CountActive = false;
var SetTimeOutPeriod = (Math.abs(CountStepper)-1)*1000 + 990;
putspan(BackColor, ForeColor);
var dthen = new Date(TargetDate);
var dnow = new Date();
if(CountStepper>0)
  ddiff = new Date(dnow-dthen);
else
  ddiff = new Date(dthen-dnow);
gsecs = Math.floor(ddiff.valueOf()/1000);
CountBack(gsecs);


#2 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 23 788 сообщений

Отправлено 19 Апрель 2012 - 22:13

К сожалению, в данный момент переменная которая бы выводила серверную дату в шаблоне - нет. Поэтому это реализовать не получиться.

#3 Flor@@@

Flor@@@

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 797 сообщений
  • Городмосква

Отправлено 30 Апрель 2012 - 23:01

Просмотр сообщенияVaccina (19 Апрель 2012 - 22:13) писал:

К сожалению, в данный момент переменная которая бы выводила серверную дату в шаблоне - нет. Поэтому это реализовать не получиться.

а как реализовать хотя бы приведенный выше скрипт?




Что еще прописать кроме js кода?

#4 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 23 788 сообщений

Отправлено 02 Май 2012 - 22:15

Кроме javascript кода больше ничего прописывать не нужно. Его необходимо вставлять в шаблон "HTML"

#5 Flor@@@

Flor@@@

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 797 сообщений
  • Городмосква

Отправлено 03 Май 2012 - 07:18

Просмотр сообщенияVaccina (02 Май 2012 - 22:15) писал:

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


Изображение


Пришлось удалить его не дожидаясь ваших комментариев, так как надолго такую "красоту" я на сайте оставить не могла.

И мне (я наверное неправильно задала вопрос в данной теме), честно говоря, нужен такой скрипт НЕ на главной странице, а в товарах с акциями с привязкой отсчета времени к действующим акциям.



#6 Frost

Frost

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 62 сообщений

Отправлено 03 Май 2012 - 09:00

Чтобы установить скрипт:
1. Скопируйте приведенный код в текстовый документ и сохраните его с разрешением js. Чтобы было понятно рекомендую назвать countdown.js.
2. Загрузите countdown.js на сервер.  
3. Затем в том месте, где вы хотите вывести таймер напишите
<span id="cntdwn" style="color:#нужный цвет текста"></span>
.
4. Под этим кодом необходимо добавить код скрипта
 <script language="JavaScript">
TargetDate = "12/31/2020 5:00 AM";
BackColor = "palegreen";
ForeColor = "navy";
CountActive = true;
CountStepper = -1;
LeadingZero = true;
DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds.";
FinishMessage = "It is finally here!";
</script>
<script language="JavaScript" src="...путь к файлу/countdown.js"></script>

Далее меняете время и дату на нужные вам в строке TargetDate = "12/31/2020 5:00 AM";
В строке DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds." пишите русские единицы измерения Дней Часов и т.д.
FinishMessage = "It is finally here!"; - здесь пишите финишное сообщение.
Вроде все ;)

#7 Flor@@@

Flor@@@

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 797 сообщений
  • Городмосква

Отправлено 04 Май 2012 - 02:38

Спасибо Вам огромное за столь размернутый ответ.

Такой скрипт наверное не подойдет если акций несколько?

#8 Дмитрий К

Дмитрий К

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 79 сообщений
  • ГородМосква

Отправлено 08 Февраль 2013 - 16:09

Просмотр сообщенияkatteee (04 Май 2012 - 02:38) писал:

Спасибо Вам огромное за столь размернутый ответ.

Такой скрипт наверное не подойдет если акций несколько?

Подойдет. Можно создать несколько скриптов с разными названиями. Для каждой акции свой отсчет.

#9 sibulba

sibulba

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 2 335 сообщений

Отправлено 11 Февраль 2013 - 14:53

все БМ наслушались насмотрели и давай внедрять))))

#10 sanik55

sanik55

    Пользователь

  • Пользователи
  • PipPip
  • 47 сообщений

Отправлено 25 Февраль 2013 - 08:44

Что есть БМ? :)

#11 Игорь Щербаков

Игорь Щербаков

    Новичок

  • Пользователи
  • Pip
  • 3 сообщений

Отправлено 16 Апрель 2013 - 12:25

Просмотр сообщенияsanik55 (25 Февраль 2013 - 08:44) писал:

Что есть БМ? :)
"Бизнес молодость" сообщество по началу и развитию бизнеса в России, кроме прочего учат как делать интернет магазины вот вроде их сайт http://molodost.bz/mst/016HroCZWh/

#12 fidoterm

fidoterm

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 68 сообщений

Отправлено 26 Сентябрь 2013 - 13:50

как можно увеличить шрифт строки строке DisplayFormat

#13 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 23 788 сообщений

Отправлено 27 Сентябрь 2013 - 00:32

Вы можете задать стилизацию непосредственно в строке DisplayFormat. Например

DisplayFormat = "<span style='font-size: 16px;'>%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds.</span>";


#14 fidoterm

fidoterm

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 68 сообщений

Отправлено 27 Сентябрь 2013 - 11:03

ок. спсибо

#15 abodon737

abodon737

    Пользователь

  • Пользователи
  • PipPip
  • 43 сообщений

Отправлено 12 Сентябрь 2014 - 13:00

<script language="JavaScript" src="...путь к файлу/countdown.js"></script>



Здравствуйте.
Как указать полный путь к скрипту? Скрипт  в редактор шаблонов загрузил.

#16 Dars

Dars

    Активный участник

  • Модератоpы
  • 1 410 сообщений

Отправлено 12 Сентябрь 2014 - 13:47

Просмотр сообщенияabodon737 (12 Сентябрь 2014 - 13:00) писал:

<script language="JavaScript" src="...путь к файлу/countdown.js"></script>



Здравствуйте.
Как указать полный путь к скрипту? Скрипт  в редактор шаблонов загрузил.
{ASSETS_JS_PATH}


#17 abodon737

abodon737

    Пользователь

  • Пользователи
  • PipPip
  • 43 сообщений

Отправлено 12 Сентябрь 2014 - 17:53

Скрипт не работает.
<script language="JavaScript">
TargetDate = "12/31/2020 5:00 AM";
BackColor = "palegreen";
ForeColor = "navy";
CountActive = true;
CountStepper = -1;
LeadingZero = true;
DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds.";
FinishMessage = "It is finally here!";
</script><script language="JavaScript" src="{ASSETS_JS_PATH}timerobratotscheta.js"></script>


Строчка <spanid="cntdwn"style="color:#нужный цвет текста"></span> при добавлении в "источник" не сохроняется. После нажатия сохранить исчезает.

В чём ошибка подскажите плиз?

#18 Dars

Dars

    Активный участник

  • Модератоpы
  • 1 410 сообщений

Отправлено 12 Сентябрь 2014 - 17:56

Просмотр сообщенияabodon737 (12 Сентябрь 2014 - 17:53) писал:

Скрипт не работает.
<script language="JavaScript">
TargetDate = "12/31/2020 5:00 AM";
BackColor = "palegreen";
ForeColor = "navy";
CountActive = true;
CountStepper = -1;
LeadingZero = true;
DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds.";
FinishMessage = "It is finally here!";
</script><script language="JavaScript" src="{ASSETS_JS_PATH}timerobratotscheta.js"></script>


Строчка <spanid="cntdwn"style="color:#нужный цвет текста"></span> при добавлении в "источник" не сохроняется. После нажатия сохранить исчезает.

В чём ошибка подскажите плиз?
Строка подключения скрипта должна выглядеть так:

  <script type="text/javascript" src="{ASSETS_JS_PATH}imerobratotscheta.js"></script>





Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных