We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 1477
    • 515 Posts
    Quote from: SSDTyphon at Oct 20, 2009, 05:47 PM

    Доброго времени суток.
    Обнаружил любопытный баг. Если в списке товаров два товара имеют похожие названия, например "Товар 1" и "Товар 2", делаем следующее:
    1) добавляем "Товар 1" в корзину.
    2) добавляем "Товар 2" в корзину.
    3) ещё раз добавляем "Товар 2" в корзину.
    В результате счётчик товаров увеличивается на единицу для обоих товаров. Т.е. в корзине лежит обоих товаров по 2 шт.

    Причём, что интересно, если кроме "Товар 1" и "Товар 2" в корзине будет лежать, например "Нечто ещё", то счётчик каждого товара в корзине при добавлении новых товаров обновляется правильно.
    Не надо обобщать. Этот баг возникает конкретно в вашем случае (проверьте на демо-страничке). Я такого ещё не видел. Из-за чего это происходит не знаю. Надо пройтись по всей цепочке добавления в корзину. Для таких случаев сделан режим &debug=`1`.
      Shopkeeper - сниппет и модуль для создания интернет-магазина.
      TVimageResizer - плагин для изменения размеров (а также наложения водяных знаков и скругления углов) картинок TV при создании документа.
      PickDocsInTree - плагин для выбора документов из дерева.
      Paykeeper 1.5 - Сниппет для онлайн-оплаты в интернет-магазине MODx + Shopkeeper (Webmoney и Robokassa).
      • 1477
      • 515 Posts
      Quote from: damapic.ru at Oct 20, 2009, 11:35 PM

      PHP Version 4.4.8...
      На PHP 4 я не проверял. Он уже не поддерживается разработчиками. Я тоже не хочу его (PHP4) поддерживать smiley.
        Shopkeeper - сниппет и модуль для создания интернет-магазина.
        TVimageResizer - плагин для изменения размеров (а также наложения водяных знаков и скругления углов) картинок TV при создании документа.
        PickDocsInTree - плагин для выбора документов из дерева.
        Paykeeper 1.5 - Сниппет для онлайн-оплаты в интернет-магазине MODx + Shopkeeper (Webmoney и Robokassa).
        • 6377
        • 36 Posts
        Quote from: Andchir at Oct 21, 2009, 12:22 AM

        Quote from: damapic.ru at Oct 20, 2009, 11:35 PM

        PHP Version 4.4.8...
        На PHP 4 я не проверял. Он уже не поддерживается разработчиками. Я тоже не хочу его (PHP4) поддерживать smiley.
        А по ошибке что-то можете сказать?
          • 1477
          • 515 Posts
          Quote from: damapic.ru at Oct 21, 2009, 01:21 AM

          А по ошибке что-то можете сказать?
          Я вчера ещё раз проверил версию 0.8.8 beta3 (на UTF-8). Такой ошибки не возникало. Если код class.shopkeeper.php не изменялся, возможно проблема в PHP4.
            Shopkeeper - сниппет и модуль для создания интернет-магазина.
            TVimageResizer - плагин для изменения размеров (а также наложения водяных знаков и скругления углов) картинок TV при создании документа.
            PickDocsInTree - плагин для выбора документов из дерева.
            Paykeeper 1.5 - Сниппет для онлайн-оплаты в интернет-магазине MODx + Shopkeeper (Webmoney и Robokassa).
            • 6377
            • 36 Posts
            Да именно проблема в php4 ибо она не поддерживает public

            Пробую своими силами разобраться если получится выложу файл class.shopkeeper.php
              • 1477
              • 515 Posts
              Quote from: damapic.ru at Oct 21, 2009, 01:32 AM

              Да именно проблема в php4 ибо она не поддерживает public
              Пробую своими силами разобраться если получится выложу файл class.shopkeeper.php
              Не надо выкладывать. Думаю это совсем не распространенная проблема. Не вижу никакого смысла делать сайты на PHP 4.
              PHP 5 вышел 5 лет назад.
                Shopkeeper - сниппет и модуль для создания интернет-магазина.
                TVimageResizer - плагин для изменения размеров (а также наложения водяных знаков и скругления углов) картинок TV при создании документа.
                PickDocsInTree - плагин для выбора документов из дерева.
                Paykeeper 1.5 - Сниппет для онлайн-оплаты в интернет-магазине MODx + Shopkeeper (Webmoney и Robokassa).
                • 1477
                • 515 Posts
                Shopkeeper 0.8.x - 0.9.x F.A.Q.

                Не работают кнопки "В корзину".(<0.9)
                http://modxcms.com/forums/index.php/topic,31961.msg213423.html#msg213423
                http://modxcms.com/forums/index.php/topic,31961.msg225723.html#msg225723
                http://modxcms.com/forums/index.php/topic,31961.msg234800.html#msg234800

                Не работают кнопки "В корзину" когда залогинен в админке.(<=0.9.2)
                http://modxcms.com/forums/index.php/topic,31961.msg234059.html#msg234059
                http://modxcms.com/forums/index.php/topic,31961.msg234066.html#msg234066
                http://modxcms.com/forums/index.php/topic,31961.msg251973.html#msg251973

                После отправки заказа корзина не очищается.(<=0.9.2)
                http://modxcms.com/forums/index.php/topic,31961.msg234800.html#msg234800
                http://modxcms.com/forums/index.php/topic,31961.msg245820.html#msg245820

                Почему для кнопки "В корзину" нельзя использовать <input type="submit">?(<=0.9.2)
                http://modxcms.com/forums/index.php/topic,31961.msg235160.html#msg235160

                При отправке заказа (eForm) выходит сообщение "This form was already submitted succesfully..."
                http://modxcms.com/forums/index.php/topic,31961.msg226916.html#msg226916

                Как сделать облегченную форму заказа для авторизованных пользователей?(<=0.9.2)
                http://modxcms.com/forums/index.php/topic,31961.msg222324.html#msg222324

                Как сделать пересчет цены товаров в разную валюту?
                В планах, а пока можно посмотреть на решение тут:
                http://modxcms.com/forums/index.php/topic,31961.msg239395.html#msg239395

                Проблема с кодировкой(<=0.9.2)
                http://modxcms.com/forums/index.php/topic,31961.msg252154.html#msg252154
                http://modxcms.com/forums/index.php/topic,31961.msg257938.html#msg257938

                Добавил доп. параметры, но они не отправляются в корзину. Почему?(<=0.9.2)
                Вспомните HTML. Доп. параметры выводятся в виде вып.списка, радиокнопки или чекбокса. Эти HTML-элементы обычно вставляются в форму (<form>). В вашем шаблоне плейсхолдеры доп.параметров тоже должны быть внутри формы. Пример:
                <div class="shop-stuff shk-item">
                  <h3><a href="[~[+id+]~]">[+title+]</a></h3>
                  <form action="" method="post">
                    <div class="shs-descr">
                      <a href="[~[+id+]~]"><img class="shk-image" src="[+image+]" alt="" height="130" width="130" /></a>
                      <div>Цена:<br /> <span class="shk-price">[+price+]</span> руб.</div>
                      <br />
                      <div>[+param1+]</div>
                      <br />
                      <div>Цвет:<br />[+param2+]</div>
                    </div>
                    <input type="hidden" name="shk-id" value="[+id+]" />
                    <input type="hidden" name="shk-price" value="[+price+]" />
                    <div align="center">
                       <input type="text" name="shk-count" value="1" size="2" maxlength="3" />
                        
                       <button type="submit" name="shk-submit" class="shk-but">В корзину</button>
                    </div>
                  </form>
                </div>


                Как добавить в корзину картинки товаров? (<=0.9.2)
                http://modxcms.com/forums/index.php/topic,31961.msg263379.html#msg263379
                http://modxcms.com/forums/index.php/topic,31961.msg263436.html#msg263436

                Shopkeeper 0.9.2. В модуле выводятся символы похожие на php-код <?=...?>(0.9.2)
                В настройках PHP (php.ini) должна быть включена следующая опция:
                short_open_tag = On
                Если нет возможности редактировать php.ini, добавьте в файл .htaccess:
                php_value short_open_tag on

                Как добавить в корзину доп. информацию, например артикул и т.п.?(<=0.9.2)
                http://modxcms.com/forums/index.php/topic,31961.msg265543.html#msg265543

                Почему Shopkeeper не использует отдельную таблицу БД для товаров?
                http://modxcms.com/forums/index.php/topic,45429.msg268981.html#msg268981

                Как добавить в тело письма с заказов его ID-номер? (<=0.9.2)
                http://modxcms.com/forums/index.php/topic,31961.msg268174.html#msg268174

                Можно ли в имени товара использовать кавычки? (0.9.x)
                http://modxcms.com/forums/index.php/topic,31961.msg268652.html#msg268652

                Платежные системы?
                PayPal: http://modxcms.com/forums/index.php/topic,36885.msg258538.html#msg258538

                После изменения в админке данных веб-пользователя в списке заказов пропадает его имя. (<0.9.2)
                http://modxcms.com/forums/index.php/topic,31961.msg270954.html#msg270954

                Как сделать чтобы в письме и/или в краткой информации заказа выводились данные зарегистрированного пользователя?
                Читайте страницу начиная с этого сообщения:
                http://modxcms.com/forums/index.php/topic,31961.msg271710.html#msg271710

                Есть ли возможность редактировать цены на все товары в одном месте?
                http://modxcms.com/forums/index.php/topic,31961.msg273917.html#msg273917
                модуль fast_content_csv 09
                http://modxcms.com/forums/index.php/topic,15257.msg274210.html#msg274210
                  Shopkeeper - сниппет и модуль для создания интернет-магазина.
                  TVimageResizer - плагин для изменения размеров (а также наложения водяных знаков и скругления углов) картинок TV при создании документа.
                  PickDocsInTree - плагин для выбора документов из дерева.
                  Paykeeper 1.5 - Сниппет для онлайн-оплаты в интернет-магазине MODx + Shopkeeper (Webmoney и Robokassa).
                  • 28300
                  • 60 Posts
                  Quote from: Andchir at Oct 21, 2009, 12:19 AM

                  Не надо обобщать. Этот баг возникает конкретно в вашем случае (проверьте на демо-страничке). Я такого ещё не видел. Из-за чего это происходит не знаю. Надо пройтись по всей цепочке добавления в корзину. Для таких случаев сделан режим &debug=`1`.
                  Я не обобщаю, а пытаюсь вывести симптомы ошибки. Правда, несколько ошибся с выводами.
                  Сейчас я вижу следующее:
                  Если имеем несколько товаров без доп. параметров, добавим в корзину по одному разному товару без доп. параметров.
                  После этого при добавлении в корзину любого из уже присутствующих в корзине товаров, счётчик количества товаров увеличивается для всех товаров в корзине.

                  Например, в корзине лежит "Товар1" и "Товар2" оба товара не имеют доп. параметров.
                  При добавлении в корзину ещё одного "Товар1", в корзине становится по 2шт. "Товар1" и "Товар2".

                  Происходит это потому, что в функции toCart() под-функции thisAction() в строке 325
                        if(goodsGroup && ($.cookie('stuffAll').indexOf('__'+id)>-1 || $.cookie('stuffAll').indexOf(id)==0)){
                          if(checkAddit(id)){
                            groupingGoods(checkAddit(id),count,0);
                          }else{
                            $.cookie('stuffAll', $.cookie('stuffAll')+'__'+stuffString, {expires: 1, path: '/'});
                            $.cookie('additParam',additFilter(id,'all'), {expires: 1, path: '/'});
                          }
                        }else{
                          $.cookie('stuffAll', $.cookie('stuffAll')+'__'+stuffString, {expires: 1, path: '/'});
                          $.cookie('additParam', additFilter(id,'all'), {expires: 1, path: '/'});
                        }
                  

                  мы идём по ветке вызова checkAddit(id), которая возвращает true.
                  В результате вызывается groupingGoods(true, 1, 0);
                  Тогда в функции groupingGoods() строка 251
                        if(newcount){
                          if(!isNaN(parseInt(num))){
                            thiscount = num==i+1 ? newcount : n[2];
                          }else{
                            thiscount = additParam.indexOf((i+1)+'==')==-1 ? newcount : n[2];
                          }
                        }else{
                          if(!isNaN(parseInt(num))){
                            thiscount = num==i+1 ? count+parseInt(n[2]) : n[2];
                          }else{
                            thiscount = additParam.indexOf((i+1)+'==')==-1 ? count+parseInt(n[2]) : n[2];
                          }
                        }
                  

                  мы идём по ветке else-else и, поскольку additParam == ’’, мы получаем для всех товаров в корзине применяется
                  thiscount = count+parseInt(n[2]);

                  Если я правильно понимаю, ожидается, что для товаров без доп.свойств checkAddit(id) должна возвращать индекс товара в корзине (чтобы выполнить условие !isNaN(parseInt(num))==true), или я что-то не учёл?

                  Andchir, подскажите, пожалуйста.
                    • 1477
                    • 515 Posts
                    Quote from: SSDTyphon at Oct 21, 2009, 05:17 PM

                    Если я правильно понимаю, ожидается, что для товаров без доп.свойств checkAddit(id) должна возвращать индекс товара в корзине (чтобы выполнить условие !isNaN(parseInt(num))==true), или я что-то не учёл?

                    Andchir, подскажите, пожалуйста.

                    Я уже не помню как там что и почему. smiley У меня сейчас нет времени лесть в эти дебри. Честно. Я согласен, что всё очень сложно и запутанно и даже &debug=`1` не слишком помогает wink.

                    Сейчас
                    Quote from: Andchir at Oct 18, 2009, 11:01 AM

                    всё что касается сохранения, подсчета и вывода данных покупки переписано почти с нуля (т.к. перевел на сессиии).
                    Это как раз ещё и для того чтобы сделать код более понятным и чистым. Попробуйте разобраться сами. Для меня сейчас важнее закончить поскорее новую версию, в которой постараюсь выпрямить все изъяны.

                      Shopkeeper - сниппет и модуль для создания интернет-магазина.
                      TVimageResizer - плагин для изменения размеров (а также наложения водяных знаков и скругления углов) картинок TV при создании документа.
                      PickDocsInTree - плагин для выбора документов из дерева.
                      Paykeeper 1.5 - Сниппет для онлайн-оплаты в интернет-магазине MODx + Shopkeeper (Webmoney и Robokassa).
                      • 1477
                      • 515 Posts
                      Хоть и зарекся не выкладывать больше beta-версий, но т.к. очень много людей меня беспокоят в ICQ (а значит многим оно нужно) - выкладываю ещё одну smiley.
                      0.9beta4 тоже очень сырая, но если кому-то срочно нужен магазин, то "допилить" при необходимости будет проще. Очень многое сделано со времен первой беты. Подробнее писать нет времени. Пользуйтесь как есть, если нужно. Если не нравится не пользуйтесь или ждите релиза.

                      Скачать 0.9 beta4

                      П.С. Опять сломался аттач на форуме...

                      UPD
                      Лучше не включать режим дебага (&debug=`1`). Он скорее всего не работает (в процессе).
                        Shopkeeper - сниппет и модуль для создания интернет-магазина.
                        TVimageResizer - плагин для изменения размеров (а также наложения водяных знаков и скругления углов) картинок TV при создании документа.
                        PickDocsInTree - плагин для выбора документов из дерева.
                        Paykeeper 1.5 - Сниппет для онлайн-оплаты в интернет-магазине MODx + Shopkeeper (Webmoney и Robokassa).