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


значения param_edit с типов ввода image не выводятся в корзине

  • На базовой сборке с migx пытаюсь реализовать выбор доп. параметров реализованных с помощью param_edit параметры ввода - image, вывода - по умолчанию, на странице товара картинки выводятся, цены пересчитываются, но не могу понять как вывести выбранные параметры в корзине, читала про похожую проблему на форуме здесь
    У меня так: 0_1472746974468_н1.png Не уверенна, что поняла правильно, но действительно ли в моем случае нельзя вывести 0_1472746983027_н2.png ```
    С типом вывода по умолчанию картинки выводятся, в другом случае нет 0_1472747241990_нов.png
    Шаблон properties_table

    div class="product-options">
        [[+inner]]
    </div>
    <!--tpl_separator-->
    <input type="radio" class="radio-a input-hidden shk_param" value="[[+idx]]__[[+field2]]" name="color__[[*id]]" id="color__[[*id]]__[[+idx]]" onclick="SHK.additOpt(this)"/>
    <label  for="color__[[*id]]__[[+idx]]" class="curs">
        <div class="coltex">[[+field3]]</div>
        <img  class="radio-a img-responsive" src="[[!phpthumbon?input=`/assets/files/[[+field1]]`&options=`w=70&h=70&zc=1`]]" title="[[+field3]]">
    </label>
    

    А с помощью additParamSource вообще не выводятся картинки на странице товара.
    Можно ли в этих двух вариантах как-то вывести выбранные параметры в корзине? Когда имела дело с обычными ресурсами, а не с migx выводила через [[shk_karkas]]

  • Подскажите, возможно ли вообще при помощи getResourceField вывести картинки корректно и передать параметры TV в корзину? В документации к getResourceField не прописано никакого tpl шаблона. В моем случае выводится только путь к картинке (как показано на скриншоте)

  • В моем случае выводится только путь к картинке (как показано на скриншоте)

    В чём проблема превратить этот путь в реальную картинку?

    А с помощью additParamSource вообще не выводятся картинки на странице товара.

    additParamSource относится к корзине, а не к странице товара.

    getResourceField нужно использовать для того чтобы достать значение, а для вывода - param_edit_table.

    [[param_edit_table?
    &tvValue=`[[getResourceField?........]]`
    &tpl=`properties_table`
    ]]
    
  • @Andchir спасибо!!! Вот так получилось вывести нормально.

    [[param_edit_table?
    &tvValue=`[[getResourceField?........]]`
    &tpl=`properties_table`
    ]]
    

    Только не пойму как выводить в корзине с параметром ChangePrise - нет.
    [[addite_data]] выводит с ценой в скобках, но если картинка, то только путь прописывает. А если прописываю каждый параметр отдельно с [[shk_param..]] то выводит название параметра (и это круто!), но тогда не прописывает цену в скобках. Как корректно выводить картинки в корзине? Или же лучше прописать ChangePrise - да и выводить только название цвета ли доп. параметра.
    0_1473357181622_пост1.png

  • @Andchir @Olika и как прописать img src картинке в корзине? Я просто понимаю что картинка это первое поле, его в инпуте нет. А оно откуда то вылазит. Нужное поле можно добавить в value и тогда оно нормально выводится, но цену не пересчитывает.

  • @arkadyexp Следите за этой темой, если решу обработку фото в админке, то добавлю свое решение http://forum.modx-shopkeeper.ru/topic/784/param_edit-image-передача-в-корзину/4

  • @Cresca Я так понял что решения ждать не стОит?

  • Если это просто цвет, который не влияет на цену, то не вижу никакой проблемы, надо внимательно читать документацию.
    Пример для вашего случая:

    <div class="product-options">
        [[+inner]]
    </div>
    <!--tpl_separator-->
    <input type="radio" class="radio-a input-hidden shk_param" value="[[+field2]]" name="color__[[*id]]__add" id="color__[[*id]]__[[+idx]]" />
    <label  for="color__[[*id]]__[[+idx]]" class="curs">
        <div class="coltex">[[+field3]]</div>
        <img  class="radio-a img-responsive" src="[[!phpthumbon?input=`/assets/files/[[+field1]]`&options=`w=70&h=70&zc=1`]]" title="[[+field3]]">
    </label>
    

    В данном примере в корзину можно отправить любое значение из вашей таблицы в админке. Если нужно первое, то нужно изменить индекс

    value="[[+field1]]"
    
  • @Andchir спасибо что Вы с нами.
    Сопсно система для цвета товара, вся эта конструкция позволяет пользователю выбрать цвет товара и отправить его в корзину и в письме. В нашем случае цвет на цену не влияет!
    Главное чтоб в шаблоне письма orderDataRow было это после name - [[+addit_data]]

    Это работает в карточке товара (в категории наверно нет), создаем param edit всего с одним полем (не бейте за stylы - я импровизировал):

    [[*cvet:!empty=`<input type="button"  style="margin-top: 10px; margin-bottom: 0px; cursor: pointer; background: #71ccad; color:#fff;
        border: 0px solid #777; 
    font-size: 1.1em;    
        font-family: lora;     width: 70%;
         " class="btn " data-toggle="collapse" data-target="#2collapse[[*id]]"  value="Выберите цвет изделия">`]]
    [[param_edit_table?
    &docId=`[[*id]]`
    &tvName=`cvet`
    &tpl=`@CODE:
    <div class="product-options  collapse"  id="2collapse[[*id]]"  style="margin-top: 12px;"   >
        [[+inner]]
        </div>
    <!--tpl_separator-->
    <label style="border: 0px dotted #ccc; padding: 3px; font-family: Lora; border-radius: 5px;   width: 49%;">   
        <input style="margin-top: -2px;" type="checkbox" class="shk_param myscript1" value="cvet__[[+idx]]__&nbsp;<img src='[[+field1]]'  style='display: inline-block; border: 1px solid #ccc;' >&nbsp;&nbsp;Цвет изделия:&nbsp;[[!nojpg?input=`[[+field1]]`]]"  id="cvet__[[*id]]__[[+idx]]" name="cvet__[[*id]]__[[+field1]]" onclick="SHK.additOpt(this)"  [[!checking?input=`[[+idx]]`]]/>
        <img src='[[+field1]]' width='20' height='20' style='display: inline-block; border: 1px solid #ccc; margin-top: -4px;' >&nbsp;&nbsp;[[!nojpg?input=`[[+field1]]`]]
    </label>`]]
    
    • 2 сниппета для особо тяжелых случаев
      для отметки первого чекинга (если у кого стандартный вариант не пашет) - checking:
    <?php
    if ($input == 0)
    {echo "checked"; }
    

    И для обзывания цвета, а также вывода его в карточке товара и корзине.
    Обзывается цвет у нас в соответствии с файлом жпг, чтобы сто раз не писать одно и тоже - nojpg:

    <?php
    $string_1 = $input;
    $string_2 = substr($input, 0, -4);
    echo $string_2;
    

    Ну и еще куча мусора (иногда лишнего) в коде в виде стилей оформления.

    А да, чуть не забыл - чудо скрипт для выбора только одного цвета чекингом (ну чот чекинг больше приглянулся), висит внизу страницы с товаром:

     <script type="text/javascript"> 
        $('input[type="checkbox"].myscript1').on('change', function() {
       $('input[type="checkbox"].myscript1').not(this).prop('checked', false);
    });
       </script>
    

    Вот примерно так. Воротить с опциями не влияющими на цену можно что угодно, а вот с опциями влияющими - просто мрак.
    Не хочется городить в корзине то что наворочено у автора поста, да и не работает это нормально. Хочется оставить просто [[+addit_data]]. И понять хотя бы одну тупую вещь, где в файлах шопкипера определяются поля которые он отправляет в корзину, когда мы используем параметры влияющие на цену?
    По умолчанию он шлет всегда первое поле (хоть убейся), а если первое поле у нас картинка, то я даже повзрывав мозг не понял куда мне засунуть img src, не говоря уже о возможности отправить в корзину название опции field3 например. Уже несколько тем по этому поводу и нигде нет ответа(((.

  • Я конечно выкрутился с платными опциями и придумал корявенькое решение, работает только для ограниченного количества опций с картинками. Например будет у нас их три. Используем стандартный вывод param_edit_table ну что то типо этого, который уперто отсылает у меня в корзину только 1 поле при любом раскладе:

    <div class="product-options">
        [[+inner]]
    </div>
    <!--tpl_separator-->
    <label>
        <input type="radio" class="shk_param" value="[[*idx]]__[[+field2]]" name="size__[[+id]]" onclick="SHK.additOpt(this)" [[+idx:eq=`0`:then=`checked`]] />
        [[+field1]]
    </label>
    

    Создаем твэшку парамедит с двумя полями! Поле название и цена. И три твэшки img0, img1, img2. В настройке форм размещаем в шаблоне в админке поближе к твэшке парамэдита. И в шаблоне где пользователь выбирает опции с картинками пишем [[*img[[*idx]]]] рядом с полем названия цвета [[+field1]]. Так мы получим первые три опции с картинками, можно сделать больше.
    Минус метода - в корзину и письмо улетает только название, без картинки. Ну может это будет кому то достаточно. У меня просто не цвет, а опция поэтому вроде пока хватает, но хотелось бы сделать нормально.

 

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

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

    Читать далее