Jump to content
Sign in to follow this  
tolik777

[Выполнено] Пофиксить баг календаря. Подружить модуль и шаблон

Recommended Posts

Краткое описание задачи: Необходимо пофиксить баг календаря связанный с позиционированием. Насколько я разобрался, работа в основном связана с JavaScript, плюс немного CSS.

 

Исходные данные:

ocStore 1.5.5.1.2

Модуль OpenCart Reservations -booking system for products vqmod

Шаблон Pizza Chef - Bootstrap Template 1.0.2 vqmod

Больше никаких изменений не вносилось.

 

Более подробное описание задачи:

Итак на основе OpenCart и вышеупомянутого модуля создается сервис аренды. Смысл данного модуля в том, что он подменяет поле даты (задается опция) у товара и добавляет второй поле, т.к. срок аренды с такой-то даты по такую то.

Вот как это выглядит на дефолтном шаблоне:

post-669947-0-84614400-1402929641_thumb.png

При этом, модуль заменяет стандартный модуль календаря на Zebra_Datepicker

 

Проблема в том, что после установки шаблона Pizza, он также заменяет модуль календаря на какой-то свой. Я пытался оставить в шаблоне старый модуль календаря, для этого я исключил XML-файл для vqmod, который вырезает модуль календаря, а также в шаблон product.tpl добавил строчки даты (когда отображаются опции даты) из дефолтного шаблона.

Календарь и функции аренды заработали, но криво, т.к. во первых иконка календарика отображается не там где надо, а во вторых при щелчке на ней сам календарь отображается снизу страницы.

post-669947-0-37978200-1402930228_thumb.png

post-669947-0-60137700-1402930238_thumb.png

 

Пытался разобраться сам. В коде календаря zebra_datepicker.src.js нашел функции для расчета позиции отображения иконки и самого календаря:

 var

                    // get the date picker width and height
                    datepicker_width = datepicker.outerWidth(),
                    datepicker_height = datepicker.outerHeight(),

                    // compute the date picker's default left and top
                    // this will be computed relative to the icon's top-right corner (if the calendar icon exists), or
                    // relative to the element's top-right corner otherwise, to which the offsets given at initialization
                    // are added/subtracted
                    left = (undefined !== icon ? icon.offset().left + icon.outerWidth(true) : $element.offset().left + $element.outerWidth(true)) + plugin.settings.offset[0],
                    top = (undefined !== icon ? icon.offset().top : $element.offset().top) - datepicker_height + plugin.settings.offset[1],

                    // get browser window's width and height
                    window_width = $(window).width(),
                    window_height = $(window).height(),

                    // get browser window's horizontal and vertical scroll offsets
                    window_scroll_top = $(window).scrollTop(),
                    window_scroll_left = $(window).scrollLeft();

                // if date picker is outside the viewport, adjust its position so that it is visible
                if (left + datepicker_width > window_scroll_left + window_width) left = window_scroll_left + window_width - datepicker_width;
                if (left < window_scroll_left) left = window_scroll_left;
                if (top + datepicker_height > window_scroll_top + window_height) top = window_scroll_top + window_height - datepicker_height;
                if (top < window_scroll_top) top = window_scroll_top;

                // make the date picker visible
                datepicker.css({
                    'left':     left,
                    'top':      top
                });

top как раз задает позицию по вертикали. Если поставить там фиксированное значение, то все работает как надо, но стоит изменить размер окна браузера, так по вертикали сразу же происходит смещение. В общем должна быть привязка к элементу формы по которой щелкнули. Но здесь у меня ума не хватает разобраться.

 

В общем ищу исполнителя данной интересной задачки.

 

Сроки ваши.

 

По стоимости готов выслушать.

 

Оплата WebMoney, RBKMoney, Яндекс.Деньги, Сбербанк, на карту, на р/с и т.д. как вам удобнее.

 

Если нужен отзыв на weblancer или fl, то можно оформить через биржу фриланса с оставлением отзыва (у меня там эккаунты по несколько лет с постоянными заказами и отзывами).

Share this post


Link to post
Share on other sites

Работа сделана. Топик закрыт.

