Автор Тема: Выести дефолтные изображения в поиске  (Прочитано 85 раз)

16 Январь 2018, 11:00:26
  • Старожил
  • ****
  • Сообщений: 317
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день, стоит модуль TM search, prestashop 1.6.Он выводит картинке в поиске.parse: function(data) {
var mytab = [];
tmsearch_limit&&tmsearch_limit_num<data.length?showeditems=tmsearch_limit_num:showeditems=data.length;
for (var i = 0; i < showeditems; i++)
{
html = '';
if (tmsearch_image)
html += '<div class="pull-left"><img class="img-responsive" src="'+data[i].img_url+'" alt="'+data[i].name+'" /></div>';
html += '<div class="content">';
html += '<span class="product-name">'+data[i].category + ' > ' + data[i].name+'</span>';

if (tmsearch_reference && data[i].reference.length)
html += '<span class="reference">'+data[i].reference+'</span>';

if (tmsearch_manufacturer && data[i].manufacturer.length)
html += '<span class="manufacturer">'+data[i].manufacturer+'</span>';

if (tmsearch_description)
html +='<div class="description">'+ data[i].description_short +'</div>';

if (tmsearch_price)
html += '<span class="price product-price">'+data[i].price+'</span><span class="price old-price">'+data[i].price_old+'</span>';
html += '</div>';
mytab[mytab.length] = { data: data[i], value: html };
}
return mytab;
},
$result[$i]['img_url'] = $this->context->link->getImageLink($pr->link_rewrite[$id_lang], $img_url, ImageType::getFormatedName('small'));если картинка есть у товара, выводится нормально, но вот если нет выводит знак вопроса, хотя есть ru-default-small_default.jpg. В других местах дефолтные картинки нормально выводятся. Как сделать, чтобы вместо вопроса дефолтные выводились?
16 Январь 2018, 11:18:39
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1161
  • Репутация: +15/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Url у картинки какой получается? Код страницы посмотрите.
16 Январь 2018, 11:34:29
Ответ #2
  • Старожил
  • ****
  • Сообщений: 317
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
мой-сайт/-small_default/svetodiodnaya_lenta_arl0610_1052_2812b_analog_2811_smd5060_x60led1m_10w_dc5v_rgb_ip33.jpg это когда картинки нет, а так id изображения выводится
16 Январь 2018, 11:52:57
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 1106
  • Репутация: +5/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Этот модуль не должен показывать дефолтные изображения, если у товара не загружены картинки. Для этого и добавлено условие
if (tmsearch_image)Нужно проверить инициализацию переменной "tmsearch_image". Когда товара нет, должно быть присвоено false.
16 Январь 2018, 12:10:35
Ответ #4
  • Старожил
  • ****
  • Сообщений: 317
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Это в админке выбирается включить или выключить картинки в поиске, это есть
array(
'type' => 'switch',
'label' => $this->l('Display image in Ajax search'),
'name' => 'PS_SEARCH_AJAX_IMAGE',
'is_bool' => true,
'values' => array(
array(
'id' => 'active_on',
'value' => true,
'label' => $this->l('Enabled')
),
array(
'id' => 'active_off',
'value' => false,
'label' => $this->l('Disabled')
)
),
),
19 Январь 2018, 21:09:52
Ответ #5
  • Старожил
  • ****
  • Сообщений: 317
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Помучила я код, но пока только скрипт такой работает $(function() {
$('img').each(function() {
  $(this).attr('src',
    $(this).attr('src').replace(/-small_default\/([a-zA-Z0-9\_.]*)/, 'img/p/ru-default-small_default.jpg')
     
    )
  })
});
Но не могу найти, куда его вставить , чтоб работало, ведь результаты поиска динамически формируются.
Или может другое решение посоветуете, чтобы  ru-default-small_default.jpg выводился, или вообще картинки не выводились, там где их нет.
19 Январь 2018, 21:57:26
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 3286
  • Репутация: +77/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Перед определением url картинки добавь проверку
if ( $img_url )
    $result[$i]['img_url'] = $this->context->link->getImageLink($pr->link_rewrite[$id_lang], $img_url, ImageType::getFormatedName('small'));
19 Январь 2018, 23:56:21
Ответ #7
  • Старожил
  • ****
  • Сообщений: 317
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо, но чего-то ещё не хватает, undefined выдаёт
20 Январь 2018, 13:47:39
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 14781
  • Репутация: +14588/-5
  • Сообщество PrestaShop
    • Просмотр профиля
if ( $img_url ) {
        ....
}
else {
        $result[$i]['img_url'] = 'url картинки ru-default-small_default.jpg'
}
тогда не будет undefined
20 Январь 2018, 14:40:26
Ответ #9
  • Старожил
  • ****
  • Сообщений: 317
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо всё заработало, там скобок {} оказывается не надо было :)