Ответить Новая тема Новый опрос 
 Вывод дополнительного товара в карточке товара.
braincord
Новичок
Сообщений: 6
Регистрация: 17-04-2012


13-03-2015 19:18
Здравствуйте!

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


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

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

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

после строки:
Код:
'accessories' => $this->product->getAccessories($this->context->language->id),
После этого в Product.php добавил следующий код:

Код:
/**
     * Get product getProdModel
     *
     * @param integer $id_lang Language id
     * @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);
    }

Ну и в самом шаблоне карточки товара добавил следующий код product.tpl:
Код:
<!--productmodel -->
            <section class="page-product-box">
                <h3 class="page-product-heading">{l s='Запчасти:'}</h3>
                <div class="block products_block accessories-block clearfix">
                    <div class="block_content">
                        <div class="block_content">
                            {foreach from=$productmodel item=productmodels name=productmodel_list}
                                {if ($productmodels.allow_oosp || $productmodels.quantity_all_versions > 0 || $productmodels.quantity > 0) && $productmodels.available_for_order && !isset($restricted_country_mode)}
                                    {assign var='productmodelsLink' value=$link->getProductLink($productmodels.id_product, $productmodels.link_rewrite, $productmodels.category)}
                                    <p>
                                        <div class="s_title_block">
                                            <h5 class="product-name">
                                                <a href="{$productmodelsLink|escape:'html':'UTF-8'}">
                                                    {$productmodels.name|truncate:100:'...':true|escape:'html':'UTF-8'}
                                                </a>
                                            </h5>
                                            {if $productmodels.show_price && !isset($restricted_country_mode) && !$PS_CATALOG_MODE}
                                            <span class="price">
                                                {if $priceDisplay != 1}
                                                {displayWtPrice p=$productmodels.price}{else}{displayWtPrice p=$productmodels.price_tax_exc}
                                                {/if}
                                            </span>
                                            {/if}
                                        </div>
                                        <div class="clearfix" style="margin-top:5px">
                                            {if !$PS_CATALOG_MODE && ($productmodels.allow_oosp || $productmodels.quantity > 0)}
                                                <div class="no-print">
                                                    <a class="exclusive button ajax_add_to_cart_button" href="{$link->getPageLink('cart', true, NULL, "qty=1&amp;id_product={$productmodels.id_product|intval}&amp;token={$static_token}&amp;add")|escape:'html':'UTF-8'}" data-id-product="{$productmodels.id_product|intval}" title="{l s='Add to cart'}">
                                                        <span>{l s='В корзину'}</span>
                                                    </a>
                                                </div>
                                            {/if}
                                        </div>
                                    </p>
                                {/if}
                            {/foreach}
                        </div>
                    </div>
                </div>
            </section>
            <!--end Accessories -->

Но результат пустой :( Не могу понять что я делаю нет, профи помогит плиз.
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


13-03-2015 22:04
Ваш php код содержит ошибки.
Перепишите или воспользуйтесь подобным:
Код:
public function getProdModel($id_lang, $id_feature_value, Context $context = null)
    {
        if (!$context)
            $context = Context::getContext();

        $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
        SELECT
            p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity, pl.`description`, pl.`description_short`,
            MAX(product_attribute_shop.id_product_attribute) id_product_attribute,
            pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`,
            pl.`name`, MAX(image_shop.`id_image`) id_image, il.`legend`, m.`name` AS manufacturer_name,
            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_.'product` p
        '.Shop::addSqlAssociation('product', 'p').'
        LEFT JOIN '._DB_PREFIX_.'feature_product fp ON (fp.id_product = p.id_product)
        LEFT JOIN '._DB_PREFIX_.'product_attribute pa ON (pa.id_product = p.id_product)
        '.Shop::addSqlAssociation('product_attribute', 'pa', false, 'product_attribute_shop.default_on=1').'
        '.Product::sqlStock('p', 0, false, $context->shop).'
        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_.'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 (m.`id_manufacturer` = p.`id_manufacturer`)
        WHERE product_shop.`active` = 1
        AND fp.`id_feature_value` = '.(int)$id_feature_value.'
        GROUP BY product_shop.id_product');
        
        if (!$result)
            return false;

        return Product::getProductsProperties((int)$id_lang, $result);
    }


Код:
'productmodel' => $this->product->getProdModel($this->context->language->id, 11),

 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
braincord
Новичок
Сообщений: 6
Регистрация: 17-04-2012


13-03-2015 22:45
Пока переписал SQL запрос:

Код:
SELECT
                a.id_product,
                a.id_manufacturer,
                a.id_category_default,
                a.price,
                
                al.name,
                al.link_rewrite,
                
                fvl.value
                
        FROM
                vr_product a
  INNER JOIN
                vr_product_lang al ON a.id_product=al.id_product
  INNER JOIN
                vr_feature_product fp ON a.id_product=fp.id_product
  INNER JOIN
                vr_feature_value_lang fvl ON fvl.id_feature_value=fp.id_feature_value
  INNER JOIN                
                vr_feature_value fv ON fv.id_feature_value=fvl.id_feature_value
       WHERE
                fv.id_feature='14'
        AND
                fvl.value IN (
                            SELECT
                                    fvl2.value
                            FROM
                                    vr_feature_value_lang fvl2
                      INNER JOIN
                                    vr_feature_product fp2 ON fvl2.id_feature_value=fp2.id_feature_value
                           WHERE
                                    fp2.id_product='157')


Можете подставить свои значения и посмотреть то что я хотел получить.

А почему вы поставили 11, в данной строке?:

Код:
'productmodel' => $this->product->getProdModel($this->context->language->id, 11),
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
braincord
Новичок
Сообщений: 6
Регистрация: 17-04-2012


14-03-2015 11:24
А как проверить php код на ошибки? Извиняюсь за столь глупый вопрос.
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


14-03-2015 14:39
Цитата:( braincord @ 14-03-2015 12:24 Смотреть сообщение )
А как проверить php код на ошибки? Извиняюсь за столь глупый вопрос.

Открыть файл: /config/defines.inc.php
и изменить:
Код:
define('_PS_MODE_DEV_', false);

на:
Код:
define('_PS_MODE_DEV_', true);
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
braincord
Новичок
Сообщений: 6
Регистрация: 17-04-2012


15-03-2015 11:45
Цитата:( Алекс @ 14-03-2015 14:39 Смотреть сообщение )
Цитата:( braincord @ 14-03-2015 12:24 Смотреть сообщение )
А как проверить php код на ошибки? Извиняюсь за столь глупый вопрос.
Открыть файл: /config/defines.inc.php
и изменить:
Код:
define('_PS_MODE_DEV_', false);

на:
Код:
define('_PS_MODE_DEV_', true);


Переписал код как для товаров "аксесуаров", но все равно не работает. Помогите разобраться что не так делаю(Product.php):

Код:
/**
     * Get product ProdModel (only names)
     *
     * @param integer $id_lang Language id
     * @param integer $id_product Product id
     * @return array Product ProdModel
     */
    public static function getProdModelLight($id_lang, $id_product, Context $context = null)
    {
        return Db::getInstance()->executeS('
            SELECT
                    p.`id_product`,
                    p.`reference`,
                    
                    pl.`name`
                        
            FROM
                    `'._DB_PREFIX_.'feature_product n`
            LEFT JOIN
                    `'._DB_PREFIX_.'product` p ON (p.`id_product`= n.`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').')
            WHERE
                    n.`id_product` = '.(int)$id_product
        );
    }
    
    /**
     * Get product getProdModel
     *
     * @param integer $id_lang Language id
     * @return array Product getProdModel
     */
    public function getProdModel($id_lang, $active = true, Context $context = null)
    {
        $sqlpm = 'SELECT
                p.*,
                        
                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_.'vr_feature_product` fp
        
   LEFT JOIN
                `'._DB_PREFIX_.'product` p ON p.`id_product` = fp.`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').')
                                        
  INNER JOIN
                `'._DB_PREFIX_.'feature_value_lang` fvl ON fvl.`id_feature_value` = fp.`id_feature_value`
  
  INNER JOIN                
                `'._DB_PREFIX_.'feature_value` fv ON fv.`id_feature_value` = fvl.`id_feature_value`
    
   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
                fp.`id_product` = '.(int)$this->id.($active ? ' AND product_shop.`active` = 1 AND product_shop.`visibility` != \'none\'' : '').'
         AND    
                fv.`id_feature` = 14
         AND
                fvl.`value` IN (
                                   SELECT
                                            fvl2.`value`
                                    FROM
                                            `'._DB_PREFIX_.'feature_value_lang` fvl2
                              INNER JOIN
                                            `'._DB_PREFIX_.'feature_product` fp2 ON fvl2.`id_feature_value` = fp2.`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);
    }
    
    public static function getProdModelById($feature_product_id)
    {
        return Db::getInstance()->getRow('SELECT `id_product`, `name` FROM `'._DB_PREFIX_.'product_lang` WHERE `id_product` = '.(int)$feature_product_id);
    }
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
ruleoffdv


Cпециалист
Сообщений: 209
Регистрация: 05-05-2013


29-06-2016 14:31
Цитата:( braincord @ 15-03-2015 12:45 Смотреть сообщение )
Цитата:( Алекс @ 14-03-2015 14:39 Смотреть сообщение )
Цитата:( braincord @ 14-03-2015 12:24 Смотреть сообщение )
А как проверить php код на ошибки? Извиняюсь за столь глупый вопрос.
Открыть файл: /config/defines.inc.php
и изменить:
Код:
define('_PS_MODE_DEV_', false);

на:
Код:
define('_PS_MODE_DEV_', true);

Переписал код как для товаров "аксесуаров", но все равно не работает. Помогите разобраться что не так делаю(Product.php):

Код:
/**
     * Get product ProdModel (only names)
     *
     * @param integer $id_lang Language id
     * @param integer $id_product Product id
     * @return array Product ProdModel
     */
    public static function getProdModelLight($id_lang, $id_product, Context $context = null)
    {
        return Db::getInstance()->executeS('
            SELECT
                    p.`id_product`,
                    p.`reference`,
                    
                    pl.`name`
                        
            FROM
                    `'._DB_PREFIX_.'feature_product n`
            LEFT JOIN
                    `'._DB_PREFIX_.'product` p ON (p.`id_product`= n.`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').')
            WHERE
                    n.`id_product` = '.(int)$id_product
        );
    }
    
    /**
     * Get product getProdModel
     *
     * @param integer $id_lang Language id
     * @return array Product getProdModel
     */
    public function getProdModel($id_lang, $active = true, Context $context = null)
    {
        $sqlpm = 'SELECT
                p.*,
                        
                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_.'vr_feature_product` fp
        
   LEFT JOIN
                `'._DB_PREFIX_.'product` p ON p.`id_product` = fp.`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').')
                                        
  INNER JOIN
                `'._DB_PREFIX_.'feature_value_lang` fvl ON fvl.`id_feature_value` = fp.`id_feature_value`
  
  INNER JOIN                
                `'._DB_PREFIX_.'feature_value` fv ON fv.`id_feature_value` = fvl.`id_feature_value`
    
   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
                fp.`id_product` = '.(int)$this->id.($active ? ' AND product_shop.`active` = 1 AND product_shop.`visibility` != \'none\'' : '').'
         AND    
                fv.`id_feature` = 14
         AND
                fvl.`value` IN (
                                   SELECT
                                            fvl2.`value`
                                    FROM
                                            `'._DB_PREFIX_.'feature_value_lang` fvl2
                              INNER JOIN
                                            `'._DB_PREFIX_.'feature_product` fp2 ON fvl2.`id_feature_value` = fp2.`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);
    }
    
    public static function getProdModelById($feature_product_id)
    {
        return Db::getInstance()->getRow('SELECT `id_product`, `name` FROM `'._DB_PREFIX_.'product_lang` WHERE `id_product` = '.(int)$feature_product_id);
    }

Удалось разобраться ?
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
coonnect
Новичок
Сообщений: 43
Регистрация: 26-10-2015


06-09-2016 21:20
Цитата:( Алекс @ 13-03-2015 18:04 Смотреть сообщение )
Ваш php код содержит ошибки.
Перепишите или воспользуйтесь подобным:
Код:
public function getProdModel($id_lang, $id_feature_value, Context $context = null)
    {
        if (!$context)
            $context = Context::getContext();

        $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
        SELECT
            p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity, pl.`description`, pl.`description_short`,
            MAX(product_attribute_shop.id_product_attribute) id_product_attribute,
            pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`,
            pl.`name`, MAX(image_shop.`id_image`) id_image, il.`legend`, m.`name` AS manufacturer_name,
            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_.'product` p
        '.Shop::addSqlAssociation('product', 'p').'
        LEFT JOIN '._DB_PREFIX_.'feature_product fp ON (fp.id_product = p.id_product)
        LEFT JOIN '._DB_PREFIX_.'product_attribute pa ON (pa.id_product = p.id_product)
        '.Shop::addSqlAssociation('product_attribute', 'pa', false, 'product_attribute_shop.default_on=1').'
        '.Product::sqlStock('p', 0, false, $context->shop).'
        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_.'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 (m.`id_manufacturer` = p.`id_manufacturer`)
        WHERE product_shop.`active` = 1
      AND fp.`id_feature_value` = '.(int)$id_feature_value.'
        GROUP BY product_shop.id_product');
        
        if (!$result)
            return false;

        return Product::getProductsProperties((int)$id_lang, $result);
    }


Код:
'productmodel' => $this->product->getProdModel($this->context->language->id, 11),


Добрый день!
Пожалуйста, помогите с получением нужного параметра.
Требуется в строке AND fp.`id_feature_value` = '.(int)$id_feature_value.'
вместо '.(int)$id_feature_value.' получить ID значения характеристики с ID = 13.
Через phpmyadmin это значение мне удалось получить следующим запросом
select `id_feature_value` FROM `ps_feature_product` WHERE `id_feature` = 13 AND `id_product` = 3440

Пытался написать сам, вот что получилось, с ошибками.
('SELECT `id_feature_value` FROM `ps_feature_product` WHERE id_feature` = 13 AND `id_product` = '.(int)$this->id.)

Пожалуйста, помогите составить правильный запрос.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
coonnect
Новичок
Сообщений: 43
Регистрация: 26-10-2015


07-09-2016 21:13
Разобрался самостоятельно.
Делюсь решением:
строку
AND fp.`id_feature_value` = '.(int)$id_feature_value.'
заменить на
AND fp.`id_feature_value` IN (select `id_feature_value` FROM `'._DB_PREFIX_.'feature_product` WHERE `id_feature` = 13 AND `id_product` = '.(int)$this->id.')

а в значение id_feature вписать ID характеристики, по которой будет идти отбор
 
Репутация: 5 | Поставил: ruleoffdv
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос