[Решено] Картинки товаров в результате поиска в JoomShopping + RokAjaxSearch

  • 84 Ответов
  • 15792 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн MrJenika

Здравствуйте, поискал по форуму, не нашел решения :(
Поэтому Решение:
Речь пойдет о связке модуля поиска RokAjaxSearch и компонента магазина JoomShopping 3.11.4 + Joomla 2.5 + изображения товаров в результатах поиска.
Данный модуль может выводить результаты поиска с помощью AJAX технологии сразу под строкой поиска.

1) Вытащим картинку из базы данных joomshopping
Идем в папку \plugins\search\joomshopping\joomshopping.php находим та строку примерно 91
и видим запрос:
Код
$query = "SELECT prod.product_id AS slug, pr_cat.category_id AS catslug, prod.`".$lang->get('name')."` as title, 
CONCAT(prod.`".$lang->get('short_description')."`,' ',prod.`".$lang->get('description')."`) as text,
'2' AS browsernav,
prod.product_date_added AS created,
cat.`".$lang->get('name')."` AS section
FROM `#__jshopping_products` AS prod
LEFT JOIN `#__jshopping_products_to_categories` AS pr_cat ON pr_cat.product_id = prod.product_id
LEFT JOIN `#__jshopping_categories` AS cat ON pr_cat.category_id = cat.category_id
WHERE ($where) AND prod.product_publish = '1' AND cat.category_publish='1'
GROUP BY prod.product_id
ORDER BY $order
";

В него необходимо добавить вызов картинки, заменяем выше приведенный кусок кода на следующий
(была добавлена строка prod.product_thumb_image AS myimg,):

Код
$query = "SELECT prod.product_id AS slug, pr_cat.category_id AS catslug, prod.`".$lang->get('name')."` as title, 
CONCAT(prod.`".$lang->get('short_description')."`,' ',prod.`".$lang->get('description')."`) as text,
'2' AS browsernav,
prod.product_date_added AS created,
prod.product_thumb_image AS myimg,
cat.`".$lang->get('name')."` AS section
FROM `#__jshopping_products` AS prod
LEFT JOIN `#__jshopping_products_to_categories` AS pr_cat ON pr_cat.product_id = prod.product_id
LEFT JOIN `#__jshopping_categories` AS cat ON pr_cat.category_id = cat.category_id
WHERE ($where) AND prod.product_publish = '1' AND cat.category_publish='1'
GROUP BY prod.product_id
ORDER BY $order
";

В этом файле больше никаких изменений не требуется.

2) Файл \components\com_search\views\search\tmpl\default_results.php
У меня данный файл перенесен в шаблон и имеет путь : \templates\имя_шаблона\html\com_search\search\default_resuts.php
В данном файле необходимо вставить вывод картинки, скорей всего перед текстом.

Строка 31:
Код
<?php if ($result->myimg) : 
$myimg = "<img src=/components/com_jshopping/files/img_products/$result->myimg class='s-img'/>" ;
elseif (!$result->myimg) :
$myimg = "<img src='/components/com_jshopping/files/img_products/noimage.gif' class='s-img'/>" ;
 endif; ?>
<dd class="result-text">
<?php echo $myimg; echo $result->text; ?>
</dd>

ВАЖНО! Вывод картинки не заключать ни в какие спаны, дивы и прочие блоки, работать не будет.
Кому интересно почему, может и расскажу, как-нибудь...

Первые несколько строк это проверка есть ли картинка для данного товара ,если нет, то вывести ту, что по умолчанию. Можно было бы данную проверку вставить прямо в блок result_text, но что-то оно не заработало.
на этом в принципе и все, стили и прочее каждый поправляет для себя сам. И привожу картинку с результатом:


*

Онлайн dmitry_stas

Кому интересно почему, может и расскажу, как-нибудь...

очень интересно. расскажите пожалуйста. а то у меня работает, а не пойму почему  ^-^
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Оффлайн MrJenika

очень интересно. расскажите пожалуйста. а то у меня работает, а не пойму почему  ^-^

У меня это не заработало без внесения изменений в  файлик rokajaxsearch.js так как данные в этом файлике брались из блоков в default_results

*

Оффлайн NepaGoda

Обалдеть..
А можно ли еще как нибудь задать размер фото именно в выдаче результата поиска..

*

Оффлайн MrJenika

Обалдеть..
А можно ли еще как нибудь задать размер фото именно в выдаче результата поиска..

