예제 #1
0
 public function initContent()
 {
     if (!$this->errors) {
         $lampStart = 0;
         $lampLimit = 5;
         $lampOrderBy = 'id_product';
         $lampOrderWay = 'ASC';
         $lampOnlyActive = true;
         $lampIdCategory = 42;
         $id_lang = (int) $this->context->language->id;
         $lampIdCategories = CategoryCore::getChildren($lampIdCategory, $id_lang);
         Product::getProducts($id_lang, $lampStart, $lampLimit, $lampOrderBy, $lampOrderWay, $lampIdCategory, $lampOnlyActive);
         $prod = $this->product;
         $this->context->smarty->assign(array('HOOK_LAMP_ACCESSORIES' => Hook::exec('lampAccessories')));
     }
     parent::initContent();
     $this->setTemplate(_PS_THEME_DIR_ . 'product.tpl');
 }
예제 #2
0
 public function hookLampAccessories(&$params)
 {
     $la_itemcount = Configuration::get('LAMPACCESSORIES_ITEMCOUNT');
     if (empty($la_itemcount)) {
         $la_itemcount = 4;
         Configuration::set('LAMPACCESSORIES_ITEMCOUNT', 4);
     }
     $la_tabcount = Configuration::get('LAMPACCESSORIES_TABCOUNT');
     if (empty($la_tabcount)) {
         $la_tabcount = 4;
         Configuration::set('LAMPACCESSORIES_TABCOUNT', 4);
     }
     $context = Context::getContext();
     $controller = $context->controller;
     $id_lang = (int) $context->language->id;
     /**
      * @var $prod Product
      */
     $prod = $controller->getProduct();
     if (empty($prod)) {
         return '';
     }
     $features = $prod->getFeatures($id_lang);
     $id_feature_value = null;
     $id_feature_values = array();
     $power_ids = array(152, 28, 87, 7, 183, 64, 270, 22, 247, 253, 267, 217, 298, 231, 209);
     $sql = "SELECT v.*, l.*, l_n.id_feature_value AS id_feature_value_n, v_n.id_feature AS id_feature2\nFROM `ps_feature_value` v\nJOIN ps_feature_value_lang l\n\tON l.`id_feature_value` = v.`id_feature_value`\nAND l.id_lang = 1\nAND id_feature = 15\nJOIN ps_feature_value_lang l_n\n  ON l_n.value = l.value\nJOIN ps_feature_value v_n\n  ON v_n.id_feature_value = l_n.id_feature_value\n  AND v_n.id_feature IN (41, 42, 40)\n      ";
     $lampTypeFVs = Db::getInstance()->executeS($sql);
     $lampTypeN_Values = array();
     //id_feature для тип лампочки 1,2,3 (id_feature 40-42) => id_feature для тип лампы (id_feature 15)
     foreach ($lampTypeFVs as $ltfv) {
         $lampTypeN_Values[$ltfv['id_feature_value_n']][] = $ltfv['id_feature_value'];
     }
     foreach ($features as $feature) {
         if ($feature['id_feature'] == 16) {
             //Тип цоколя
             $id_feature_value = $feature['id_feature_value'];
             $id_feature_values[] = $feature['id_feature_value'];
         }
         if (in_array($feature['id_feature'], array(40, 41, 42))) {
             //Тип лампы 1,2,3
             if (!isset($id_feature_values[15])) {
                 $id_feature_values[15] = array();
             }
             $id_feature_value = $lampTypeN_Values[$feature['id_feature_value']];
             $id_feature_values[15] = array_merge($id_feature_values[15], $lampTypeN_Values[$feature['id_feature_value']]);
             //15 - Тип лампы
         }
         if ($feature['id_feature'] == 14) {
             //Мощность лампы
             $power_ind = array_search($feature['id_feature_value'], $power_ids);
             if ($power_ind === false) {
                 $id_feature_values[] = $feature['id_feature_value'];
             } else {
                 $id_feature_values[] = array_slice($power_ids, $power_ind);
             }
         }
         //      if($feature['id_feature'] == 38) { //Класс лампы
         //        $id_feature_values[] = $feature['id_feature_value'];
         //      }
         if ($feature['id_feature'] == 43) {
             //Код лампочек
             $id_feature_values[] = $feature['id_feature_value'];
         }
     }
     if (empty($id_feature_value)) {
         return '';
     }
     $lampIdCategory = 42;
     $lampIdCategories = array($lampIdCategory);
     $lampCategories = CategoryCore::getChildren($lampIdCategory, $id_lang);
     foreach ($lampCategories as $lampCategory) {
         $lampIdCategories[] = $lampCategory['id_category'];
     }
     $sCatIds = join(', ', $lampIdCategories);
     // $sCatIds=$prod->id_category_default;
     $sIdFeatureValues = join(', ', $id_feature_values);
     $sIdFeatureValues = '';
     $id_feature_values_count = count($id_feature_values);
     $i = 0;
     foreach ($id_feature_values as $id_fv) {
         //      $id_fv = $id_feature_values[$i];
         $sIdFeatureValues .= "\n      JOIN ps_feature_product f{$i}\n        ON f{$i}.id_product = p.id_product\n          AND f{$i}.id_feature_value " . (is_array($id_fv) ? " IN (" . join(', ', $id_fv) . ") " : " = {$id_fv}") . "\n";
         $i++;
     }
     //    $sql = "SELECT p.*, pl.*, cl.name AS category, f.*, i.id_image
     $sql = "SELECT p.*, pl.*, cl.name AS category, i.id_image\n      FROM ps_product p\n      JOIN ps_product_lang pl ON pl.id_product = p.id_product AND pl.id_lang={$id_lang}\n      JOIN ps_category_lang cl ON cl.id_category=p.id_category_default AND cl.id_lang={$id_lang}\n      {$sIdFeatureValues}\n      LEFT JOIN ps_image i\n        ON i.id_product = p.id_product\n          AND i.cover=1\n      WHERE p.id_category_default IN ({$sCatIds}) AND p.active=1\n      ORDER BY  p.price DESC\n      ";
     if ($_REQUEST['debug'] == 2) {
         echo $sql;
         print_r($lampTypeN_Values);
         print_r($id_feature_values);
         echo "\nsIdFeatureValues = {$sIdFeatureValues}";
     }
     //    $sql = "SELECT p.*, pl.*, cl.name AS category, i.id_image
     //      FROM ps_product p
     //      JOIN ps_product_lang pl ON pl.id_product = p.id_product AND pl.id_lang={$id_lang}
     //      JOIN ps_category_lang cl ON cl.id_category=p.id_category_default AND cl.id_lang={$id_lang}
     //      JOIN ps_feature_product f
     //        ON f.id_product = p.id_product
     //          AND f.id_feature_value = {$id_feature_value}
     //      LEFT JOIN ps_image i
     //        ON i.id_product = p.id_product
     //          AND i.cover=1
     //      WHERE p.id_category_default IN ($sCatIds) AND p.active=1
     //      ORDER BY  p.price DESC
     //      ";
     $lampAccessoriesAll = Db::getInstance()->executeS($sql);
     $lampAccessories = array();
     $lampAccessoriesCount = array();
     foreach ($lampAccessoriesAll as $lampAccessory) {
         if (count($lampAccessories[$lampAccessory['category']]) >= $la_itemcount) {
             continue;
         }
         $imageLink = Link::getImageLink($lampAccessory['link_rewrite'], $lampAccessory['id_image']);
         $productLink = $context->link->getProductLink($lampAccessory);
         $lampAccessory['url'] = $productLink;
         $lampAccessory['image_link'] = 'http://' . $imageLink;
         $lampAccessories[$lampAccessory['category']][] = $lampAccessory;
     }
     foreach ($lampAccessories as $ind => $cat) {
         $lampAccessoriesCount[$ind] = count($cat);
     }
     arsort($lampAccessoriesCount);
     $lampAccessoriesSorted = array();
     foreach ($lampAccessoriesCount as $ind => $count) {
         $lampAccessoriesSorted[] = $lampAccessories[$ind];
     }
     $lampAccessories = array_slice($lampAccessoriesSorted, 0, $la_tabcount);
     $this->context->smarty->assign(array('lampaccessories' => $lampAccessories, 'my_module_name' => Configuration::get('LAMPACCESSORIES_NAME'), 'my_module_link' => $this->context->link->getModuleLink('lampaccessories', 'display')));
     return $this->display(__FILE__, 'lampaccessories.tpl');
 }