Картинка minishop2

Добрый вечер
Необходимо вставить картинку в полную запись 
В краткой записи я разобрался вставляю так  <img src="[[+thumb]]"  class="lazyload"> 
В полной записи необходимо вставлять картинку которая при заливке обжалась до 350х350.
Сейчас вставляю так <img src="[[+image]]" alt="" title="[[+name]]">
картинка вставляется в полном размере хотя при загрузке обжимается до нужного размера
[{"w":216,"h":224,"q":100,"zc":"1","bg":"000000"},{"w":350,"h":350,"q":100,"zc":"1","bg":"000000"]}

Каким образом вставлять картинку которая обжата до размера 350х350!? Заранее спасибо
Дмитрий Маликов
10 марта 2013, 16:16
modx.pro
2
14 764
0

Комментарии: 37

Василий Наумкин
10 марта 2013, 20:32
0
bezumkin.ru/modx/minishop2/admin/713/

У товара miniShop2 есть специальные поля — image и thumb, в которых лежат ссылки на первое изображение галереи, в полном размере и его самая мелкая превьюшка.

Сами картинки лежат в галерее, а у товара только быстрые как-бы ссылки на первую картинку в самой мелкой уменьшенной и полной версии. То есть, за 350х350 надо идти в сниппет msGallery.

