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


Вывод опций в списке товаров.

  • Не получается правильно вывести опции товара в списке товаров. Использую

    [[param_edit_table?
                            &docId=`[[+id]]`
                            &tvName=`option`
                            &tpl=`ШАБЛОН-ОПЦИИ-В-СПИСКЕ`
                    ]]
    

    В списке товаров. Опции отображаются, но работают не правильно. Если выбрать опции и положить товар в корзину, то к цене прибваляется цена опции от первого товара в списке.((( Что я делаю не так подскажите кто сталкивался с таким??? Вот сайт на тест домене. http://42.denis64.ru/katalog/kolcza/

  • для начала попробуй шаблон называть ЛАТИНИЦЕЙ

  • @Agrich На функциональность это ни как не влияет.

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

  • @Agrich

    <div class="product-options">
        [[+inner]]
    </div>
    <!--tpl_separator-->
    <label>
        <input id="option[[+id]][[+idx]]" type="radio" class="shk_param shk-class" value="[[+idx]]__[[+field2]]" name="option__[[+id]]" onclick="SHK.additOpt(this)" [[+idx:eq=`0`:then=`checked`]] />
        <label class="shk-label" for="option[[+id]][[+idx]]" [[+selected1]]>
                <div class="option-item-img"><img class="shk-image" src="[[+field1]]" width="40"/></div>
                <div class="param-item-title">[[+field3]] 
                <div class="param-price">
                
                [[!If? 
                    &operator=`EQ` 
                    &subject=`[[+field2]]`
                    &operand=`notempty`
                    &then=`<i>+</i><span class="param-price-cena">0</span>`
                    &else=`
                    <i>+</i><span class="param-price-cena">[[+field2]]</span>
                `]]
                
                
                </div>
                </div>
        </label>
    </label>
    

    Два лабела это я поставил из-за materialize . Выяснил что idx скорее всего не правильно работает... Он там в первом товаре везде рисует 0 , во втором 1, а должны все опции по номерам. быть...

  • А можно ище чанк товара посмотреть?

  • @Agrich

    <div class="tovar shk-item">
        <form class="shk-tovat-form" action="[[~[[*id]]? &scheme=`abs`]]" method="post">
            
            <input type="hidden" name="shk-id" value="[[*id]]" />
            <input type="hidden" name="shk-name" value="[[*pagetitle]]" />
            
        <div class="row">
            <div class="tovar-image col s12 m12 l6">
                    <div class="main-image">
                        <div class="main-image-item">
                           <a href="[[*image:phpthumbon=`w=800&h=800&zc=1&q=100`]]" class="fancyimage"><img src="[[*image:phpthumbon=`w=800&h=800&zc=1&q=100`]]" width="100%"  alt="[[+title]]"/></a>
                        </div>
                    </div>
                    <div class="dop-image">
                        <div class="dop-image-item">
                            <a href="[[*image:phpthumbon=`w=800&h=800&zc=1&q=100`]]"><img src="[[*image:phpthumbon=`w=225&h=225&zc=1&q=100`]]" width="100%" alt="[[+title]]"/></a>
                        </div>
                        [[!getPage? &parents=`[[*id]]` &element=`getImageList` &limit=`1000` &tvname=`gallery` &tpl=`ДОПОЛНИТЕЛЬНОЕ-ИЗОБРАЖЕНИЕ`]]</div>
                    
                    <div class="clearfix"></div>
                    
                    <script type="text/javascript">
                        $(document).ready(function(){
                        	$(".dop-image-item a").click(function(){
                        		$(".main-image img").attr({"src": $(this).attr("href"), "title": $("> img", this).attr("title")});
                        		$(".main-image a").attr({"href": $(this).attr("href"), "title": $("> img", this).attr("title")});
                        		return false;
                        	});
                        	$(".main-image>img").load(function(){$(".main-image>img:hidden").fadeIn("slow")});
                        });
                    </script>
                
            </div>
            <div class="tovar-text col s12 m12 l6">
               <div class="tovar-text-title"><h1>[[*longtitle]]</h1></div>
               <div class="tovar-text-kontent">
                 <div class="tovar-text-kontent-des">
                     [[*content]]
                 </div>
                 <div class="tovar-options">
                     [[!param_edit_table?
                            &docId=`[[*id]]`
                            &tvName=`option`
                            &tpl=`ШАБЛОН-ОПЦИИ-В-СПИСКЕ`
                    ]]
                 </div>
                 <div class="tovar-text-kontent-button row">
                     <span class="tovar-text-kontent-price price-tv col s12 m12 l4"><span>[[*price]]</span> <i class="fa fa-rub" style="font-size:20px; color:rgba(184,26,70,1.00)" aria-hidden="true"></i></span>
                     <span class="col s12 m12 l3">
                         <span class="button-count-t minus">-</span>
                         <input class="count-tovar" type="text" name="shk-count" value="1" />
                         <span class="button-count-t plus">+</span>
                         <script>
                             $(document).ready(function() {
                                $('.minus').click(function () {
                                    var $input = $(this).parent().find('input');
                                    var count = parseInt($input.val()) - 1;
                                    count = count < 1 ? 1 : count;
                                    $input.val(count);
                                    $input.change();
                                    return false;
                                });
                                $('.plus').click(function () {
                                    var $input = $(this).parent().find('input');
                                    $input.val(parseInt($input.val()) + 1);
                                    $input.change();
                                    return false;
                                });
                            });
                         </script>
                     </span>
                     <span class="col s12 m12 l5 buttom-cart-blok"><button type="submit" class="btn button-site"><i class="fa fa-cart-arrow-down" aria-hidden="true"></i> В КОРЗИНУ</button></span>
                 </div>
               </div>
            </div>
        </div>
        </form>
    </div>
    
    [[$ОКНО-СПАСИБО]]
    
  • <div class="shk-item one-product">
    		<div class="one-product-slider">
    		<img class="slider-l-arrow" src="assets/img/white_l_arrow.png" alt="">
    		<img class="slider-r-arrow" src="assets/img/white_r_arrow.png" alt="">
    			<div class="one-product-viewer">
    			    <img src="assets/img/images/[[*image]]" alt="">
    			    [[getImageList?
    			    &tvname=`gallery`
    			    &tpl = `galImg`
    			    &limit = `10`
    			    &docid = `[[*id]]`
    ]]
    			</div>
    			<div class="one-product-video">
    			    [[*video]]
    			</div>
    		</div>
    		<div class="one-product-info">
    			<h1 class="sub-red"><b>[[*longtitle]] [[*brand]]</b></h1>
    			<p class="big"><b>Рейтинг товара</b></p>
    			<div data-rat="[[*rating]]" class="rating">
    			    <span></span>
    			    <span></span>
    			    <span></span>
    			    <span></span>
    			    <span></span>
    			</div>
    			    	    <form action="[[~[[*id]]? &scheme=`abs`]]" method="post">
    	    <fieldset>
    [[param_edit_table?
    &docId=`[[*id]]`
    &tvName=`complect`
    &tpl=`complectTpl`
    ]]
    [[param_edit_table?
    &docId=`[[*id]]`
    &tvName=`color`
    &tpl=`colorTpl`
    ]]
    	    <input type="hidden" name="shk-id" value="[[*id]]" />
            <input type="hidden" name="shk-name" value="[[*pagetitle]]" />
            <input type="hidden" name="shk-count" value="1" />
            <div><span class="shk-price">[[!*price:num_format]]</span> <span class="shk-currency"> грн </span></div>
     		<button type="submit" class="sub-white shk-but">Купить</button>
     					 		</fieldset>
       </form>
    

    почему же у меня не работает?)))

  • @Agrich А что не работает?

  • Кстати а зачем использовать скрипт для изменения количества товара? в опциях шопкипера есть две опции, отдельно для корзины и отдельно для карточки товара добавить плюс и минус к каунтеру, врубаете ту которую хотите и появятся встроеные прямо в карточке (если вам неравится всплывающее окно)

  • @Agrich Ну мы щаз отклонились от темы... Всё остальное меня устраивает... Не устраивает только вывод опций в списке товаров...

  • @akradeus цена не попадает в корзину, там или ноль ( если править shk-id на id_complect) или же добавляется стандартная цена , при этом в самой карточке товара при выборе комплектаций отображается верно посчитаная цена.

    <p class="big"><b>1. Выберите товары</b></p>
    <div class="product-options goods-complects">
    [[+inner]]
    </div>
    <!--tpl_separator-->
    <label>
    <input type="checkbox" class="shk_param one-goods-checkbox" id="complect[[+id]][[+idx]]" value="[[+idx]]__[[+field3]]" name="complect__[[+id]]" onclick="SHK.additOpt(this)">
    <div class="one-goods-complect">
    <img src="assets/img/images/[[+field1]]" alt="">
    <p class="small">[[+field2]]</p>
    <p class="small">[[+field3]] грн</p>
    </div>
    </label>
    

    у меня idx отображается нормально

  • @Agrich а есть ссылка на сайт что бы глянуть?

  • @akradeus он у меня на локальном хосте(

  • @Agrich Всё сделал... ПРосто копирнул сниппет param_edit_table и везде где есть idx исправил на idxx... И в чанке это тоже поменял.. .Всё заработало...

  • @akradeus вшоке

 

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

  • 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.

    Читать далее