Можно, на примере был задан класс самому фото class='s-img' и уже прописываете в стилях:
Код
.s-img{
width: 150px;
height: 100px;
}

*

Оффлайн antoxa7

Спасибо, работает.
Вопрос: если отключаю показ описания (Show Description) в результатах поиска, изображения тоже пропадают. Как быть?
И еще как добавить расширенный поиск по характеристикам и отображение цены в результатах поиска?

« Последнее редактирование: 21.10.2012, 20:09:39 от antoxa7 »

*

Оффлайн MrJenika

Спасибо, работает.
Вопрос: если отключаю показ описания (Show Description) в результатах поиска, изображения тоже пропадают. Как быть?
И еще как добавить расширенный поиск по характеристикам и отображение цены в результатах поиска?

Можно вынести картинки из блока текста, если это не сработает, то в файле rockajaxsearch.js надо будет дописать вывод данных из блока с картинкой, если первый вариант не сработает. напишите, я  попробую как-то объяснить что куда писать, либо файлик прикреплю с изменениями.

А насчет цены, там по такому же принципу, в запрос надо добавить и поле цены (product_price) и так же вывести в результатах поиска, делается всё по аналогии с изображениями, с атрибутами и характеристиками помочь не смогу.

*

Оффлайн NepaGoda

Как сделать чтобы текст обтекал картинку.. как у вас сбоку..

*

Оффлайн MrJenika

Как сделать чтобы текст обтекал картинку.. как у вас сбоку..

Стилями, у меня это как-то так сделано :
Код
.s-img {
float: left;
margin: 2px 10px 10px 0;
}

Странно, а я установил RokAjaxSearch и в результатах поиска отсутствуют товары из ЖШ, чаднт?

*

Оффлайн MrJenika

плагин поиска для JoomShopping поставили и опубликовали?


Отлично, всё работает!
А можете подсказать, как и где задать класс самому фото class='s-img' ??

*

Оффлайн MrJenika

Отлично, всё работает!
А можете подсказать, как и где задать класс самому фото class='s-img' ??

Полагаю что в templates/имя_шаблона/css/template.css

Вот нашел минус: при попытке найти что-то в материалах вместе с найденным вылазит NO IMAGE

*

Оффлайн MrJenika

Вот нашел минус: при попытке найти что-то в материалах вместе с найденным вылазит NO IMAGE

Действительно, мне важен только поиск по товарам. вот и не обратил внимания, можете вот так:

Код
<?php if ($result->myimg) : 
$myimg = "<img src=/components/com_jshopping/files/img_products/$result->myimg class='s-img'/>" ;
elseif (!$result->myimg) :
$myimg = "" ;
 endif; ?>

Но тогда если нет картинки и в товаре, то ничего не выведется.

Не могу понять, откуда берётся <br> между названием товара и картинкой?  :'(
А так же после дескрипшн и перед "Читать далее"

*

Оффлайн MrJenika

Не могу понять, откуда берётся <br> между названием товара и картинкой?  :'(
А так же после description и перед "Читать далее"
В файле \modules\mod_rokajaxsearch\js\rokajaxsearch.js ищите br, правда если просто удалить, то поиск прекращает работать, попробуйте заменить на другой элемент.

Спасибо, вставил р и получилось компактнее)))

*

Оффлайн denjer

Можно вынести картинки из блока текста, если это не сработает, то в файле rockajaxsearch.js надо будет дописать вывод данных из блока с картинкой, если первый вариант не сработает. напишите, я  попробую как-то объяснить что куда писать, либо файлик прикреплю с изменениями.

А насчет цены, там по такому же принципу, в запрос надо добавить и поле цены (product_price) и так же вывести в результатах поиска, делается всё по аналогии с изображениями, с атрибутами и характеристиками помочь не смогу.

Уважаемый, MrJenika, так как все таки вывести картинку без описания, если убирать вывод описания - картинка тоже пропадает. Первый вариант не помог, что нужно прописать в файлике rockajaxsearch.js?
И насчет вывода цены тоже не помешало бы инструкция. Заранее огромное спасибо!

*

Оффлайн MrJenika

Уважаемый, MrJenika, так как все таки вывести картинку без описания, если убирать вывод описания - картинка тоже пропадает. Первый вариант не помог, что нужно прописать в файлике rockajaxsearch.js?
И насчет вывода цены тоже не помешало бы инструкция. Заранее огромное спасибо!


Ну если вам надо ТОЛЬКО картинки, совсем без описания (даже через поиск с помощью стандартной формы), то можно просто в файлике  \components\com_search\views\search\tmpl\default_results.php убрать вывод $result->text
Если же убрать описание только в rockajaxsearch, то это малость сложнее будет. Как будет время, погляжу что там и как, но пока могу посоветовать через стили спрятать текст, там вроде как-то так:

Код
.roksearch_result_wrapper5 span{
text-indent: -9999px;
}

Если  исчезает и название товара, надо будет добавить вроде такое:

Код
.roksearch_result_wrapper5 a{
text-indent: 0;
}

С ценой можно сделать по тому же принципу что и с картинками.

*

Оффлайн Emotion

Здравствуйте! А для версии JoomShopping 2.7 не могли бы подсказать что именно прописать в файле шаблона вывода картинки.
Запрос к базе подправил так как есть а вот где именно прописать вывод картинки? прописал в  com_search но что то оно не подхватывает.
Помнится что шла речь о каких то правках в файле rokajaxsearch.js ?

*

Оффлайн MrJenika

в файлик rokajaxsearch.js лучше не лезть, там сам черт ногу сломит. Посмотрите из какого id или класса берется текст в результатах AJAX поиска и в этот же блок вставить вывод картинки. сперва без классов или сторонних блоков и проверить выводится ли код картинки в простом поиске и тогда уже можно искать что-то в AJAX поиске.
Выше писали, что правка не обязательна, всё и так должно работать.

У меня это не заработало без внесения изменений в  файлик rokajaxsearch.js так как данные в этом файлике брались из блоков в default_results
MrJenika, а что конкретно было внесено в файлик rokajaxsearch.js, потому как у меня также не отображаются картинки, хотя сделал все четко как написано в теме.

*

Оффлайн MrJenika

Честно говоря, уже   точно и не помню, попытаюсь восстановить события по закоментированному коду.
Итак файлик rokajaxsearch.js
Он ужат, пришлось поиграться чтобы понять что где, поэтому точно строку сказать не могу.
Ниже привожу часть кода, то что закоментированно, это уже рабочие изменения, то что до комментариев и после. это ориентир чтобы найти строку
Код
var J=new Element("span").set("html",P).inject(K,"after"),Q;

/******* MY ***********//*
var DD=M.getNext(".s-img");
TT=DD.innerHTML;
 var jj=new Element("span",{"class":"s-img"}).set("html",TT).inject(K,"after"),Q;
/**********************/

if(this.options.showcategory){var L=M.getNext(".result-category")||H[1];

Поясню что это означает.
var DD=M.getNext(".s-img"); - это получение данных из блока s-img
s-img - блок в файлике \components\com_search\views\search\tmpl\default_results.php в котором я вывел картинку,
как то примерно так, за точность не ручаюсь :

Код
<dic class="s-img"> <img src="/components/com_jshopping/files/img_products/$result->myimg"></div>

var jj=new Element("span",{"class":"s-img"}).set("html",TT).inject(K,"after"),Q; - вставляет новый span с тем, что вытащили из блока s-img

Вроде все, остальное описано в первом посте.
Не забудьте расскоментировать код.
Эти все действия производились для Joomla 2.5

MrJenika, сделал все как написано в посте, картинки так не появились. Но в консоле фаербага вылазит следующая ошибка:
NetworkError: 404 Not Found - ..../components/com_jshopping/files/img_products/.... . Причем путь к картинке правильный и сами картинки есть, однако он пишет что их нет.  :'(

*

Оффлайн MrJenika

MrJenika, сделал все как написано в посте, картинки так не появились. Но в консоле фаербага вылазит следующая ошибка:
NetworkError: 404 Not Found - ..../components/com_jshopping/files/img_products/.... . Причем путь к картинке правильный и сами картинки есть, однако он пишет что их нет.  :'(

Возможно стоит в начале пути вставить домен сайта, хотя тоже не рекомендую, ну или пару точек перед слешем ../

Вообщем, действительно была проблема с неправильным src картинки, проблемка решилась добавлением в начале путь  $this->baseurl.  MrJenika, спасибо  *DRINK*.

*

Оффлайн NepaGoda

Может кто напишет полный код страницы.. где отображаются все результаты поиска..
Настраиваю страницу как нужно.. и поиск перестает работать..

Ситуация сейчас такая:



*

Оффлайн MrJenika

ошибка в вёрстке, примените свойство clear:both для блока в котором содержится заголовок, картинка и текст результата.