0.00
Rating
0.00
Power
Общий форумКак вывести в карточке товара другие товары с той же моделью(характеристикой (3)
Post #406
13 March 2015, 14:27 | Как вывести в карточке товара другие товары с той же моделью(характеристикой
Здравствуйте!

Тут появилась необходимость вывести товар в карточке товара с той же моделью(характеристикой), что и сам товар в карточке.

Надеюсь понятно написал задачку.

Что я сделал:
Создал характеристику товара, заполнил ее и привязал к каждому товару, после этого приступил к выводу ее

В ProductController.php добавил:
'productmodel' => $this->product->getProdModel($this->context->language->id),

после строки:
'accessories' => $this->product->getAccessories($this->context->language->id),

После этого в Product.php добавил следующий код:
/**
	 * Get product getProdModel
	 *
	 * <ls user="param" /> integer $id_lang Language id
	 * <ls user="return" /> array Product getProdModel
	 */
	public function getProdModel($id_lang, $active = true, Context $context = null)
	{
		$sqlpm = 'SELECT 
						p.*,
						fv.*,
						product_shop.*,
						stock.out_of_stock,
						IFNULL(stock.quantity, 0) as quantity,
						pl.`description`,
						pl.`description_short`,
						pl.`link_rewrite`,
						pl.`meta_description`,
						pl.`meta_keywords`,
						pl.`meta_title`,
						pl.`name`,
						pl.`available_now`,
						pl.`available_later`,
						MAX(image_shop.`id_image`) id_image,
						il.`legend`,
						m.`name` as manufacturer_name,
						cl.`name` AS category_default,
						DATEDIFF(
						p.`date_add`,
						DATE_SUB(
						NOW(),
						INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY
								)
						) > 0 AS new
					
				FROM 
						`'._DB_PREFIX_.'feature_produt`

				LEFT JOIN
						`'._DB_PREFIX_.'feature_value_lang` fv ON fv.`id_feature_value` = `id_feature_value` '.Shop::addSqlAssociation('feature_value_lang', 'fv').'	

				LEFT JOIN
						`'._DB_PREFIX_.'feature_value` f ON f.`id_feature` = `id_feature` '.Shop::addSqlAssociation('feature_value', 'f').'
						
				LEFT JOIN 
						`'._DB_PREFIX_.'product` p ON p.`id_product` = `id_product` '.Shop::addSqlAssociation('product', 'p').'
				LEFT JOIN 
						`'._DB_PREFIX_.'product_lang` pl ON ( p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').'
								)
				LEFT JOIN 
						`'._DB_PREFIX_.'category_lang` cl ON (
									product_shop.`id_category_default` = cl.`id_category`
									AND cl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('cl').'
								)
				LEFT JOIN 
						`'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product`)'.
								Shop::addSqlAssociation('image', 'i', false, 'image_shop.cover=1').'

				LEFT JOIN
						`'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.')

				LEFT JOIN 
						`'._DB_PREFIX_.'manufacturer` m ON (p.`id_manufacturer`= m.`id_manufacturer`)
								'.Product::sqlStock('p', 0).'

				WHERE 
						`id_feature` = "14"
						AND
						`id_feature_value` = (
												SELECT 
														`id_feature_value` 
												FROM
														`'._DB_PREFIX_.'feature_value_lang`
												LEFT JOIN
														`'._DB_PREFIX_.'feature_produt` fp2
												ON
														fp2.`id_feature_value` = `id_feature_value`
												WHERE
														fp2.`id_product` = '.(int)$this->id.
								($active ? ' AND product_shop.`active` = 1 AND product_shop.`visibility` != \'none\'' : '').'
								GROUP BY product_shop.id_product';

		if (!$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sqlpm))
			return false;

		foreach ($result as &$row)
			$row['id_product_attribute'] = Product::getDefaultAttribute((int)$row['id_product']);

		return $this->getProductsProperties($id_lang, $result);
	}