Последние темы


shopkeeper 3 ajax Всплывающее окно корзины с товаром не открывает

  • Modx revo Подскажите, Есть сайт, на нем настроен shopkeeper 3, проблема заключается в том что при добавлении товара в корзину ( а у корзины где ведётся подсчет и сумма, имеется всплывающее окно с более подробной информацией о товаре (shopCartRow_small) ). При добавлении в корзину все работает идеально, подсчет и тд, но ajax обновление сбивает открытие всплывающего окна и просто перекидывает на главную название сайта.by/#
    Как можно решить данную проблему ?

    чанк shopCart_small
    <a class="cart-link" href="#" data-shopcart="1">
    <span class="text">Корзина</span>
    <div class="mini-cart-wr" >
    <div class="mini-cart-bl">
    <span class="ms2_total_count">0</span>
    </div>
    </div>
    </a>
    <div class="js-goods"><div class="ddown-bl" style="display: none;">
    <div id="miniCart">
    <p style="text-align: center;padding: 10px;font-size: 18px;">Корзина пуста</p>
    <div class="footer clearfix">
    <div class="grid-60 grid-parent all-price">
    <strong>Итого:</strong>
    <strong class="ms2_total_cost">0.00 <small>руб.</small></strong>
    </div>
    <a class="grid-40 grid-parent pr-check" style="text-decoration: line-through;">оформить</a>
    </div>
    </div>
    </div></div>
    <!--tpl_separator-->
    <a class="cart-link" href="#" data-shopcart="1">
    <span class="text">Корзина</span>
    <div class="mini-cart-wr" >
    <div class="mini-cart-bl">
    <span class="ms2_total_count">[[+items_total]]</span>
    </div>
    </div>
    </a>
    <!-- Всплывающее окно -->
    <div class="js-goods"><div class="ddown-bl" style="display: none;">
    <div id="miniCart">
    [[+inner]]
    <div class="footer clearfix">
    <div class="grid-60 grid-parent all-price">
    <strong>Итого:</strong>
    <strong class="ms2_total_cost">[[+price_total]] <small>[[+shk_currency]]</small></strong>
    </div>
    <a class="grid-40 grid-parent pr-check" href="[[~29]]">оформить</a>
    </div>
    </div>
    </div>
    </div>

    Чанк shopCartRow_full
    <div class="cart-product">
    <div class="cart-product-header clearfix">
    <div class="grid-45 grid-parent"><a href="[[+url]]">[[+name]]</a></div>
    <div class="grid-15 hide-on-tablet hide-on-mobile">количество</div>
    <div class="grid-15 hide-on-tablet hide-on-mobile">за единицу</div>
    <div class="grid-15 hide-on-tablet hide-on-mobile">всего</div>
    </div>
    <div class="cart-product-wr clearfix">
    <div class="grid-45 tablet-grid-33 image"><img src="[[phpThumbOn? &input=inc/images/[[+images]] &options=w=120&h=81&zc=1]]"></div>
    <div class="grid-15 tablet-grid-33 count">
    <form method="post" class="ms2_form form-inline" role="form">
    <input class="shk-count input-sm form-control-1" type="text" size="2" name="count[]" maxlength="4" title="изменить количество" value="[[+count]]" />
      <small>шт.</small>
    </form>
    </div>
    <div class="grid-15 price item-1"><span>[[+price:num_format]] </span> [[+shk_currency]] </div>
    <div class="grid-15 hide-on-tablet hide-on-mobile all-price all-p-item-1"><span> [[+price_count_total:num_format]] </span> [[+shk_currency]]</div>
    <div class="grid-15 remove">
    <form method="post" class="ms2_form">
    <a title="Удалить" href="[[+url_del_item]]" class="shk-del"></a>
    </form>
    </div>
    </div>
    </div>

  • ms_total_count это точно с shk3? Если перебрасывает сразу на главную страницу после добавления товара в корзину, значит стоит в настройках что сразу открывать страницу оформления заказа (по умолчанию 1) тоисть главная, идеш сгиппеты>shopkeeper3>вкладка параметры(вроде) и там в настройках читаеш сами параметры а в докуентации их роли.

  • goToOrderFormPage - скорее всего у тебя стоит да.

  • http://unit1.olden-web.by/
    ajax обновление сбивает открытие всплывающего окна и просто перекидывает на главную

  • После добавления в корзину товара, вверху по нажатию на корзину не открывает всплывающее окно cartRowTpl - шаблон строки корзины
    Как можно исправить подскажите

  • <a class="cart-link" href="#" data-shopcart="1"> вот твоя проблема - " href="#" " ты тыкаеш на ссылку и она отправляет тебя на главную, соответственно row tpl (которыху тебя почемуто аж два одновременно появляется) не успевает сработать, поскольку ты переходиш по ссылке. сделай его дивом и будет тебе щастье, а если ты хотел курсор ручкой то cursor: pointer; тебе в помощ

  • Обернул в див, так ? а толк

    <div data-shopcart="1">
                  <a class="cart-link" href="#">
                    <span class="text">Корзина</span>
                    <div class="mini-cart-wr" >
                        <div class="mini-cart-bl">
                            <span class="ms2_total_count">[[+items_total]]</span>
                        </div>
    
                    </div>
                </a>  
    
     <div class="js-goods"><div class="ddown-bl" style="display: none;">
                    <div id="miniCart">
    [[+inner]]
    
                        <div class="footer clearfix">
                            <div class="grid-60 grid-parent all-price">
                                <strong>Итого:</strong>
                                <strong class="ms2_total_cost">[[+price_total]] <small>[[+shk_currency]]</small></strong>
                            </div>
                            <a class="grid-40 grid-parent pr-check" href="[[~29]]">оформить</a>
                        </div>
                    </div>
                </div></div> 
    </div>
    
  • Участник @doa2030 написал в shopkeeper 3 ajax Всплывающее окно корзины с товаром не открывает:

    После добавления в корзину товара, вверху по нажатию на корзину не открывает всплывающее окно cartRowTpl - шаблон строки корзины
    Как можно исправить подскажите

    Прочитай для начала про обновление DOM элемента, там есть евент DOMSubtreeModified
    Обработчик твой нем может найти обьект, т.к. он динамически изменился!
    Вот тебе пример:

    /*Отследить событие  изменение содержимого в DOM у класса div.header_new_data_cart*/
            $(".header_new_data_cart").on('DOMSubtreeModified', function () { 
                var dataBlock = $(this);
                console.log(dataBlock);//А тут у каждого своя фантазия
            });
    
  • Пожалуйста более конкретно если не трудно)
    Код запуска) Спасибо)

    $(".cart-link").click(function(e) {
    		e.preventDefault();
    		$(".ddown-bl").slideToggle('fast');
    		$(this).parent().toggleClass('active');
    		$(this).parents().siblings().removeClass('active').find(".ddown-bl").hide();
    	});
    
  • @doa2030

    /*Отследить событие  изменение содержимого в DOM у класса div.cart-link*/
            $(".cart-link").on('DOMSubtreeModified', function () { 
                $(this).click(function(e) {
    		e.preventDefault();
    		$(".ddown-bl").slideToggle('fast');
    		$(this).parent().toggleClass('active');
    		$(this).parents().siblings().removeClass('active').find(".ddown-bl").hide();
    	   });
            });
    
  • Толку нет чего то, стары код пробовал убирать, так не открывает вообще, пробовал вместе -тоже нет толку, в чанке shopcart обертку див ставил убирал.

  • @doa2030 на, проверил у тебя на сайте все пашет, при обновлении корзины DOM обновляет div..mini-cart-bl-wr смотри скрин.0_1504943454359_cart.png

    /*Отследить событие  изменение содержимого в DOM у класса div.cart-link*/
    $(".mini-cart-bl-wr").on('DOMSubtreeModified', function () { 
    		$('.cart-link').click(function(e) {
    		e.preventDefault();
    		$(".ddown-bl").slideToggle('fast');
    		$(this).parent().toggleClass('active');
    		$(this).parents().siblings().removeClass('active').find(".ddown-bl").hide();
    	});
    });
    
  • Большое спасибо.

  • А не подскажите в Mozila Firefox зацикливает из за скрипта и прыгает туда сюда. Остальные браузеры нормально работают

 