В будущем сниппет msProducts будет уметь джойнить сразу нужные картинки из галереи для вывода в каталоге.
    Дмитрий Маликов
    11 марта 2013, 21:30
    0
    Спасибо за ответ.! Можно уточнить как скоро будет возможность вставлять нужную картинку, готов проспонсировать данное изменение. На данный момент решил выводить картинку доп полем, тупо вставляю ссылку на обжатую картинку, не удобно жутко. Планируется ли плагин импорта товара, и каким образом там будет реализована загрузка картинок.? Попробовал новый минишоп, очень радует скорость работы, на данный момент в каталоге 7670 товаров. При добавлении удобной сортировки по нескольким параметрам, без лишних мозготрахах, а также кнопки мне нравится, можно делать минишоп2 платным.
      Василий Наумкин
      13 марта 2013, 08:38
      0
      Готово, картинки можно прицеплять — вот коммит.

      Можешь сам накатить эти изменения, либо жди следующей версии miniShop2.

      Пример вызова:
      [[!msProducts?
      	&includeThumbs=`120x90,360x24`
      ]]

      Плейсхолдеры в чанке:
      <img src="[[+120x90]]" />
      [[+360x240:notempty=`<img src="[[+360x240]]" />`]]
        Дмитрий Маликов
        13 марта 2013, 23:13
        0
        Спасибо огромное.!
          Володя
          17 апреля 2013, 11:26
          0
          Добрый день!
          Василий извини за нубский вопрос по поводу коммита. Вот это — properties.ms_products.php где мне найти?
          спасибо)
            Василий Наумкин
            17 апреля 2013, 12:01
            0
            Прочти доку по msProducts, это давно уже работает из коробки.
              Володя
              17 апреля 2013, 14:03
              0
              да я уже понял))) спасибо!
              Подскажи если не трудно, как возможно вывести все изображения товара конкретной категории товара?
                Володя
                17 апреля 2013, 23:55
                0
                добрый вечер. написал вот такой снипет
                <?php
                $properties = implode("-", $scriptProperties);
                $cache_key = "gallery".$properties;
                $output = $modx->cacheManager->get($cache_key);
                
                if ($output) return $output;
                $images = $modx->getCollection('msProductFile', array('type' => 'image', 'parent' => 0));
                foreach ($images as $image) {
                    //print_r($image->get('url'));
                    //print_r($image->get('product_id'));
                    $url = $image->get('url');
                    $id = $image->get('product_id');
                     $output .= $before.'<a href="'.$url.'" rel="prettyPhoto['.$id.']"></a>'.$after."\n";
                    }
                $modx->cacheManager->set($cache_key,$output);
                return $output;
                выводит все картинки из галереи товаров. Подскажите как мне задать выборку по категории товаров,
                спасибо!
                  Василий Наумкин
                  18 апреля 2013, 06:37
                  0
                  getCollection при выборе 100 записей работает медленнее в 1000 раз, чем выборка напрямую из таблиц.

                  Лучше так:
                  if (!empty($parents) && $parents > 0) {
                  	if (empty($depth)) {$depth = 10;}
                  	$pids = array_map('trim', explode(',', $parents));
                  	$parents = $pids;
                  	foreach ($pids as $v) {
                  		if (!is_numeric($v)) {continue;}
                  		$parents = array_merge($parents, $modx->getChildIds($v, $depth));
                  	}
                  }
                  
                  $output = null;
                  
                  $q = $modx->newQuery('msProductFile', array('type' => 'image', 'parent' => 0));
                  $q->innerJoin('msProduct', 'msProduct', '`msProductFile`.`product_id` = `msProduct`.`id`');
                  $q->select('`msProductFile`.`id`, `msProductFile`.`url`');
                  if (!empty($parents)) {
                  	$q->where(array('`msProduct`.`parent`:IN' => $parents));
                  }
                  if ($q->prepare() && $q->stmt->execute()) {
                  	while ($image = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
                  		$output .= '<a href="'.$image['url'].'" rel="prettyPhoto['.$image['id'].']"></a>'."\n";
                  	}
                  }
                  
                  return $output;
                  Нужно указывать параметр parents, для лимиторавания по категориям, иначе будет выводить отовсюду.
                    Володя
                    18 апреля 2013, 09:02
                    0
                    Крутяк!)))
                    вот тут только поменял на id категории, вроде работает, только незнаю правильно это или нет
                    $q->select('`msProductFile`.`id`, `msProductFile`.`url`, `msProductFile`.`product_id`');
                    if (!empty($parents)) {
                    	$q->where(array('`msProduct`.`parent`:IN' => $parents));
                    }
                    if ($q->prepare() && $q->stmt->execute()) {
                    	while ($image = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
                            
                    		$output .= '<a href="'.$image['url'].'" rel="prettyPhoto['.$image['product_id'].']"></a>'."\n";
                            
                    	}
                    }
                    Осталось придумать как сделать проверку на опубликованность.
                    Спасибо!!!
                      Василий Наумкин
                      18 апреля 2013, 09:38
                      0
                      Проверка на опубликованность и не удалённость:

                      $q->where(array('published' => 1, 'deleted' => 0));
                        Володя
                        18 апреля 2013, 10:48
                        0
                        Спасибо!!! наглость будет с моей стороны если я еще спрошу как вот такое добавить
                        title="'.$pagetitle['product_id'].'"
                        ? )))
                          Василий Наумкин
                          18 апреля 2013, 11:30
                          0
                          Сам то как думаешь?

                          Давай уже, дальше сам.
                          Володя
                          18 апреля 2013, 17:30
                          0
                          if ($q->prepare() && $q->stmt->execute()) {
                          	while ($image = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
                                  $i = $image['product_id'];
                                  $res = $modx->getObject('modResource',$i);
                                  $title = $res->get('pagetitle');
                          		$output .= '<a href="'.$image['url'].'" rel="prettyPhoto['.$i.']" title="'.$title.'"></a>'."\n";
                                  
                          	}
                          вот таким образом получилось добавить title, но время обработки выросло раза в три...(
                          Василий Наумкин
                          18 апреля 2013, 18:10
                          0
                          msProduct — в данном случае и есть modResource.

                          Нужно всего лишь:
                          $q->select('`msProductFile`.`id`, `msProductFile`.`url`, `msProductFile`.`product_id`, `msProduct`.`pagetitle`');
                          Володя
                          18 апреля 2013, 18:54
                          0
                          эвона как))) и правда пашет)))
                          Василий Наумкин
                          18 апреля 2013, 19:56
                          0
                          Да, Вова, учи SQL.
                          Володя
                          18 апреля 2013, 20:02
                          0
                          да я уже понял что это мощная штука! Потихоньку разбираюсь с modx и со всем остальным… Третий месяц уже как засосало… интересно же)))
                          я все еще думаю как и куда условие проверки воткнуть, которое ты утром подсказал)))
                          P.s. не подсказывай!)
                          Володя
                          18 апреля 2013, 23:54
                          0
                          пришел к выводу что это условие дело не простое)))
                          как мне его проверить у modx_ms2_product_files
                          Володя
                          19 апреля 2013, 10:06
                          0
                          вот так пробую но чет выводит пусто, в чем косяк?
                          $q = $modx->newQuery('msProductFile', array('published' => 1, 'deleted' => 0, 'type' => 'image', 'parent' => 0));
                          $q->innerJoin('msProduct', 'msProduct', '`msProductFile`.`product_id` = `msProduct`.`id`', 'msProductFile.published = 1 AND msProductFile`.deleted` = 0');
                          Василий Наумкин
                          19 апреля 2013, 12:39
                          0
                          Тут должно быть AND а не ,
                          `msProduct`.`id`', 'msProductFile.published
                          Володя
                          19 апреля 2013, 12:59
                          0
                          да эту ошибку я уже заметил, но толку нет все равно.
                          может еще какая то дополнительная сортировка нужна?
                          Володя
                          21 апреля 2013, 00:40
                          0
                          … проверку на опубликованность надобно так да?
                          $q = $modx->newQuery('msProduct', array('class_key' => 'msProduct', 'published' => 1, 'deleted' => 0));
                          Василий Наумкин
                          21 апреля 2013, 06:34
                          0
                          Если новый запрос, то можно так, да.

                          Если ты еще с моим примером работаешь — там это надо вписать в where.
                          $q->where(array('published' => 1, 'deleted' => 0));
                          Володя
                          21 апреля 2013, 10:49
                          0
                          да с твоим, но выборка в таком виде
                          [0] => Array ( [msProductFile_id] => 299 [msProductFile_product_id] => 12 [msProductFile_source] => 2 [msProductFile_parent] => 0 [msProductFile_name] => gallery-04.jpg [msProductFile_description] => [msProductFile_path] => 12/ [msProductFile_file] => 8f01bd34e430f133847685525c02e807.jpg [msProductFile_type] => image [msProductFile_createdon] => 2013-04-07 14:56:30 [msProductFile_createdby] => 2 [msProductFile_rank] => 0 [msProductFile_url] => /assets/gallery/12/8f01bd34e430f133847685525c02e807.jpg )
                          как я ее смогу отсортировать то по published и deleted?
                          или я туплю?
                          Василий Наумкин
                          21 апреля 2013, 11:48
                          0
                          xPDOQuery::where()

                          Может, уже документацию почитаешь?
      Владислав
      Владислав
      12 марта 2013, 13:01
      0
      А почему эту картинку отдельным TV не сделать?
        Мордынский Николай
        17 апреля 2013, 14:29
        0
        А потом в магазине на 20 000 + товаров вы будите по разным в кладкам лазить и искать какая тв куда назначена?
        Юрий Венедиктович
        26 апреля 2013, 21:50
        0
        Доброго времени суток, Василий!
        в чанке tpl.msProducts.row есть картинка
        <img src="[[+thumb:default=`[[++assets_url]]components/minishop2/img/web/ms2_small.png`]]" width="90" height="90" />
        я так понял тут тока +thumb или +image
        как мне вывести картинку размером 200*200 (она генерится)
        всю голову сломал
        сильно не пинайте
        с модх я на вы
        спасибо
            Юрий Венедиктович
            27 апреля 2013, 14:41
            0
            в шаблоне вызываю
            [[!msProducts?
            	&includeThumbs=`200х200`
            	&tpl=`tpl.category`
            ]]
            в шаблоне tpl.category
            в качестве
            src=[[+200x200]]
            в настройках сниппета msproducts includeThumb прописал 200x200
            картинка так и не выводится что не так делаю?
              Василий Наумкин
              27 апреля 2013, 14:43
              0
              А в настройках источника файлов есть такой размер?

              Генерируются ли такие превьюшки?
                Юрий Венедиктович
                27 апреля 2013, 14:48
                0
                да все генерируется
                выводится только thumb и image
                самая маленькая картинка у меня 90*90
                но thumb выводит 120*90
        Maria Rybalka
        19 августа 2013, 23:19
        0
        Здравствуйте, Василий!

        Подскажите, пожалуйста, откуда подтягивается стандартная папка assets для AssetsUrl и где ее можно изменить. После установки системы она была изменена и теперь картинки, например, отображаются с неправильными урл, хотя при этом загружаются куда нужно.

        P.S. Отдельно огромное спасибо за компонент и его поддержку.
          Виталий
          13 июля 2016, 10:58
          0
          Подскажите как выводить в категории, к примеру 5 изображений каждого товара?
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            37