We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 26709
    • 4 Posts
    Да, єта корзина только бета-версия, как начало. Я сам вижу там много недоработок, но просто не было возможности серьезно начать ее доделывать. Планов много и способов их достижения тоже много. Есть реальные планы как и что сделать. Так что, думаю, можно попробовать.
      • 26709
      • 4 Posts
      Исправил некоторые глюки в сниппетах, но одновременно возник один вопрос. Кто помнит, как можно в чанке определить ID текущей страницы? Т.е. если с помощью Дитто выводится список продукции, то конструкция [+id+] выдает ID документа продукта. А вот как ID документа, где дитто запущен? Хотя можно и сниппет вызвать для определения. Но может есть более простой способ?
        • 26709
        • 4 Posts
        Обновил архив . Положил в верхний пост. Там изменил документацию и чуть подправил сниппеты. Обратите внимание теперь на то, как устанавливать корзину - есть некоторые изменения.
        Но проблему с выводом продукции не решил. ИД документа, где вызывается ДИТТО, не выдает автоматом. Т.е. в чанке с продуктами в поле ID нужно явно указывать ИД. куда делать редирект после добавления товара в корзину. (в след. версии решу проблему)
        Для тех, кто пользуется кодировкой УТФ, нужно переконвертить файлы в соответствующую кодировку.

        Также планирую выложить инфу о том, как настраивать внешний вид корзины. Там предельно просто, но нужно время на создание документации
          • 785
          • 2,113 Posts
          Попробовал новую версию – все равно нормально не работает. Вот перечень проблем:

          1. Конечно, приятно, что используется regClientStartupScript, но теперь нужный скрипт не задействован на странице вызова Ditto.
          2. Вместо сложных определений адресов страниц, которые, кстати, неверно работают, если сайт расположен не в корневом каталоге, вполне достаточно двух строк:
          $url="[~$id~]";
          $self = "[~$modx->documentIdentifier~]";
          3. При добавлении в корзину JavaScript завершается неверно (IE7), из-за чего не выводится сообщение и не выполняется команда return false, а следовательно, происходит совершенно ненужный переход. Что за ошибка – не знаю, но что-то связанное с последними командами функции AddToCart.
          4. Переведено как-то очень неполно, да и вообще, вместо множества ненужных языков лучше поставлять ru и ru-utf8, причем подключение нужного файла можно автоматически определять по кодировке MODx.
          5. В коде постоянно встречается совершенно лишняя команда
          $output=’’;
          Она, конечно, не мешает, но и не улучшает код.
            Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
            Статьи о MODx, регулярно новые публикации
            • 33694
            • 742 Posts
            По пятому пункту подпишусь. Незачем инициализировать переменную пустой строкой, для того, чтоб затем сразу же записать в неё что-то. Инициализирутей сразу тем, что собираетесь использовать. А если это что-то сразу же отадётся на выход, то и присваивать его никуда не жужно — сразу отдавайте.

            Вот например

            <?php
            // ...

            $output=’’;

            $output=’<NOSCRIPT>Мы полагаем, что Ваш браузер не поддерживает работу с Java скриптом.

            <!-- кучуа мусорного кода -->
            … </table>
            </form> ’;

            return $output;
            ?>

            можно упростить до

            <?php
            // …

            return ’<NOSCRIPT>Мы полагаем, что Ваш браузер не поддерживает работу с Java скриптом.

            <!-- куча мусорного кода -->
            … </table>
            </form> ’;
            ?>
              • 26709
              • 4 Posts
              Спасибо большое за помощь smiley Исправлю.
                • 785
                • 2,113 Posts
                И еще мне кажется, что неудобно работать с тремя небольшими сниппетами, лучше все объединить в один и параметром передавать в него нужное действие, как это сделано в большинстве сниппетов для MODx. Так, кстати, проще избежать ошибок несоответствия версий в разных взаимосвязанных сниппетах.
                  Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                  Статьи о MODx, регулярно новые публикации
                  • 26709
                  • 4 Posts
                  Quote from: AKots at Apr 05, 2008, 02:11 AM

                  И еще мне кажется, что неудобно работать с тремя небольшими сниппетами, лучше все объединить в один и параметром передавать в него нужное действие, как это сделано в большинстве сниппетов для MODx. Так, кстати, проще избежать ошибок несоответствия версий в разных взаимосвязанных сниппетах.

                  Т.е. все три сниппета объединить в один и вызывать его так:
                  [!Basket? &act=`checkout`!]
                  [!Basket? &act=`cartblock`!]
                  [!Basket? &act=`basket`!]
                  


                  Вообще неплохая идея. Как говорят: аппетит приходит во время еды. Или в нашем случае: хорошие идеи приходят в процессе разработки. а не в начале smiley Спасибо большое за идею. В след. версии так и сделаю. Вот только надо уже сейчас задуматься об полноценном модуле магазина. Моя команда как раз заканчивает разработку очередного сайта, поэтому можно уже приступать к разработке ТЗ.

                  Какие функции должны быть в админке?
                  Как управлять товарами? Через админку или как обычно создавая документы?
                  Импорт/экспорт товаров ?
                  Взамосвязь с клиентами?
                  Способы оплаты?
                  И т.д. и т.п.

                  В общем, надо все согласовать и составить это злополучное ТЗ, которое так все хотят сформулировать, но дело постоянно замораживается smiley

                  ПЮСЮ Очень удобно использовать эту корзину для вывода и заказа товаров из CSV файла. Ранее был выложен на форуме сниппет для вывода товаров. Так вот можно использовать чанк корзины для создания динамического прайс-листа с заказом продукции, минуя использование обычных документов МОДх или же использовать виджет DataGrid , который по описанию разрвботчиков имеет очень большую скорость работы. В общем, очень гибкий сниппет. Это я для тех, кто не знает про существование сниппета прайс-листа. Вылаживаю код его на всякий случай. Только кнопку "Добавить в Корзину" там нету, надо самому писать - небыло времени.

                  Установка
                  ----------------------------------------------------
                  1. Создать сниппет Price с кодом расположеном ниже
                  2. Создаем папку Price по адресу assets/ 
                  3. По адресу assets/Price/ создаем файл price.csv
                  4. Вставить код на страницу [ [Price?price=price] ] , где price название файла
                  
                  ----------------------------------------------------
                  
                  Код сниппета
                  ====================================================
                  // Формируем таблицу 
                  $Output .= "<table border=1 cellspacing=2 cellpadding=2 align=bottom bordercolor=Navy>n"; 
                  /* Задаем переменную row для того, чтобы выделить 
                  жирным шрифтом первую строчку */ 
                  $row = 1; 
                  // Открываем файл нашего прайс-листа для чтения [ [Price?price=price] ]
                  // Директория расположения
                  $dir_price = "assets/Price/";
                  $fp = fopen ("$dir_price$price.csv","r"); 
                  // Считываем в массив данные файла 
                  while ($data = fgetcsv ($fp, 1000, ";")) { 
                  // Подсчитываем количество данных в массиве 
                  $num = count ($data); 
                  // Начинаем строку в таблице 
                  $Output .= "<tr>n"; 
                  /* Распечатываем массив в ячейки таблицы с помошью цикла. 
                  Таким образом количество ячеек будет соответствовать 
                  количеству данных в массиве */ 
                     for ($c=0; $c<$num; $c++) { 
                  /* Условие. Если переменная row равна 1, то вывести 
                  содержимое массива жирным шрифтом, иначе - простым */ 
                         if ($row == 1) { 
                         $Output .= "<td><b>$data[$c]</b></td>n"; 
                         } else { 
                         $Output .= "<td>$data[$c]</td>n"; 
                         } 
                     } 
                  // Заканчиваем строку в таблице 
                  $Output .= "</tr>n"; 
                  /* Увеличиваем переменную row на 1, дабы не выводить более 
                  одной строчки жирным шрифтом */ 
                  $row++; 
                  } 
                  // Закрываем файл нашего прайс-листа 
                  fclose ($fp); 
                  // Закрываем таблицу 
                  $Output .= "</table>";  
                  return $Output; 
                  
                  
                    • 6475
                    • 2 Posts
                    Вот не понял последний пост, правда еще второй день изучаю систему, но подозрение, что подобное можно сделать и более интересным способом, например, взяв готовую галерею. Хорошо бы, сделать автоматическую загрузку прайса через посылку на некий скрипт POST пакета, с загрузкой прайса по товарным группам в sql базу.
                      • 24531
                      • 213 Posts
                      Quote from: Serg24 at Apr 05, 2008, 10:15 AM

                      Как управлять товарами? Через админку или как обычно создавая документы?
                      Импорт/экспорт товаров ?
                      Взамосвязь с клиентами?
                      Способы оплаты?
                      И т.д. и т.п.
                      Через админку, отдельный модуль.
                      импорт желательно из CSV (это легко), из xls (это посложнее), из 1с (тут я вообще хз, но опция довольно востребована. конечно 1с выгружает в xls и наверное в csv тоже может, я хз )
                      Что понимается под взаимосвязью с клиентами? Если способы коммуникации, то можно просто любые контакты, менеджеру автоматически летит письмо с информацией о заказе, дальше руки.
                      Способы оплаты - электронные деньги (вм, я), наложенный платеж, счет в банке (например).
                      Для начала можно написать структуру тз. насколько я понимаю это очень объемный документ должен быть. потом будем все вместе добавлять.
                      за основу можно взять функционал любой допустим опенсорс системы, опен карт например. и сделать то же самое только с учетом российских реалий