Последние комментарии

  • Y

    В чем может быть проблема?

    Читать далее
  • Y

    Big и Small Images могут быть от 1 до 10, Summary иногда имеет внутри текст и выглядит так:

    <Summary> <item>текст</item> </Summary>

    Читать далее
  • Y

    Не импортируются товары из Xml, вместо них выводит такие ошибки:

    Invalid argument supplied for foreach()
    SimpleXMLElement::xpath(): Invalid expression
    PHP warning: SimpleXMLElement::xpath(): xmlXPathEval: evaluation failed
    PHP warning: current() expects parameter 1 to be array, boolean given

    Вот как выглядит строка товара xml:
    <root>

    <Big_Images> <Big_Images0>url to img</Big_Images0> <Big_Images1>url to img</Big_Images0> </Big_Images> <Small_Images> <Small_Images0>url to img</Small_Images0> <Small_Images1>url to img</Small_Images1> </Small_Images> <Title>рандомное имя</Title> <Summary/> <Price>7.43</Price> <Main_Info><item>много html кода</item></Main_Info> </root>

    И вот сам php файл для импорта:

    <?php //разбивка по столбцам при импорте и экспорте (content|tv|category) //$cf_config['content_row'] = array( //array('Title',array('pagetitle','content')), //array('Title',array(43,'tv')), //array('Big_Images',array(44,'tv')), //array('Price',array(45,'tv')) //); //значения по умолчанию при импорте или проверка при экспорте $cf_config['imp_content_default'] = array( 'content' => array( 'deleted' => 0, 'published' => 1, 'description' => '', 'show_in_tree' => 0, 'class_key' => 'msProduct', 'template' => 8 // ID шаблона товара //'createdon' => strtotime("now") //'publishedon' => strtotime("now") //'pub_date' => strtotime("now") //'editedby' => 1 //'editedon' => strtotime("now") ), 'tv' => array( //7 => 0 ) ); //первая строка - названия полей $cf_config['include_captions'] = false; //число товаров импортируемых за один раз (загрузка по группам). 0 - не ограничивать. $cf_config['batch_import'] = 0; //разбивать по категориям $cf_config['include_categories'] = false; //удалять дочерние категории при очистке и обновлении каталога $cf_config['delete_subcategories'] = true; //по какому полю проверять соответствие товара при обновлении. false - не проверять (очистка категории при обновлении). $cf_config['imp_chk_field'] = 'pagetitle'; //проверять соответствие товара при обновлении по значению TV. Указать ID TV. false - не проверять (очистка категории при обновлении). $cf_config['imp_chk_tvid_val'] = false; //Добавлять товары, которые не найдены при обновлении по TV (imp_chk_tvid_val) или полю (imp_chk_field) $cf_config['imp_if_not_exist'] = false; //удалять HTML-теги при экспорте $cf_config['exp_strip_tags'] = false; //автоматически генерировать псевдоним (alias) при импорте //false - выключено; true - генерировать с переводом в транслит; 'notranslit' - генерировать без перевода в транслит. $cf_config['imp_autoalias'] = false; //Изменить значения поля для всех вложенных товаров до начала импорта. //Например можно отменить публикацию для всех товаров и публиковать только те, которые есть в новом прайс-листе. //первый массив - какие поля и на какие значения менять, второй массив - условия которые нужно проверять (можно сделать пустым) $cf_config['imp_before_change'] = false;//'[{"tv.inventory":0},{}]';//'[{"published":0},{"tv.pricename":"Поставщик1"}]';//false - для отмены //удалить файл после экспорта (скачивания) $cf_config['exp_delete_file'] = false; //кодировка CSV-файла при экспорте $cf_config['exp_csv_charset'] = 'UTF-8'; //'windows-1251' //Импортировать (обновлять) пустые значения $cf_config['imp_empty'] = true; //Имя файла процессора, который использовать для импорта. Если пусто, используется стандартный процессор "import". $cf_config['imp_custom_processor'] = ''; //путь (xpath) в XML структуре до товаров $cf_config['imp_xml_itemsparent_path'] = '';//'/catalog/shop/offers'; //Структура XML файла для импорта $cf_config['imp_xml_structure'] = <<<EOF <root> <Big_Images> <Big_Images0>tv44</Big_Images0> <Big_Images1>tv48</Big_Images1> <Big_Images2>tv49</Big_Images2> <Big_Images3>tv50</Big_Images3> <Big_Images4>tv51</Big_Images4> <Big_Images5>tv52</Big_Images5> <Big_Images6>tv53</Big_Images6> <Big_Images7>tv54</Big_Images7> <Big_Images8>tv55</Big_Images8> <Big_Images9>tv56</Big_Images9> </Big_Images> <Small_Images> <Small_Images0>tv47</Small_Images0> <Small_Images1>tv58</Small_Images1> <Small_Images2>tv59</Small_Images2> <Small_Images3>tv60</Small_Images3> <Small_Images4>tv61</Small_Images4> <Small_Images5>tv62</Small_Images5> <Small_Images6>tv63</Small_Images6> <Small_Images7>tv64</Small_Images7> <Small_Images8>tv65</Small_Images8> <Small_Images9>tv66</Small_Images9> </Small_Images> <Title>pagetitle</Title> <Summary> <item>tv57</item> </Summary> <Price>tv45</Price> <Main_Info> <item>tv46</item> </Main_Info> </root> EOF; //тестирование конфигурации (без записи в БД). Отчёты -> Журнал ошибок. $cf_config['imp_testmode'] = false; //функция для фильтрации значений при ИМПОРТЕ function filter_import($value_arr){ $output_arr = $value_arr; /* if(isset($output_arr['content']['pagetitle'])) $output_arr['content']['pagetitle'] = mb_strtoupper($output_arr['content']['pagetitle'], 'UTF-8'); */ return $output_arr; } //функция для фильтрации значений при ЭКСПОРТЕ function filter_export($value_arr,$doc_id=0){ $output_arr = $value_arr; //var_dump($value_arr,$output_arr); //exit; /* if(isset($output_arr['price'])) $output_arr[1] = floatval($output_arr[1]) - 200; */ return $output_arr; } ?>

    Читать далее
  • Начать нужно с документации. Потом открыть файл конфигурации. Потом можно на форуме почитать темы, связанные с CatalogFill.

    Читать далее