Спасибо пользователю m899 за качественно выполненную работу!

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Similar Content

    • By Kingfrelance
      Добрый день, решил переделать стандартные модули "рекомендуемые" опенкарт 2.3 в виде карусели товаров, ситуации такова. Сделал верстку, подключил slick slider. По умолчанию установил в слайдер что товаров будет 4 на ПК версии. Но тут таков вопрос, если товаров меньше 4 то слайдер не работает корректно
      область слайдера становится маленькой и карточку товара плющит. Если больше 4 то все гуд.
      вот код
       

      Вот скриншот
      там где рекомендуемые то это проблема а там где хит продаж, там больше 3 продуктов, там все гуд
      Вот
    • By Yarilo
      Добрый день, Форумчане! Появилась надобность добавить на сайт конвертер физических величин. На просторах интернета нашёл готовый бесплатный код. Но не получается его добавить =(
       
       
      Добавляю через редактор, но после вставки кода (который выше), обратно закрыть редактор уже нельзя, только удалив весь код целиком.
      http://prntscr.com/mzx6ka
       
      Может, кто подсказать, как запустить?
    • By Jonotan
      Здравствуйте! Mega Filter (не работает javascript после фильтрации), если обновить страницу javascript начинает работать с примененным фильтром. 
      Находил несколько тем с данной проблемой, но решения так и не нашел.
      Много решал задач, но это прям вопрос года! )
       
      Вопрос: куда нужно вставлять javascript, чтобы после фильтрации работал javascript.
      Спасибо, очень буду рад решению этой проблемы :))
      OcStore 2.3.0.2.3
       
       
    • By Exzik
      Добрый день , форумчане 
      Появилась проблема, которую я не могу решить сам 
      На страницу категорий добавил скрипт прокрутки, работает как часы  и грузит все отлично.
      Проблема в том, что из-за этого скрипта перестали работать кнопки (Добавить в корзину и т.д )
      Не могли бы подсказать в чем именно проблема ? 
      Ссылка на сайт  тут
       
       
      Скрипт 
      $(function() { function scrollLoader() { console.log('---', 123) if ($(window).scrollTop() == $(document).height() - $(window).height()) { console.log('---', 'ok') setTimeout(function() { $('#endless').trigger('click') }, autoscroller.delay) } } var autoscroller = [] //setting autoscroller.hidePagination = 1 autoscroller.autoScroll = 0 autoscroller.catcher = '#endless' autoscroller.delay = 1000 autoscroller.loading = 0 $(window).scroll(function() { scrollLoader() if (inWindow(autoscroller.catcher) && !autoscroller.loading && autoscroller.autoScroll) { autoscroller.loading = true $('#endless .fa-refresh').addClass('btn-load-new') } }) if ($('.category-catalog').length) { if ($('.pagination').length && !$('.pagination > li:last-child').hasClass('active')) { $('#content col-12 col-md-9 order-2').hide() $('.pagination') .parent() .before( '<div class="col-xs-12 text-center"><button class="btn btn-success btn-lg" id="endless" style="margin: 15px auto; padding: 10px 120px;" ><span class="btn-load-new">Еще товары</span></i></button></div>') $('#endless').on('click', function(e) { var lastProduct = $('.pagination') .closest('.category-catalog') .find('.front-top-products li:last-child') var nextPage = $('ul.pagination li.active').next().find('a:first-child') var nextPageHref = nextPage.attr('href').substring(7) // console.log('---',nextPageHref); // console.log('---', nextPage.attr('href')); $.ajax({ url: 'https://' + nextPageHref, beforeSend: function() { $('#endless .fa-refresh').addClass('btn-load-new') }, success: function(data) { var products = $(data).find('.category-catalog .front-top-products') lastProduct.after(products) $('.pagination').html($(data).find('.pagination > *')) nextPage = $('ul.pagination li.active').next().find('a:first-child') if (nextPage.length == 0) { $('#endless').remove() } else { $('#endless .fa-refresh').removeClass('btn-load-new') } autoscroller.loading = 1 }, }) return false }) } } function inWindow(el) { if ($(el).length) { var scrollTop = $(window).scrollTop() var windowHeight = $(window).height() var offset = $(el).offset() if (scrollTop <= offset.top && ($(el).height() + offset.top) < (scrollTop + windowHeight)) { return true } } return false } })  
    • By deadlylimonad
      Появилась ошибка в JS при переезде на https, перестали подгружаться товары в категориях (бесконечная прокрутка).
      Вот что в консоли:
      Mixed Content: The page at 'https://abt-professional.com/magazin/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://abt-professional.com/magazin/?page=2'. This request has been blocked; the content must be served over HTTPS. send @ jquery-2.1.1.min.js?j2v=2.8.5:4 ajax @ jquery-2.1.1.min.js?j2v=2.8.5:4 n.(anonymous function) @ jquery-2.1.1.min.js?j2v=2.8.5:4 load @ jquery-ias.min.js?j2v=2.8.5:13 (anonymous) @ jquery-ias.min.js?j2v=2.8.5:13 j @ jquery-2.1.1.min.js?j2v=2.8.5:2 add @ jquery-2.1.1.min.js?j2v=2.8.5:2 c.next @ jquery-ias.min.js?j2v=2.8.5:13 scrollHandler @ jquery-ias.min.js?j2v=2.8.5:13 a @ jquery-ias.min.js?j2v=2.8.5:13 setTimeout (async) d @ jquery-ias.min.js?j2v=2.8.5:13 f @ jquery-2.1.1.min.js?j2v=2.8.5:2 dispatch @ jquery-2.1.1.min.js?j2v=2.8.5:3 r.handle @ jquery-2.1.1.min.js?j2v=2.8.5:3  
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.