Сделать Блок Со Скидкой
#1
Отправлено 16 Август 2016 - 18:08
#2
Отправлено 17 Август 2016 - 05:22
http://forum.storela...c/21870-таймер/
#3
Отправлено 17 Август 2016 - 07:48
Vaccina (17 Август 2016 - 05:22) писал:
http://forum.storela...c/21870-таймер/
Vaccina (17 Август 2016 - 05:22) писал:
http://forum.storela...c/21870-таймер/
А без привязки к корзине предложенный мной тикающий блок с процентами можно сделать?
#4
Отправлено 18 Август 2016 - 11:15
Sgray (17 Август 2016 - 07:48) писал:
На просторах интернета, наверное, возможно найти подобный скрипт. Но в таком случае не совсем понятно его предназначение, если скидка с него не будет передаваться ни в корзину ни в оформление заказа.
#5
Отправлено 18 Август 2016 - 12:12
Stasya (18 Август 2016 - 11:15) писал:
Хочу как здесь telegraf-spb ru, возможно?
#6
Отправлено 19 Август 2016 - 05:51
<div class="visitor_discount_block"> <div class="visitor_discount_title">Ваша скидка</div> <div id="visitor_discount_value"></div> <a href="ссылка">Подробнее об акции</a> </div>
В конец main.js вставьте:
$(function () { setTimeout(function(){delayInit();}, 2000); initVisitorDiscount($("#visitor_discount_value")); }); function initVisitorDiscount(element){ jQuery(document).ready(function(){ var focus = true; var del_timer = null; var delay_time = 10; var visitor_discount_diff = visitor_discount_max/visitor_discount_time; var visitor_discount_start_val = $.cookie('visitor_discount')*1; element.data('val', 0); if (typeof visitor_discount_start_val != 'undefined'){ if(isNaN(visitor_discount_start_val)) visitor_discount_start_val = 0; element.data('val', visitor_discount_start_val); var n = Math.round(visitor_discount_start_val)/1000; if(isNaN(n)) n = 0; element.text(n+'%'); } setInterval(function(){ var prev_val = element.data('val')*1; var now = new Date(); if(focus){ if(prev_val<visitor_discount_max){ var vdv = prev_val+visitor_discount_diff; if(vdv>visitor_discount_max){ vdv = visitor_discount_max; $.cookie('visitor_discount_timemax', now.getTime(), { expires: 365, path: '/' }); } element.data('val', vdv); var expire_date = new Date(); expire_date.setTime(expire_date.getTime() + (delay_time * 1000)); $.cookie('visitor_discount', vdv, { expires: expire_date, path: '/' }); var n = Math.round(vdv)/1000; if(isNaN(n)) n = 0; element.text(n+'%'); } else{ var visitor_discount_timemax = $.cookie('visitor_discount_timemax'); if (typeof visitor_discount_timemax == 'undefined'){ visitor_discount_timemax = now.getTime(); $.cookie('visitor_discount_timemax', visitor_discount_timemax, { expires: 365, path: '/' }); } if(now.getTime()-visitor_discount_timemax >= 24*60*60*1000){ element.data('val', 0); $.cookie('visitor_discount_timemax', now.getTime(), { expires: 365, path: '/' }); } } } }, 1000); $(window).focus(function() { if(del_timer)clearTimeout(del_timer); focus = true; }); $(window).blur(function() { focus = false; del_timer = setTimeout(function(){ element.data('val', 0); }, delay_time*1000); }); }); }
#7
Отправлено 19 Август 2016 - 07:54
Vaccina (19 Август 2016 - 05:51) писал:
<div class="visitor_discount_block"> <div class="visitor_discount_title">Ваша скидка</div> <div id="visitor_discount_value"></div> <a href="ссылка">Подробнее об акции</a> </div>
В конец main.js вставьте:
$(function () { setTimeout(function(){delayInit();}, 2000); initVisitorDiscount($("#visitor_discount_value")); }); function initVisitorDiscount(element){ jQuery(document).ready(function(){ var focus = true; var del_timer = null; var delay_time = 10; var visitor_discount_diff = visitor_discount_max/visitor_discount_time; var visitor_discount_start_val = $.cookie('visitor_discount')*1; element.data('val', 0); if (typeof visitor_discount_start_val != 'undefined'){ if(isNaN(visitor_discount_start_val)) visitor_discount_start_val = 0; element.data('val', visitor_discount_start_val); var n = Math.round(visitor_discount_start_val)/1000; if(isNaN(n)) n = 0; element.text(n+'%'); } setInterval(function(){ var prev_val = element.data('val')*1; var now = new Date(); if(focus){ if(prev_val<visitor_discount_max){ var vdv = prev_val+visitor_discount_diff; if(vdv>visitor_discount_max){ vdv = visitor_discount_max; $.cookie('visitor_discount_timemax', now.getTime(), { expires: 365, path: '/' }); } element.data('val', vdv); var expire_date = new Date(); expire_date.setTime(expire_date.getTime() + (delay_time * 1000)); $.cookie('visitor_discount', vdv, { expires: expire_date, path: '/' }); var n = Math.round(vdv)/1000; if(isNaN(n)) n = 0; element.text(n+'%'); } else{ var visitor_discount_timemax = $.cookie('visitor_discount_timemax'); if (typeof visitor_discount_timemax == 'undefined'){ visitor_discount_timemax = now.getTime(); $.cookie('visitor_discount_timemax', visitor_discount_timemax, { expires: 365, path: '/' }); } if(now.getTime()-visitor_discount_timemax >= 24*60*60*1000){ element.data('val', 0); $.cookie('visitor_discount_timemax', now.getTime(), { expires: 365, path: '/' }); } } } }, 1000); $(window).focus(function() { if(del_timer)clearTimeout(del_timer); focus = true; }); $(window).blur(function() { focus = false; del_timer = setTimeout(function(){ element.data('val', 0); }, delay_time*1000); }); }); }
При вставке в main.js Страница ИМ не загружается - белый фон.
#8
Отправлено 19 Август 2016 - 08:02
#9
Отправлено 19 Август 2016 - 08:09
Vaccina (19 Август 2016 - 08:02) писал:
Все-равно не работает, выдает ошибку
#11
Отправлено 20 Август 2016 - 07:53
#12
Отправлено 25 Август 2016 - 01:32
<div class="visitor_discount_block"> <div class="visitor_discount_title">Ваша скидка</div> <div id="visitor_discount_value"></div> <a href="ссылка">Подробнее об акции</a> </div>
В конце main.js вставьте:
$(function () { initVisitorDiscount($("#visitor_discount_value")); }); function initVisitorDiscount(element){ jQuery(document).ready(function(){ var focus = true; var del_timer = null; var delay_time = 10; var visitor_discount_max = 5000; var visitor_discount_time = 3600; var visitor_discount_diff = visitor_discount_max/visitor_discount_time; var visitor_discount_start_val = $.cookie('visitor_discount')*1; element.data('val', 0); if (typeof visitor_discount_start_val != 'undefined'){ if(isNaN(visitor_discount_start_val)) visitor_discount_start_val = 0; element.data('val', visitor_discount_start_val); var n = Math.round(visitor_discount_start_val)/1000; if(isNaN(n)) n = 0; element.text(n+'%'); } setInterval(function(){ var prev_val = element.data('val')*1; var now = new Date(); if(focus){ if(prev_val<visitor_discount_max){ var vdv = prev_val+visitor_discount_diff; if(vdv>visitor_discount_max){ vdv = visitor_discount_max; $.cookie('visitor_discount_timemax', now.getTime(), { expires: 365, path: '/' }); } element.data('val', vdv); var expire_date = new Date(); expire_date.setTime(expire_date.getTime() + (delay_time * 1000)); $.cookie('visitor_discount', vdv, { expires: expire_date, path: '/' }); var n = Math.round(vdv)/1000; if(isNaN(n)) n = 0; element.text(n+'%'); } else{ var visitor_discount_timemax = $.cookie('visitor_discount_timemax'); if (typeof visitor_discount_timemax == 'undefined'){ visitor_discount_timemax = now.getTime(); $.cookie('visitor_discount_timemax', visitor_discount_timemax, { expires: 365, path: '/' }); } if(now.getTime()-visitor_discount_timemax >= 24*60*60*1000){ element.data('val', 0); $.cookie('visitor_discount_timemax', now.getTime(), { expires: 365, path: '/' }); } } } }, 1000); $(window).focus(function() { if(del_timer)clearTimeout(del_timer); focus = true; }); $(window).blur(function() { focus = false; del_timer = setTimeout(function(){ element.data('val', 0); }, delay_time*1000); }); }); }
В конце forall.js вставьте:
/*! * jQuery Cookie Plugin v1.4.0 * https://github.com/carhartl/jquery-cookie * * Copyright 2013 Klaus Hartl * Released under the MIT license */ ;(function (factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as anonymous module. define(['jquery'], factory); } else { // Browser globals. factory(jQuery); } }(function ($) { var pluses = /\+/g; function encode(s) { return config.raw ? s : encodeURIComponent(s); } function decode(s) { return config.raw ? s : decodeURIComponent(s); } function stringifyCookieValue(value) { return encode(config.json ? JSON.stringify(value) : String(value)); } function parseCookieValue(s) { if (s.indexOf('"') === 0) { // This is a quoted cookie as according to RFC2068, unescape... s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); } try { // Replace server-side written pluses with spaces. // If we can't decode the cookie, ignore it, it's unusable. // If we can't parse the cookie, ignore it, it's unusable. s = decodeURIComponent(s.replace(pluses, ' ')); return config.json ? JSON.parse(s) : s; } catch(e) {} } function read(s, converter) { var value = config.raw ? s : parseCookieValue(s); return $.isFunction(converter) ? converter(value) : value; } var config = $.cookie = function (key, value, options) { // Write if (value !== undefined && !$.isFunction(value)) { options = $.extend({}, config.defaults, options); if (typeof options.expires === 'number') { var days = options.expires, t = options.expires = new Date(); t.setDate(t.getDate() + days); } return (document.cookie = [ encode(key), '=', stringifyCookieValue(value), options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE options.path ? '; path=' + options.path : '', options.domain ? '; domain=' + options.domain : '', options.secure ? '; secure' : '' ].join('')); } // Read var result = key ? undefined : {}; // To prevent the for loop in the first place assign an empty array // in case there are no cookies at all. Also prevents odd result when // calling $.cookie(). var cookies = document.cookie ? document.cookie.split('; ') : []; for (var i = 0, l = cookies.length; i < l; i++) { var parts = cookies[i].split('='); var name = decode(parts.shift()); var cookie = parts.join('='); if (key && key === name) { // If second argument (value) is a function it's a converter... result = read(cookie, value); break; } // Prevent storing a cookie that we couldn't decode. if (!key && (cookie = read(cookie)) !== undefined) { result[name] = cookie; } } return result; }; config.defaults = {}; $.removeCookie = function (key, options) { if ($.cookie(key) === undefined) { return false; } // Must not alter options, thus extending a fresh object... $.cookie(key, '', $.extend({}, options, { expires: -1 })); return !$.cookie(key); }; }));
Данный код, проверила на вашем сайте, он работает.
#13
Отправлено 25 Август 2016 - 07:02
Vaccina (25 Август 2016 - 01:32) писал:
<div class="visitor_discount_block"> <div class="visitor_discount_title">Ваша скидка</div> <div id="visitor_discount_value"></div> <a href="ссылка">Подробнее об акции</a> </div>
В конце main.js вставьте:
$(function () { initVisitorDiscount($("#visitor_discount_value")); }); function initVisitorDiscount(element){ jQuery(document).ready(function(){ var focus = true; var del_timer = null; var delay_time = 10; var visitor_discount_max = 5000; var visitor_discount_time = 3600; var visitor_discount_diff = visitor_discount_max/visitor_discount_time; var visitor_discount_start_val = $.cookie('visitor_discount')*1; element.data('val', 0); if (typeof visitor_discount_start_val != 'undefined'){ if(isNaN(visitor_discount_start_val)) visitor_discount_start_val = 0; element.data('val', visitor_discount_start_val); var n = Math.round(visitor_discount_start_val)/1000; if(isNaN(n)) n = 0; element.text(n+'%'); } setInterval(function(){ var prev_val = element.data('val')*1; var now = new Date(); if(focus){ if(prev_val<visitor_discount_max){ var vdv = prev_val+visitor_discount_diff; if(vdv>visitor_discount_max){ vdv = visitor_discount_max; $.cookie('visitor_discount_timemax', now.getTime(), { expires: 365, path: '/' }); } element.data('val', vdv); var expire_date = new Date(); expire_date.setTime(expire_date.getTime() + (delay_time * 1000)); $.cookie('visitor_discount', vdv, { expires: expire_date, path: '/' }); var n = Math.round(vdv)/1000; if(isNaN(n)) n = 0; element.text(n+'%'); } else{ var visitor_discount_timemax = $.cookie('visitor_discount_timemax'); if (typeof visitor_discount_timemax == 'undefined'){ visitor_discount_timemax = now.getTime(); $.cookie('visitor_discount_timemax', visitor_discount_timemax, { expires: 365, path: '/' }); } if(now.getTime()-visitor_discount_timemax >= 24*60*60*1000){ element.data('val', 0); $.cookie('visitor_discount_timemax', now.getTime(), { expires: 365, path: '/' }); } } } }, 1000); $(window).focus(function() { if(del_timer)clearTimeout(del_timer); focus = true; }); $(window).blur(function() { focus = false; del_timer = setTimeout(function(){ element.data('val', 0); }, delay_time*1000); }); }); }
В конце forall.js вставьте:
/*! * jQuery Cookie Plugin v1.4.0 * https://github.com/carhartl/jquery-cookie * * Copyright 2013 Klaus Hartl * Released under the MIT license */ ;(function (factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as anonymous module. define(['jquery'], factory); } else { // Browser globals. factory(jQuery); } }(function ($) { var pluses = /\+/g; function encode(s) { return config.raw ? s : encodeURIComponent(s); } function decode(s) { return config.raw ? s : decodeURIComponent(s); } function stringifyCookieValue(value) { return encode(config.json ? JSON.stringify(value) : String(value)); } function parseCookieValue(s) { if (s.indexOf('"') === 0) { // This is a quoted cookie as according to RFC2068, unescape... s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); } try { // Replace server-side written pluses with spaces. // If we can't decode the cookie, ignore it, it's unusable. // If we can't parse the cookie, ignore it, it's unusable. s = decodeURIComponent(s.replace(pluses, ' ')); return config.json ? JSON.parse(s) : s; } catch(e) {} } function read(s, converter) { var value = config.raw ? s : parseCookieValue(s); return $.isFunction(converter) ? converter(value) : value; } var config = $.cookie = function (key, value, options) { // Write if (value !== undefined && !$.isFunction(value)) { options = $.extend({}, config.defaults, options); if (typeof options.expires === 'number') { var days = options.expires, t = options.expires = new Date(); t.setDate(t.getDate() + days); } return (document.cookie = [ encode(key), '=', stringifyCookieValue(value), options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE options.path ? '; path=' + options.path : '', options.domain ? '; domain=' + options.domain : '', options.secure ? '; secure' : '' ].join('')); } // Read var result = key ? undefined : {}; // To prevent the for loop in the first place assign an empty array // in case there are no cookies at all. Also prevents odd result when // calling $.cookie(). var cookies = document.cookie ? document.cookie.split('; ') : []; for (var i = 0, l = cookies.length; i < l; i++) { var parts = cookies[i].split('='); var name = decode(parts.shift()); var cookie = parts.join('='); if (key && key === name) { // If second argument (value) is a function it's a converter... result = read(cookie, value); break; } // Prevent storing a cookie that we couldn't decode. if (!key && (cookie = read(cookie)) !== undefined) { result[name] = cookie; } } return result; }; config.defaults = {}; $.removeCookie = function (key, options) { if ($.cookie(key) === undefined) { return false; } // Must not alter options, thus extending a fresh object... $.cookie(key, '', $.extend({}, options, { expires: -1 })); return !$.cookie(key); }; }));
Данный код, проверила на вашем сайте, он работает.
Код проверили на сайте и что то случилось на сайте. Сегодня посмотрел, а каталог съехал вниз, нужно быстрее поправить.
#14
Отправлено 25 Август 2016 - 07:14
<!-- Если есть список из любых новостей и если в тарифном плане подключен модуль новостей --> {% IFNOT news_list_all_empty && TARIFF_FEATURE_NEWS %} <div class="infoBox"> <div class="box-heading"><a href="{NEWS_ALL_URL}">Новости</a></div>
чтобы не нарушить общий синтаксис
#15
Отправлено 25 Август 2016 - 07:20
Vaccina (25 Август 2016 - 07:14) писал:
<!-- Если есть список из любых новостей и если в тарифном плане подключен модуль новостей --> {% IFNOT news_list_all_empty && TARIFF_FEATURE_NEWS %} <div class="infoBox"> <div class="box-heading"><a href="{NEWS_ALL_URL}">Новости</a></div>
чтобы не нарушить общий синтаксис
Ок. Как теперь тикающий процент сделать шрифтом 32, цветом под дизайн (синий), сделать отступ сверху и снизу от текста ну например 1 см. Счетчик тикает до скольки %? Как я понял, на данный момент скидка для посетителя ни как не фиксируется в корзине?
#16
Отправлено 25 Август 2016 - 07:23
Уточните пожалуйста, где сейчас у вас можно пронаблюдать данный блок?
#17
Отправлено 25 Август 2016 - 07:27
Vaccina (25 Август 2016 - 07:23) писал:
Уточните пожалуйста, где сейчас у вас можно пронаблюдать данный блок?
Было отключено для редактирования инфы о акции. Теперь работает. До скольки тикает?
#18
Отправлено 25 Август 2016 - 07:36
.visitor_discount_block { padding: 10px; border: 1px solid #ccc; } .visitor_discount_block #visitor_discount_value { font-size: 32px; color: #068CC2; }
максимальная на данный момент указана до 5%, для изменения максимального порога для скидки измените значение в строке:
var visitor_discount_max = 5000;
#19
Отправлено 25 Август 2016 - 07:38
Vaccina (25 Август 2016 - 07:36) писал:
.visitor_discount_block { padding: 10px; border: 1px solid #ccc; } .visitor_discount_block #visitor_discount_value { font-size: 32px; color: #068CC2; }
максимальная на данный момент указана до 5%, для изменения максимального порога для скидки измените значение в строке:
var visitor_discount_max = 5000;
1.Сделать счетчик по центру
2.Текст "Ваша скидка" сделать шрифтом как названии новости в новостях.
#20
Отправлено 25 Август 2016 - 07:48
.visitor_discount_block #visitor_discount_value { font-size: 32px; color: #068CC2; }
замените на:
.visitor_discount_block .visitor_discount_title { background: #068CC2; color: #fff; text-transform: uppercase; padding: 10px 0; } .visitor_discount_block #visitor_discount_value { font-size: 32px; color: #068CC2; text-align: center; }
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных