コード例 #1
0
ファイル: catalog.php プロジェクト: kostiukoleg/all4web.loc
                <td id="<?php 
        echo $data['cat_id'];
        ?>
" class="cat_id">
                  <?php 
        $path = substr_count($data['category_url'], '/') > 1 ? '<a class="parentCat tool-tip-bottom" title="" style="cursor:pointer;">../</a>' : '';
        ?>
                  <?php 
        echo $listCategories[$data['cat_id']] ? $path . $listCategories[$data['cat_id']] : 'Категория удалена';
        ?>
</td>    
                <td class="product-picture image_url">
                  <?php 
        $imagesUrl = explode("|", $data['image_url']);
        if (!empty($imagesUrl[0])) {
            $src = mgImageProductPath($imagesUrl[0], $data["id"], 'small');
        }
        ?>
                  <img class="uploads" src="<?php 
        echo $src;
        ?>
"/>
                </td>                
                <td class="name" ><?php 
        echo $data['title'];
        ?>
<a class="link-to-site tool-tip-bottom" title="<?php 
        echo $lang['PRODUCT_VIEW_SITE'];
        ?>
" href="<?php 
        echo SITE . '/';
コード例 #2
0
ファイル: smalcart.php プロジェクト: kostiukoleg/all4web.loc
 /**
  * Вычисляет общую стоимость содержимого, а также количество.
  * @return array массив с данными о количестве и цене.
  */
 public static function getCartData()
 {
     $modelCart = new Models_Cart();
     // Количество вещей в корзине.
     $res['cart_count'] = 0;
     // Общая стоимость.
     $res['cart_price'] = 0;
     // Если удалось получить данные из куков и они успешно десериализованы в $_SESSION['cart'].
     //self::getCokieCart() &&
     if (!empty($_SESSION['cart'])) {
         $settings = MG::get('settings');
         $totalPrice = 0;
         $totalCount = 0;
         if (!empty($_SESSION['cart'])) {
             $itemIds = array();
             $variantsId = array();
             foreach ($_SESSION['cart'] as $key => $item) {
                 if (!empty($item['id'])) {
                     if (!empty($item['variantId'])) {
                         $variantsId[] = $item['variantId'];
                     }
                     $itemIds[] = $item['id'];
                 }
             }
             if (!empty($itemIds)) {
                 // Пробегаем по содержимому.
                 $idsPr = implode(',', array_unique($itemIds));
                 $where = ' IN (' . trim(DB::quote($idsPr), "'") . ')';
             }
         } else {
             $where = ' IN (0)';
         }
         // Пробегаем по содержимому.
         //   $where = ' IN ('.trim(DB::quote(implode(',',$itemIds)),"'").')';
         $result = DB::query('
       SELECT CONCAT(c.parent_url,c.url) AS category_url, p.url AS product_url, p.*, rate,
       (p.price_course + p.price_course * (IFNULL(rate,0))) as `price_course`, p.currency_iso
       FROM `' . PREFIX . 'product` AS p
       LEFT JOIN `' . PREFIX . 'category` AS c ON c.id = p.cat_id
       WHERE p.id ' . $where);
         $array_variants = array();
         if (!empty($variantsId)) {
             $ids = implode(',', $variantsId);
             $variants_res = DB::query('SELECT  pv.*, c.rate,(pv.price_course + pv.price_course *(IFNULL(c.rate,0))) as `price_course`,
       p.currency_iso
       FROM `' . PREFIX . 'product_variant` pv   
       LEFT JOIN `' . PREFIX . 'product` as p ON 
         p.id = pv.product_id
       LEFT JOIN `' . PREFIX . 'category` as c ON 
         c.id = p.cat_id       
       WHERE pv.id IN (' . trim(DB::quote($ids, true)) . ')');
             while ($variant_row = DB::fetchAssoc($variants_res)) {
                 $array_variants[$variant_row['id']] = $variant_row;
             }
         }
         $currencyRate = MG::getSetting('currencyRate');
         $currencyShopIso = MG::getSetting('currencyShopIso');
         $products_row = array();
         while ($prod = DB::fetchAssoc($result)) {
             $products_row[$prod['id']] = $prod;
         }
         foreach ($_SESSION['cart'] as $key => $item) {
             $variant = null;
             $row = $products_row[$item['id']];
             $arrayImages = explode("|", $row['image_url']);
             if (!empty($item['variantId'])) {
                 $variant = $array_variants[$item['variantId']];
                 $image = $variant['image'] ? $variant['image'] : $arrayImages[0];
                 $row['price'] = $variant['price'];
                 $row['code'] = $variant['code'];
                 $row['count'] = $variant['count'];
                 $row['image_url'] = $variant['image'] ? $variant['image'] : $row['image_url'];
                 $row['image_url_new'] = mgImageProductPath($image, $item['id'], 'small');
                 $row['weight'] = $variant['weight'];
                 $row['title'] = $row['title'] . " " . $variant['title_variant'];
                 $row['variantId'] = $variant['id'];
                 $row['price_course'] = $variant['price_course'];
             }
             $price = $row['price_course'];
             if ($item['id'] == $row['id']) {
                 $count = $item['count'];
                 $row['countInCart'] = $count;
                 $row['property_html'] = htmlspecialchars_decode(str_replace('&amp;', '&', $item['property']));
                 $price = self::plusPropertyMargin($price, $item['propertyReal'], $currencyRate[$row['currency_iso']]);
                 $row['property'] = $item['propertySetId'];
                 $priceWithCoupon = $modelCart->applyCoupon($_SESSION['couponCode'], $price, $row);
                 //$row['currency_iso'] = $row['currency_iso']?$row['currency_iso']:$currencyShopIso;
                 //$price *= $currencyRate[$row['currency_iso']];
                 $priceWithDiscount = $modelCart->applyDiscountSystem($price);
                 //$price = $priceWithCoupon < $priceWithDiscount['price'] ? $priceWithCoupon : $priceWithDiscount['price'];
                 $price = $modelCart->customPrice(array('product' => $row, 'priceWithCoupon' => $priceWithCoupon, 'priceWithDiscount' => $priceWithDiscount['price']));
                 // если выбран формат без копеек, то округляем стоимость до ворматирования.
                 if (in_array(MG::getSetting('priceFormat'), array('1234', '1 234', '1,234'))) {
                     $price = round($price);
                 }
                 $row['priceInCart'] = MG::priceCourse($price * $count) . " " . $settings['currency'];
                 if (!empty($arrayImages)) {
                     $row['image_url'] = $arrayImages[0];
                     $row['image_url_new'] = mgImageProductPath($arrayImages[0], $item['id'], 'small');
                 }
                 $row['category_url'] = SHORT_LINK == '1' ? '' : $row['category_url'] . '/';
                 $row['price'] = $price;
                 $res['dataCart'][] = $row;
                 $totalPrice += $price * $count;
                 $totalCount += $count;
                 $itemIds[] = $item['id'];
             }
         }
         $res['cart_price_wc'] = MG::priceCourse($totalPrice) . " " . $settings['currency'];
         $res['cart_count'] = $totalCount;
         $res['cart_price'] = MG::priceCourse($totalPrice);
     }
     $args = func_get_args();
     return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $res, $args);
 }
コード例 #3
0
/**
 * Возвращает правильно сформированную картинку для продукта в HTML.
 * Со всеми параметрами, для эфекта перелета в корщину.
 * @param type $data - параметры продукта
 * @return string.
 */
function mgImageProduct($data)
{
    $product = new Models_Product();
    $data["image_url"] = basename($data["image_url"]);
    $imagesData = $product->imagesConctruction($data["image_url"], $data["image_title"], $data["image_alt"], $data['id']);
    $src = SITE . "/uploads/no-img.jpg";
    $dir = floor($data["id"] / 100) . '00';
    $imagesData["image_url"] = basename($imagesData["image_url"]);
    $srcLarge = mgImageProductPath($data["image_url"], $data["id"]);
    if (file_exists(URL::$documentRoot . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . 'product' . DIRECTORY_SEPARATOR . $dir . DIRECTORY_SEPARATOR . $data["id"] . DIRECTORY_SEPARATOR . 'thumbs' . DIRECTORY_SEPARATOR . '70_' . $imagesData["image_url"])) {
        $src = SITE . '/uploads/product/' . $dir . '/' . $data['id'] . '/thumbs/70_' . $imagesData["image_url"];
    } elseif (file_exists(URL::$documentRoot . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . 'thumbs' . DIRECTORY_SEPARATOR . '70_' . $imagesData["image_url"])) {
        $src = SITE . '/uploads/thumbs/70_' . $imagesData["image_url"];
    }
    return '<img data-transfer="true" data-product-id="' . $data["id"] . '" src="' . $src . '" alt="' . $imagesData["image_alt"] . '" title="' . $imagesData["image_title"] . '" data-large="' . $srcLarge . '">';
}
コード例 #4
0
ファイル: catalog.php プロジェクト: kostiukoleg/all4web.loc
 /**
  * Получает список продуктов при вводе в поле поиска.
  */
 public function getSearchData()
 {
     $keyword = MG::defenderXss_decode(URL::getQueryParametr('text'));
     if (!empty($keyword)) {
         $keyword = $this->convertLang($keyword);
         $catalog = new Models_Catalog();
         $items = $catalog->getListProductByKeyWord($keyword, true, true, false, 'groupBy');
         foreach ($items['catalogItems'] as $key => $value) {
             $items['catalogItems'][$key]['image_url'] = mgImageProductPath($value["image_url"], $value['id'], 'small');
         }
         $searchData = array('status' => 'success', 'item' => array('keyword' => $keyword, 'count' => $items['numRows'], 'items' => $items), 'currency' => MG::getSetting('currency'));
     }
     echo json_encode($searchData);
     exit;
 }
コード例 #5
0
ファイル: cart.php プロジェクト: kostiukoleg/all4web.loc
echo SITE;
?>
/cart">
      <table class="cart-table">
        <?php 
$i = 1;
foreach ($data['productPositions'] as $product) {
    ?>
          <tr>
            <td class="img-cell">
              <a href="<?php 
    echo $product["link"];
    ?>
" target="_blank" class="cart-img">
                <img src="<?php 
    echo mgImageProductPath($product["image_url"], $product['id'], 'small');
    ?>
" alt="">
              </a>
            </td>
            <td>
              <a href="<?php 
    echo SITE . '/';
    echo isset($product["category_url"]) ? $product["category_url"] : 'catalog/';
    echo $product["product_url"];
    ?>
" target="_blank">
                <?php 
    echo $product['title'];
    ?>
              </a>
コード例 #6
0
ファイル: product.php プロジェクト: kostiukoleg/all4web.loc
 /**
  * Создает массивы данных для картинок товара, возвращает три массива со ссылками, заголовками и альт, текстами.
  * @param string $imageUrl строка с разделителями | мезжду ссылок 
  * @param string $imageTitle строка с разделителями | мезжду заголовков 
  * @param string $imageAlt строка с разделителями | мезжду тестов 
  */
 public function imagesConctruction($imageUrl, $imageTitle, $imageAlt, $id = 0)
 {
     $result = array('images_product' => array(), 'images_title' => array(), 'images_alt' => array());
     // Получаем массив картинок для продукта, при этом первую в наборе делаем основной.
     $arrayImages = explode("|", $imageUrl);
     foreach ($arrayImages as $cell => $image) {
         $arrayImages[$cell] = str_replace(SITE . '/uploads/', '', mgImageProductPath($image, $id));
     }
     if (!empty($arrayImages)) {
         $result['image_url'] = $arrayImages[0];
     }
     $result['images_product'] = $arrayImages;
     // Получаем массив title для картинок продукта, при этом первый в наборе делаем основной.
     $arrayTitles = explode("|", $imageTitle);
     if (!empty($arrayTitles)) {
         $result['image_title'] = $arrayTitles[0];
     }
     $result['images_title'] = $arrayTitles;
     // Получаем массив alt для картинок продукта, при этом первый в наборе делаем основной.
     $arrayAlt = explode("|", $imageAlt);
     if (!empty($arrayAlt)) {
         $result['image_alt'] = $arrayAlt[0];
     }
     $result['images_alt'] = $arrayAlt;
     $args = func_get_args();
     return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $result, $args);
 }
コード例 #7
0
ファイル: actioner.php プロジェクト: kostiukoleg/all4web.loc
 /**
  * Получает параметры заказа
  */
 public function getOrderData()
 {
     $model = new Models_Order();
     $orderData = $model->getOrder(" id = " . DB::quote($_POST['id']));
     $orderData = $orderData[$_POST['id']];
     if ($orderData['number'] == '') {
         $orderData['number'] = $orderData['id'];
         DB::query("UPDATE `" . PREFIX . "order` SET `number`= " . DB::quote($orderData['number']) . " WHERE `id`=" . DB::quote($orderData['id']) . "");
     }
     $orderData['yur_info'] = unserialize(stripslashes($orderData['yur_info']));
     $orderData['order_content'] = unserialize(stripslashes($orderData['order_content']));
     // Запрос для проверки, существует ли система скидок
     $percent = false;
     $discountSyst = false;
     $res = DB::query('SELECT * FROM `' . PREFIX . 'plugins` WHERE `folderName` = "discount-system"');
     $act = DB::fetchArray($res);
     $result = DB::query('SHOW TABLES LIKE "' . PREFIX . 'discount-system%"');
     if (DB::numRows($result) == 2 && $act['active']) {
         $percent = 0;
         $discountSyst = true;
     }
     if (!empty($orderData['order_content'])) {
         $product = new Models_Product();
         foreach ($orderData['order_content'] as &$item) {
             foreach ($item as &$v) {
                 $v = rawurldecode($v);
             }
         }
         foreach ($orderData['order_content'] as &$items) {
             $res = $product->getProduct($items['id']);
             $items['image_url'] = mgImageProductPath($res['image_url'], $items['id'], 'small');
             $items['property'] = htmlspecialchars_decode(str_replace('&amp;', '&', $items['property']));
             $response['discount'] = $items['discount'];
             $percent = $items['discount'];
             $items['maxCount'] = $res['count'];
             $variants = DB::query("SELECT `id`, `count` FROM `" . PREFIX . "product_variant`\r\n                  WHERE `product_id`=" . DB::quote($items['id']) . " AND `code`=" . DB::quote($items['code']));
             if ($variant = DB::fetchAssoc($variants)) {
                 $items['variant'] = $variant['id'];
                 $items['maxCount'] = $variant['count'];
             }
             $items['notSet'] = $model->notSetGoods($items['id']);
         }
     }
     //заменить на получение скидки
     $codes = array();
     // Запрос для проверки , существуют ли промокоды.
     $result = DB::query('SHOW TABLES LIKE "' . PREFIX . 'promo-code"');
     if (DB::numRows($result)) {
         $res = DB::query('SELECT * FROM `' . PREFIX . 'plugins` WHERE `folderName` = "promo-code"');
         $act = DB::fetchArray($res);
         if ($act['active']) {
             $res = DB::query('SELECT code, percent FROM `' . PREFIX . 'promo-code` 
       WHERE invisible = 1 
       AND now() >= `from_datetime`
       AND now() <= `to_datetime`');
             while ($code = DB::fetchAssoc($res)) {
                 $codes[] = $code['code'];
                 if ($code['code'] == $orderData['order_content'][0]['coupon']) {
                     $percent = $percent == 0 ? $code['percent'] : $percent;
                 }
             }
         }
     }
     $response['order'] = $orderData;
     $response['order']['discountsSystem'] = $discountSyst;
     $response['order']['discontPercent'] = $percent;
     $response['order']['promoCodes'] = $codes;
     $response['order']['date_delivery'] = $orderData['date_delivery'] ? date('d.m.Y', strtotime($orderData['date_delivery'])) : '';
     $deliveryArray = $model->getDeliveryMethod();
     $response['deliveryArray'] = $deliveryArray;
     $paymentArray = array();
     $i = 1;
     while ($payment = $model->getPaymentMethod($i)) {
         $paymentArray[$i] = $payment;
         $i++;
     }
     $response['paymentArray'] = $paymentArray;
     $this->data = $response;
     return true;
 }
コード例 #8
0
ファイル: catalog.php プロジェクト: kostiukoleg/all4web.loc
 /**
  * Возвращает список найденных продуктов соответствующих поисковой фразе.
  * @param string $keyword - поисковая фраза.
  * @param string $allRows - получить сразу все записи.
  * @param string $onlyActive - учитывать только активные продукты.
  * @param boolean $adminPanel - запрос из публичной части или админки.
  * @return array
  */
 public function getListProductByKeyWord($keyword, $allRows = false, $onlyActive = false, $adminPanel = false, $mode = false)
 {
     $result = array('catalogItems' => array(), 'pager' => null, 'numRows' => null);
     $keyword = htmlspecialchars($keyword);
     $keywordUnTrim = $keyword;
     $keyword = trim($keyword);
     if (empty($keyword) || mb_strlen($keyword, 'UTF-8') <= 2) {
         return $result;
     }
     $currencyRate = MG::getSetting('currencyRate');
     $currencyShopIso = MG::getSetting('currencyShopIso');
     // Поиск по точному соответствию.
     // Пример $keyword = " 'красный',   зеленый "
     // Убираем начальные пробелы и конечные.
     $keyword = trim($keyword);
     //$keyword = "'красный',   зеленый"
     if (SEARCH_FULLTEXT) {
         // Вырезаем спец символы из поисковой фразы.
         $keyword = preg_replace('/[`~!#$%^*()=+\\\\|\\/\\[\\]{};:"\',<>?]+/', '', $keyword);
         //$keyword = "красный   зеленый"
         // Замена повторяющихся пробелов на на один.
         $keyword = preg_replace('/ +/', ' ', $keyword);
         //$keyword = "красный зеленый"
         // Обрамляем каждое слово в звездочки, для расширенного поиска.
         $keyword = str_replace(' ', '* +', $keyword);
         //$keyword = "красный* *зеленый"
         // Добавляем по краям звездочки.
         $keyword = '+' . $keyword . '*';
         //$keyword = "*красный* *зеленый*"
         $sql = "\r\n      SELECT distinct p.code, CONCAT(c.parent_url,c.url) AS category_url,\r\n        p.url AS product_url, p.*, pv.product_id as variant_exist, pv.id as variant_id, rate,(p.price_course + p.price_course * (IFNULL(rate,0))) as `price_course`\r\n      FROM  `" . PREFIX . "product` AS p\r\n      LEFT JOIN  `" . PREFIX . "category` AS c ON c.id = p.cat_id\r\n      LEFT JOIN  `" . PREFIX . "product_variant` AS pv ON p.id = pv.product_id";
         if (!$adminPanel) {
             $sql .= " LEFT JOIN (\r\n        SELECT pv.product_id, SUM( pv.count ) AS varcount\r\n        FROM  `" . PREFIX . "product_variant` AS pv\r\n        GROUP BY pv.product_id\r\n      ) AS temp ON p.id = temp.product_id";
         }
         $prod = new Models_Product();
         $fulltext = "";
         $sql .= " WHERE ";
         $match = " MATCH (\r\n      p.`title` , p.`code`, p.`description` " . $fulltextInVar . " " . $fulltext . "\r\n      )\r\n      AGAINST (\r\n      '" . $keyword . "'\r\n      IN BOOLEAN\r\n      MODE\r\n      ) ";
         DB::query("SELECT id FROM `" . PREFIX . "product_variant` LIMIT 1");
         //Если есть варианты товаров то будеи искать и в них.
         if (DB::numRows(DB::query("SELECT id FROM `" . PREFIX . "product_variant` LIMIT 1"))) {
             $fulltextInVar = ', pv.`title_variant`, pv.`code` ';
             $match = "(" . $match . " OR MATCH (pv.`title_variant`, pv.`code`)\r\n        AGAINST (\r\n        '" . $keyword . "'\r\n        IN BOOLEAN\r\n        MODE\r\n        )) ";
         }
         $sql .= $match;
         // Проверяем чтобы в вариантах была хотябы одна единица.
         if (!$adminPanel) {
             if (MG::getSetting('printProdNullRem') == "true") {
                 $sql .= " AND (temp.`varcount` > 0 OR temp.`varcount` < 0 OR p.count>0 OR p.count<0)";
             }
         }
         if ($onlyActive) {
             $sql .= ' AND p.`activity` = 1';
         }
     } else {
         $sql = "\r\n       SELECT distinct p.id, CONCAT(c.parent_url,c.url) AS category_url,\r\n         p.url AS product_url, p.*, pv.product_id as variant_exist, pv.id as variant_id, rate,(p.price_course + p.price_course * (IFNULL(rate,0))) as `price_course`, \r\n         p.currency_iso\r\n       FROM  `" . PREFIX . "product` AS p\r\n       LEFT JOIN  `" . PREFIX . "category` AS c ON c.id = p.cat_id\r\n       LEFT JOIN  `" . PREFIX . "product_variant` AS pv ON p.id = pv.product_id";
         if (!$adminPanel) {
             $sql .= " LEFT JOIN (\r\n         SELECT pv.product_id, SUM( pv.count ) AS varcount\r\n         FROM  `" . PREFIX . "product_variant` AS pv\r\n         GROUP BY pv.product_id\r\n       ) AS temp ON p.id = temp.product_id";
         }
         $prod = new Models_Product();
         $fulltext = "";
         //Если есть варианты товаров то будеи искать и в них.
         if (DB::numRows(DB::query("SELECT id FROM `" . PREFIX . "product_variant` LIMIT 1"))) {
             $fulltextInVar = " OR\r\n             pv.`title_variant` LIKE '%" . DB::quote($keyword, true) . "%'\r\n           OR\r\n             pv.`code` LIKE '%" . DB::quote($keyword, true) . "%'";
         }
         $sql .= " WHERE (\r\n             p.`title` LIKE '%" . DB::quote($keyword, true) . "%'\r\n           OR\r\n             p.`code` LIKE '%" . DB::quote($keyword, true) . "%'\r\n        " . $fulltextInVar . ')';
         // Проверяем чтобы в вариантах была хотябы одна единица.
         if (!$adminPanel) {
             if (MG::getSetting('printProdNullRem') == "true") {
                 $sql .= " AND (temp.`varcount` > 0 OR temp.`varcount` < 0 OR p.count>0 OR p.count<0)";
             }
         }
         if ($onlyActive) {
             $sql .= ' AND p.`activity` = 1';
         }
     }
     $page = URL::get("page");
     $settings = MG::get('settings');
     //if ($mode=='groupBy') {
     $sql .= ' GROUP BY p.id';
     //}
     if ($allRows) {
         $sql .= ' LIMIT 15';
     }
     $navigator = new Navigator($sql, $page, $settings['countСatalogProduct'], $linkCount = 6, $allRows);
     // Определяем класс.
     $this->products = $navigator->getRowsSql();
     // добавим к полученым товарам их свойства
     $this->products = $this->addPropertyToProduct($this->products);
     $this->pager = $navigator->getPager();
     $result = array('catalogItems' => $this->products, 'pager' => $this->pager, 'numRows' => $navigator->getNumRowsSql());
     if (count($result['catalogItems']) > 0) {
         // упорядочивание списка найденых  продуктов
         // первыми в списке будут стоять те товары, у которых полностью совпала поисковая фраза
         // затем будут слова в начале которых встретилось совпадение
         // в конце слова в середине которых встретилось совпадение
         //
         //
         $keyword = str_replace('*', '', $keyword);
         $resultTemp = $result['catalogItems'];
         $prioritet0 = array();
         $prioritet1 = array();
         $prioritet2 = array();
         foreach ($resultTemp as $key => $item) {
             $title = mb_convert_case($item['title'], MB_CASE_LOWER, "UTF-8");
             $keyword = mb_convert_case($keyword, MB_CASE_LOWER, "UTF-8");
             $item['image_url'] = mgImageProductPath($item["image_url"], $item['id']);
             if (trim($title) == $keyword) {
                 $prioritet0[] = $item;
                 continue;
             }
             if (strpos($title, $keyword) === 0) {
                 $prioritet1[] = $item;
             } else {
                 $prioritet2[] = $item;
             }
         }
         $result['catalogItems'] = array_merge($prioritet0, $prioritet1, $prioritet2);
     }
     $args = func_get_args();
     return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $result, $args);
 }
コード例 #9
0
        echo $variant['id'];
        ?>
" data-count="<?php 
        echo $variant['count'];
        ?>
" name="variant" value = "<?php 
        echo $variant['id'];
        ?>
" <?php 
        echo !$i++ ? 'checked=checked' : '';
        ?>
>
        </td>
          <td>
              <?php 
        $src = mgImageProductPath($variant['image'], $variant['product_id'], 'small');
        echo !empty($variant['image']) ? '<img src="' . $src . '" width="30" height="20">' : '';
        ?>
          </td>
          <td>
              <label for="variant-<?php 
        echo $variant['id'];
        ?>
"><?php 
        echo $variant['title_variant'];
        ?>
</label>
          </td>
          <td style="padding-left:5px;" class="nowrap">
              <span>
                  <?php