Ответить Новая тема Новый опрос 
Всего: 2 1 2 >
 Продукты по id в модуле
CitizenDild0
Новичок
Сообщений: 74
Регистрация: 24-09-2010


10-01-2018 17:48
Хочу с помощью кастомного модуля выводить несколько продуктов по id в своем хуке на всех страницах.

я сделал поле в модуле для массива id через запятую., типа 1,4,6,7
$prods = Configuration::get('PRODS');

Не подскажите способ вывести лист продуктов по id в темплейт файле этого модуля?
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


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


10-01-2018 18:25
Цитата:( CitizenDild0 @ 10-01-2018 18:48 Смотреть сообщение )
Не подскажите способ вывести лист продуктов по id в темплейт файле этого модуля?


Код:
$products = Configuration::get('PRODS');
$res = Db::getInstance()->executeS('
    SELECT p.*, product_shop.*, pl.`description_short`, pl.`link_rewrite`, pl.`name`, pl.`available_now`, pl.`available_later`, MAX(image_shop.`id_image`) id_image, il.`legend`
    FROM `'._DB_PREFIX_.'product` p
    '.Shop::addSqlAssociation('product', 'p').'
    LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$this->context->language->id . 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 (image_shop.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$this->context->language->id.')
    WHERE
    p.`id_product` IN ('.implode(',', $products).')
    AND product_shop.`visibility` IN ("both", "catalog")
    AND product_shop.`active` = 1
    AND product_shop.`show_price` = 1
    GROUP BY p.id_product
');

if(!$res)
    return false;

$this->smarty->assign('products', Product::getProductsProperties($this->context->language->id, $res));
return $this->display(__FILE__, 'name_template.tpl');
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
CitizenDild0
Новичок
Сообщений: 74
Регистрация: 24-09-2010


10-01-2018 18:45
Спасибо! А для 1.7 это подойдет?
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


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


10-01-2018 19:02
Цитата:( CitizenDild0 @ 10-01-2018 19:45 Смотреть сообщение )
А для 1.7 это подойдет?

Не работаю с 1.7, но скорее всего должно сработать.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
CitizenDild0
Новичок
Сообщений: 74
Регистрация: 24-09-2010


10-01-2018 19:15
Понятно. Мне выдал ошибка насчет implode:

Warning: implode(): Invalid arguments passed

at ErrorHandler->handleError('2', 'implode(): Invalid arguments passed', '...module.php',
'177', array('params' => array('smarty' => object(Smarty_Dev_Template), 'cookie' => object(Cookie), 'cart' => object(Cart), 'altern' => '1'), 'tags_string' => 'dress,black,cotton', 'tags_array' => array('dress', 'black', 'cotton'), 'products' => '1,2,3,4,5,6,7,8'))

как будто он не array продуктов берет, а вообще все что есть в модуле.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


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


11-01-2018 17:06
Цитата:( CitizenDild0 @ 10-01-2018 20:15 Смотреть сообщение )
Понятно. Мне выдал ошибка насчет implode:

Моя ошибка, забыл о данных указанных вами выше:
Цитата:( CitizenDild0 @ 10-01-2018 18:48 Смотреть сообщение )
я сделал поле в модуле для массива id через запятую., типа 1,4,6,7

замените:
Код:
('.implode(',', $products).')

на:
Код:
('.$products.')
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
CitizenDild0
Новичок
Сообщений: 74
Регистрация: 24-09-2010


11-01-2018 22:39
да, спасибо, это помогло. Но все что связано с УРЛами не отображается: ссылка на продукт и урл картинки undefined. Остальное, название, описание норм. (ниже исходный код страницы)

Код:
<div class="thumbnail-container">
      <div class="product-image">
        
        <a href="" class="thumbnail product-thumbnail">
          <img
            src
= ""
            alt = "Faded Short Sleeves T-shirt"
            data-full-size-image-url = ""
          >
        </a>
        
      </div>
      <div class="product-description">
        
          <h3 class="h3 product-title" itemprop="name">Faded Short Sleeves T-shirt</h3>
        
        <div class="prod-short-desc" itemprop="description"><p>Faded short sleeves t-shirt with high neckline. Soft and stretchy material for a comfortable fit. Accessorize with a straw hat and you're ready for summer!</p></div>


 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


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


12-01-2018 19:51
Цитата:( CitizenDild0 @ 11-01-2018 23:39 Смотреть сообщение )
да, спасибо, это помогло. Но все что связано с УРЛами не отображается: ссылка на продукт и урл картинки undefined.

Код должен работать!
Простой пример ниже:
Код:
{if isset($products) && $products}
    {include file="$tpl_dir./product-list.tpl"}
{/if}

или так:
Код:
{if isset($products) && $products}
    {foreach from=$products item=product}
        <img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home_default')|escape:'html':'UTF-8'}" alt="{if !empty($product.legend)}{$product.legend|escape:'html':'UTF-8'}{else}{$product.name|escape:'html':'UTF-8'}{/if}" />

        <a href="{$product.link|escape:'html':'UTF-8'}" title="{$product.name|escape:'html':'UTF-8'}">{$product.name|escape:'html':'UTF-8'}</a>
    {/foreach}
{/if}
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
CitizenDild0
Новичок
Сообщений: 74
Регистрация: 24-09-2010


14-01-2018 22:47
Спасибо, так работает и ссылка и картинка.
Я просто попробовал сразу на 1.7, а там используется

Код:
<a href="{$product.url}" class="thumbnail product-thumbnail">
<img src = "{$product.cover.bySize.home_default.url}" />


Тем не менее, ваш код:
Код:
{$product.link|escape:'html':'UTF-8'}
{$link->getImageLink($product.link_rewrite, $product.id_image, 'cart_default')|escape:'html':'UTF-8'}


в 1.7 тоже работает.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
CitizenDild0
Новичок
Сообщений: 74
Регистрация: 24-09-2010


15-01-2018 22:46
Есть одна проблема, если ты находишься на странице продукта, который есть в этом списке, то картинка этого продукта не показывается, и обращение с такого
Код:
<img src="//localhost:3000/28-cart_default/printed-summer-dress.jpg">


меняется на такое
Код:
<img src="//localhost:3000/img/p/en-default-cart_default.jpg" alt="Printed Chiffon Dress">


 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос 
Всего: 2 1 2 >