К содержанию

Картинка 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
16 128
Реклама

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

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

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

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

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

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

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

      Плейсхолдеры в чанке:
      <img src="[[+120x90]]" />
      [[+360x240:notempty=`<img src="[[+360x240]]" />`]]
        Дмитрий Маликов
        13 марта 2013, 23:13
        Спасибо огромное.!
          Володя
          Володя Эксперт
          17 апреля 2013, 11:26
          Добрый день!
          Василий извини за нубский вопрос по поводу коммита. Вот это — properties.ms_products.php где мне найти?
          спасибо)
            Василий Наумкин
            Василий Наумкин Администратор
            17 апреля 2013, 12:01
            Прочти доку по msProducts, это давно уже работает из коробки.
              Володя
              Володя Эксперт
              17 апреля 2013, 14:03
              да я уже понял))) спасибо!
              Подскажи если не трудно, как возможно вывести все изображения товара конкретной категории товара?
                Володя
                Володя Эксперт
                17 апреля 2013, 23:55
                добрый вечер. написал вот такой снипет
                <?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
                  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
                    Крутяк!)))
                    вот тут только поменял на 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
                      Проверка на опубликованность и не удалённость:

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

                          Давай уже, дальше сам.
                          Володя
                          Володя Эксперт
                          18 апреля 2013, 17:30
                          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
                          msProduct — в данном случае и есть modResource.

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

                          Если ты еще с моим примером работаешь — там это надо вписать в where.
                          $q->where(array('published' => 1, 'deleted' => 0));
                          Володя
                          Володя Эксперт
                          21 апреля 2013, 10:49
                          да с твоим, но выборка в таком виде
                          [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
                          xPDOQuery::where()

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

              Генерируются ли такие превьюшки?
                Юрий Венедиктович
                27 апреля 2013, 14:48
                да все генерируется
                выводится только thumb и image
                самая маленькая картинка у меня 90*90
                но thumb выводит 120*90
                  Юрий Венедиктович
                  27 апреля 2013, 16:59
                  все получилось
                  [[!msProducts?
                  	&includeThumbs=`200х200` -- x был русский
                  	&tpl=`tpl.category`
                  ]]
        Maria Rybalka
        Maria Rybalka Старожил
        19 августа 2013, 23:19
        Здравствуйте, Василий!

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

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