Beispiel #1
0
 /**
  * Метод добавляет к массиву продуктов информацию о характеристиках
  * для каждого продукта
  * @param $arrayProducts - массив с продуктами
  * @return float.
  */
 public function addPropertyToProduct($arrayProducts)
 {
     $categoryIds = array();
     $whereCat = '';
     $idsProduct = array();
     $currency = MG::getSetting("currency");
     $currencyRate = MG::getSetting('currencyRate');
     $currencyShopIso = MG::getSetting('currencyShopIso');
     $prod = new Models_Product();
     $idsVariantProduct = array();
     foreach ($arrayProducts as $key => $product) {
         $arrayProducts[$key]['category_url'] = SHORT_LINK == '1' && !URL::isSection('mg-admin') ? '' : $arrayProducts[$key]['category_url'] . '/';
         $product['category_url'] = SHORT_LINK == '1' ? '' : $product['category_url'] . '/';
         if ($product['variant_exist'] && $product['variant_id']) {
             $variants = $prod->getVariants($product['id']);
             $variantsKey = array_keys($variants);
             $product['variant_id'] = $variantsKey[0];
             $idsVariantProduct[$product['id']][] = $key;
             $variant = $variants[$product['variant_id']];
             $arrayProducts[$key]['price_course'] = $variant['price_course'];
             $arrayProducts[$key]['price'] = $variant['price'];
             $arrayProducts[$key]['image_url'] = $variant['image'] ? $variant['image'] : $arrayProducts[$key]['image_url'];
         }
         $idsProduct[$product['id']] = $key;
         $categoryIds[] = $product['cat_id'];
         // Назначаем для продукта позьзовательские
         // характеристики по умолчанию, заданные категорией.
         $arrayProducts[$key]['thisUserFields'] = MG::get('category')->getUserPropertyCategoryById($product['cat_id']);
         $arrayProducts[$key]['propertyIdsForCat'] = MG::get('category')->getPropertyForCategoryById($product['cat_id']);
         $arrayProducts[$key]['currency'] = $currency;
         // Формируем ссылки подробнее и в корзину.
         $arrayProducts[$key]['actionBuy'] = '<a href="' . SITE . '/catalog?inCartProductId=' . $product["id"] . '" class="addToCart product-buy" data-item-id="' . $product["id"] . '">' . MG::getSetting('buttonBuyName') . '</a>';
         $arrayProducts[$key]['actionCompare'] = '<a href="' . SITE . '/compare?inCompareProductId=' . $product["id"] . '" class="addToCompare" data-item-id="' . $product["id"] . '">' . MG::getSetting('buttonCompareName') . '</a>';
         $arrayProducts[$key]['actionView'] = '<a href="' . SITE . '/' . (isset($product["category_url"]) ? $product["category_url"] : 'catalog') . '/' . $product["product_url"] . '" class="product-info">' . MG::getSetting('buttonMoreName') . '</a>';
         $arrayProducts[$key]['link'] = SITE . '/' . (isset($product["category_url"]) ? $product["category_url"] : 'catalog/') . $product["product_url"];
         if (empty($arrayProducts[$key]['currency_iso'])) {
             $arrayProducts[$key]['currency_iso'] = $currencyShopIso;
         }
         $arrayProducts[$key]['real_old_price'] = $arrayProducts[$key]['old_price'];
         $arrayProducts[$key]['old_price'] *= $currencyRate[$arrayProducts[$key]['currency_iso']];
         $arrayProducts[$key]['real_price'] = $arrayProducts[$key]['price'];
         $arrayProducts[$key]['price'] = MG::priceCourse($arrayProducts[$key]['price_course']);
         $imagesConctructions = $prod->imagesConctruction($arrayProducts[$key]['image_url'], $arrayProducts[$key]['image_title'], $arrayProducts[$key]['image_alt']);
         $arrayProducts[$key]['images_product'] = $imagesConctructions['images_product'];
         $arrayProducts[$key]['images_title'] = $imagesConctructions['images_title'];
         $arrayProducts[$key]['images_alt'] = $imagesConctructions['images_alt'];
         $arrayProducts[$key]['image_url'] = $imagesConctructions['image_url'];
         $arrayProducts[$key]['image_title'] = $imagesConctructions['image_title'];
         $arrayProducts[$key]['image_alt'] = $imagesConctructions['image_alt'];
         $imagesUrl = explode("|", $arrayProducts[$key]['image_url']);
         $arrayProducts[$key]["image_url"] = "";
         if (!empty($imagesUrl[0])) {
             $arrayProducts[$key]["image_url"] = $imagesUrl[0];
         }
     }
     $model = new Models_Product();
     $arrayVariants = $model->getBlocksVariantsToCatalog(array_keys($idsProduct), true);
     foreach (array_keys($idsProduct) as $id) {
         $arrayProducts[$idsProduct[$id]]['variants'] = $arrayVariants[$id];
     }
     // Собираем все ID продуктов в один запрос.
     if ($prodSet = trim(DB::quote(implode(',', array_keys($idsProduct))), "'")) {
         // Формируем список id продуктов, к которым нужно найти пользовательские характеристики.
         $where = ' IN (' . $prodSet . ') ';
     } else {
         $where = ' IN (0) ';
     }
     //Определяем id категории, в которой находимся
     $catCode = URL::getLastSection();
     $sql = '
   SELECT pup.property_id, pup.value, pup.product_id, prop.*, pup.type_view, pup.product_margin
   FROM `' . PREFIX . 'product_user_property` as pup
   LEFT JOIN `' . PREFIX . 'property` as prop
     ON pup.property_id = prop.id ';
     if ($catSet = trim(DB::quote(implode(',', $categoryIds)), "'")) {
         $categoryIds = array_unique($categoryIds);
         $sql .= '
     LEFT JOIN  `' . PREFIX . 'category_user_property` as cup
     ON cup.property_id = prop.id ';
         $whereCat = ' AND cup.category_id IN (' . $catSet . ') ';
     }
     $sql .= 'WHERE pup.`product_id` ' . $where . $whereCat;
     $sql .= 'ORDER BY `sort` DESC';
     $res = DB::query($sql);
     while ($userFields = DB::fetchAssoc($res)) {
         //   viewDAta($userFields['property_id']);
         //   viewDAta($arrayProducts[$key]['propertyIdsForCat']);
         // Обновляет данные позначениям характеристик, только для тех хар. которые  назначены для категории текущего товара.
         // Это не работает в фильтрах и сравнениях.
         // if(in_array($userFields['property_id'],$arrayProducts[$key]['propertyIdsForCat'])){
         // дописываем в массив пользовательских характеристик,
         // все переопределенные для каждого тоавара, оставляя при
         // этом не измененные характеристики по умолчанию
         $arrayProducts[$idsProduct[$userFields['product_id']]]['thisUserFields'][$userFields['property_id']] = $userFields;
         // добавляем польз характеристики ко всем вариантам продукта
         if (!empty($idsVariantProduct[$userFields['product_id']])) {
             foreach ($idsVariantProduct[$userFields['product_id']] as $keyPages) {
                 $arrayProducts[$keyPages]['thisUserFields'][$userFields['property_id']] = $userFields;
             }
         }
         // }
     }
     return $arrayProducts;
 }
Beispiel #2
0
/**
 * Возвращает правильно сформированную картинку для продукта в HTML.
 * Со всеми параметрами, для эфекта перелета в корщину.
 * @param type $data - параметры продукта
 * @return string.
 */
function mgImageProduct($data)
{
    $product = new Models_Product();
    $imagesData = $product->imagesConctruction($data["image_url"], $data["image_title"], $data["image_alt"]);
    $src = SITE . "/uploads/no-img.jpg";
    if (file_exists(URL::$documentRoot . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . 'thumbs' . DIRECTORY_SEPARATOR . '70_' . $data["image_url"])) {
        $src = SITE . '/uploads/thumbs/70_' . $data["image_url"];
    }
    return '<img data-transfer="true" data-product-id="' . $data["id"] . '" src="' . $src . '" alt="' . $imagesData["image_alt"] . '" title="' . $imagesData["image_title"] . '">';
}
/**
 * Возвращает правильно сформированную картинку для продукта в 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 . '">';
}