Post #1
13 March 2015, 14:27
|
Как вывести в карточке товара другие товары с той же моделью(характеристикой
Здравствуйте!
Тут появилась необходимость вывести товар в карточке товара с той же моделью(характеристикой), что и сам товар в карточке.
Надеюсь понятно написал задачку.
Что я сделал:
Создал характеристику товара, заполнил ее и привязал к каждому товару, после этого приступил к выводу ее
В ProductController.php добавил:
после строки:
После этого в Product.php добавил следующий код:
Тут появилась необходимость вывести товар в карточке товара с той же моделью(характеристикой), что и сам товар в карточке.
Надеюсь понятно написал задачку.
Что я сделал:
Создал характеристику товара, заполнил ее и привязал к каждому товару, после этого приступил к выводу ее
В 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);
}
0