Доработка стандартного поиска Joomla под VirtueMart

  • 38 Ответов
  • 16647 Просмотров

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

*

Оффлайн mike_jag

Здравствуйте.
В стандартном поиске Joomla с помощью галочек можно задать область поиска по всему сайту:
Искать только по: 1)Материалы 2)Категории 3)Разделы
Как можно добавить отдельную опцию поиска по товарам в VirtueMart, чтобы стало:
Искать только по: 1)Материалы 2)Категории 3)Разделы 4)Товары
?

*

Оффлайн Gruz

  • *
  • 1276
  • [+]166 / [-]3
  • gruz@jabber.org | gruz.org.ua
    • Просмотр профиля
    • КОМУ ВНИЗ
plugins/search/vmxsearch.plugin.php

Вот изменённый файл, правки обозначены ##my
По-моему его достаточно и более для этого не правил ничего.
Результат тут видно: =vmxsearch#content]http://www.nasos4you.com.ua/component/search/?searchword=grundfos&ordering=newest&searchphrase=all&areas[0]=vmxsearch#content
<?php

/**

 * $Id: $
 * VirtueMart Extended Search Bot (based on work from Soeren Eberhardt & Pietro Gallo)
 * @version 1.5

 *
 * @copyright (C) Copyright 2007 by Alejandro Kurczyn
 * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL

14/Feb/2007 A.Kurczyn 1.1 Fixed parent_filter var handling
15/Feb/2007 A.Kurczyn 1.2 Fixed review_from var handling
18/Feb/2007 A.Kurczyn 1.3 Added manufacturer,category,thumbnail support
29/Oct/2007 A.Kurczyn 1.5 MySQL 5 compatible, added keyword density
 */



/** ensure this file is being included by a parent file */

defined'_JEXEC' ) or die( 'Direct Access to this location is not allowed.' ) ;



// Get VM vars




jimport'joomla.plugin' ) ;

include_once (
dirname__FILE__ ). "/../../components/com_virtuemart/virtuemart_parser.php") ;



/** Register search function inside Joomla's API */

/*##my17032011005132 {

It was:

$mainframe->registerEvent( 'onSearch', 'vmExtendedSearch' ) ;

It became:*/

$mainframe->registerEvent'onSearch''plgSearchvmxsearch' );

$mainframe->registerEvent'onSearchAreas''plgSearchvmxsearchAreas' );



JPlugin::loadLanguage'plg_search_vmxsearch' );



//Define a function to return an array of search areas. Replace 'nameofplugin' with the name of your plugin.

function &plgSearchvmxsearchAreas()

{

        static 
$areas = array(

                
'vmxsearch' => 'Vmxsearch'

        
);

        return 
$areas;

}

function 
plgSearchvmxsearch$text$phrase=''$ordering=''$areas=null ) {

return vmExtendedSearch ($text$phrase$ordering$areas);

}





/*##my17032011005132 } */





/**
 * Search method
 *
 * The sql must return the following fields that are used in a common display
 * routine: href, title, section, created, text, browsernav
 */

function vmExtendedSearch$text$phrase ''$ordering ''$areas null ) {

$database JFactory::getDBO() ;



$text trim$text ) ;

if( $text == '' ) {

return array( ) ;

}





//If the array is not correct, return it:

        
if (is_array$areas )) {

                if (!
array_intersect$areasarray_keysplgSearchvmxsearchAreas() ) )) {

                        return array();

                }

        }





// Get mambot parameters
// check if param query has previously been processed
if( ! isset( $GLOBALS['_search_mambot_params']['vmxsearch'] ) ) {

// load mambot params info
$query "SELECT params FROM #__plugins WHERE element = 'vmxsearch.plugin' AND folder = 'search'" ;

$database->setQuery$query ) ;

$mambot $database->loadObject() ;

// save query to class variable
$GLOBALS['_search_mambot_params']['vmxsearch'] = $mambot ;

}

// pull query data from class variable
$mambot $GLOBALS['_search_mambot_params']['vmxsearch'] ;

$botParams = new vmParameters$mambot->params ) ;



$fields = array( ) ;

$thumbnail_flag $botParams->def'thumbnail_flag') ;

$thumbnailx $botParams->def'thumbnailx'40 ) ;

$thumbnaily $botParams->def'thumbnaily'40 ) ;

if( $botParams->def'name_flag') == )

$fields[] = 'p.product_name' ;

if( $botParams->def'sku_flag') == )

$fields[] = 'p.product_sku' ;

if( $botParams->def'desc_flag') == )

$fields[] = 'p.product_desc' ;

if( $botParams->def'sdesc_flag') == )

$fields[] = 'p.product_s_desc' ;

if( $botParams->def'url_flag') == )

$fields[] = 'p.product_url' ;

if( $botParams->def'review_flag') == )

$fields[] = 'r.comment' ;

if( $botParams->def'manufacturer_flag') == )

$fields[] = 'm.mf_name' ;

if( $botParams->def'category_flag') == )

$fields[] = 'c.category_name' ;



$oos_where = (PSHOP_SHOW_OUT_OF_STOCK_PRODUCTS != 1)? 'and product_in_stock > 0' '' ;

switch( $botParams->def'parent_filter''both' )) {

case 'parent' :

$parent_where "AND (p.product_parent_id='' OR p.product_parent_id='0')" ;

break ;

case 'child' :

$parent_where "AND (p.product_parent_id > '0')" ;

break ;

case 'both' :

$parent_where '' ;

break ;

}



// Build search logic
$wheres = array( ) ;

switch( $phrase) {

case 'exact' :

$wheres2 = array( ) ;

foreach( $fields as $field ) {

$wheres2[] = "$field LIKE '%".$database->getEscaped($text)."%'" ;

}

$where '(' implode') OR ('$wheres2 ). ')' ;

break ;

case 'all' :

case 'any' :

default :

$words explode' '$text ) ;

$wheres = array( ) ;

foreach( $words as $word ) {

$wheres2 = array( ) ;

foreach( $fields as $field ) {

$wheres2[] = "$field LIKE '%".$database->getEscaped($word)."%'" ;

}

$wheres[] = implode' OR '$wheres2 ) ;

}

$where '(' implode( ($phrase == 'all' ') AND (' ') OR ('), $wheres ). ')' ;

break ;

}



switch( $ordering) {

case 'newest' :

default :

$order 'p.cdate DESC' ;

break ;

case 'oldest' :

$order 'p.cdate ASC' ;

break ;

case 'popular' :

$order 'p.product_name ASC' ;

break ;

case 'alpha' :

$order 'p.product_name ASC' ;

break ;

case 'category' :

$order 'p.category_name ASC' ;

break ;

}



if( $botParams->def'density_flag') == ) {

$whole_text ", CONCAT_WS(' ',LOWER(" implode'), LOWER('$fields ). ')) AS whole_text ' ;

} else {

$whole_text '' ;

}



//Get VirtueMart module ID

$database->setQuery" SELECT id, name FROM  `#__menu` WHERE link LIKE '%com_virtuemart%' AND published=1 AND access=0" ) ;

$Item $database->loadObject() ;

$ItemName = ! empty( $Item->name )? $Item->name "Shop" ;

$Itemid = ! empty( $Item->id )? $Item->id "1" ;



$query "SELECT DISTINCT p.product_id, p.product_name as title,

FROM_UNIXTIME( p.cdate, '%Y-%m-%d %H:%i:%s'  ) AS created,

p.product_s_desc AS text,

CONCAT('
$ItemName/',c.category_name) as section,

CONCAT('index.php?option=com_virtuemart&page=shop.product_details&flypage=',IFNULL(c.category_flypage,'" 
FLYPAGE "'),'&category_id=',IFNULL(c.category_id,''),'&product_id=',p.product_id,'&Itemid='," $Itemid ") as href,

'2' as browsernav

$whole_text

FROM #__vm_product p

LEFT JOIN #__vm_product_reviews r ON (r.product_id = p.product_id)

LEFT JOIN #__vm_product_mf_xref mx ON (mx.product_id = p.product_id)

LEFT JOIN #__vm_manufacturer m ON (m.manufacturer_id = mx.manufacturer_id),

#__vm_product_category_xref cx, #__vm_category c

WHERE (
$where)" "\n AND cx.product_id = p.product_id

AND cx.category_id = c.category_id 
$parent_where

AND c.category_publish='Y'

AND p.product_publish='Y'

$oos_where

ORDER BY 
$order;

//echo "\n-QUERY:\n$query\n";
$database->setQuery$query ) ;



$row $database->loadObjectList() ;



if( ! empty( $row ) && $botParams->def'density_flag') == ) {

$txt strtolower$text ) ;

if( $phrase != 'exact' )

$txt_array explode' '$txt ) ; else

$txt_array[0] = $txt ;

$i ;

foreach( $row as $result ) {

$count ;

foreach( $txt_array as $txt ) {

$count substr_count$result->whole_text$txt ) + $count ;

}

$row[$i]->count $count ;

$i ++ ;

}

pg_keydenseSort$row'count''DESC' ) ;

}

return $row ;



}



function 
pg_keydenseSort( &$data$key$order ) {

for( $i count$data ) - $i >= $i -- ) {

$swapped false ;

for( $j $j $i $j ++ ) {

if( $order == 'ASC' ) {

if( $data[$j]->$key $data[$j 1]->$key ) {

$tmp $data[$j] ;

$data[$j] = $data[$j 1] ;

$data[$j 1] = $tmp ;

$swapped true ;

}

} else {

if( $data[$j]->$key $data[$j 1]->$key ) {

$tmp $data[$j] ;

$data[$j] = $data[$j 1] ;

$data[$j 1] = $tmp ;

$swapped true ;

}

}



}

if( ! $swapped )

return ;

}

}

?>




И сюда language/ru-RU положить файл языка ru-RU.plg_search_vmxsearch.ini с содержанием
VMXSEARCH=Товары

[вложение удалено Администратором]
Життя має дві форми - горіння і гниття!
-
Со мной на "ты"
-
Вам лень развёрнуто формулировать вопрос? Нам лень отвечать.
Правильный вопрос:
- Версии J! и проблемного расширения?
- Что хотел?
- Что пробовал?
- Что получилось и что не получилось?
- Какие были ошибки?

*

Оффлайн mike_jag

Благодарю за решение.
Ваши изменения частично решают проблему в лучшую сторону.
Но посетителям сайта в результатах поиска важно видеть цены на товар.
Я, к сожалению, не знаток РНР, но в данной Вами ссылке на сайт, как мне кажется, не хватает цен. И дата там - вещь совершенно лишняя.



*

Оффлайн Gruz

  • *
  • 1276
  • [+]166 / [-]3
  • gruz@jabber.org | gruz.org.ua
    • Просмотр профиля
    • КОМУ ВНИЗ
Надо модифицировать запрос к БД и его результаты немного перелопатить, чтобы в $row возвращалась нужная информация, удобоваримая для поиска от Joomla. Относительно несложно. Надо поэкспериментировать.
С ценами проблема - и у товара может быть много, разные там групы, скидки и т.д. Тут геморройно, какую именно выводить.

Возможно есть способ использовать шаблон отображения категории, как родном поиске от VM, но надо пробовать и экспериментировать.
Життя має дві форми - горіння і гниття!
-
Со мной на "ты"
-
Вам лень развёрнуто формулировать вопрос? Нам лень отвечать.
Правильный вопрос:
- Версии J! и проблемного расширения?
- Что хотел?
- Что пробовал?
- Что получилось и что не получилось?
- Какие были ошибки?

*

Оффлайн mike_jag

Я тут подумал...
В принципе, для интернет-магазина поиск по материалам (статьям) не так уж, чтоб очень нужен (особенно покупателям). На первом месте, как ни крути,  будут товары.
Но статьи - весомая часть для SEO, и когда их очень много, найти нужную без поиска весьма проблемно. Как вариант можно использовать два модуля поиска: для VM и стандартный от Joomla. Стандартный включать только на время работы с сайтом и поместить его в футер.
Для VM нашёл дармовой модуль поиска товаров. Мне понравился. Можно настроить без знаний PHP (чисто логически) под свои нужды.
http://www.inowweb.com/downloads/joomla-modules/26-advanced-search-for-virtuemart-module

*

Оффлайн Gruz

  • *
  • 1276
  • [+]166 / [-]3
  • gruz@jabber.org | gruz.org.ua
    • Просмотр профиля
    • КОМУ ВНИЗ
Вообще-то в комплект поставки VM входит дармовой модуль поиска
Життя має дві форми - горіння і гниття!
-
Со мной на "ты"
-
Вам лень развёрнуто формулировать вопрос? Нам лень отвечать.
Правильный вопрос:
- Версии J! и проблемного расширения?
- Что хотел?
- Что пробовал?
- Что получилось и что не получилось?
- Какие были ошибки?

*

Оффлайн mike_jag

Входит.
Но этот более расширенный.

*

Оффлайн ASkidkin

кто подскажет как в стандартный поиск всунуть картинки товаров на страницу результатов?

*

Оффлайн Gruz

  • *
  • 1276
  • [+]166 / [-]3
  • gruz@jabber.org | gruz.org.ua
    • Просмотр профиля
    • КОМУ ВНИЗ
Попробовал. Поправиол плагин поиска ВМ, чтобы включал изображение. Фиг там. Joomla оберазет теги на этапе вывода результатов поиска.
Как вариант писать линк на изображение в текст и потом выгребать его ява-скриптом да делать правильный тег. Но это уже слишком много геморроться.

ВОт этот код, который ничего не решает, как оказалось. Изменения обзначены ##my.
plugins/search/vmxsearch.plugin.php
<?php

/**

 * $Id: $
 * VirtueMart Extended Search Bot (based on work from Soeren Eberhardt & Pietro Gallo)
 * @version 1.5

 *
 * @copyright (C) Copyright 2007 by Alejandro Kurczyn
 * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL

14/Feb/2007 A.Kurczyn 1.1 Fixed parent_filter var handling
15/Feb/2007 A.Kurczyn 1.2 Fixed review_from var handling
18/Feb/2007 A.Kurczyn 1.3 Added manufacturer,category,thumbnail support
29/Oct/2007 A.Kurczyn 1.5 MySQL 5 compatible, added keyword density
 */



/** ensure this file is being included by a parent file */

defined'_JEXEC' ) or die( 'Direct Access to this location is not allowed.' ) ;



// Get VM vars




jimport'joomla.plugin' ) ;

include_once (
dirname__FILE__ ). "/../../components/com_virtuemart/virtuemart_parser.php") ;



/** Register search function inside Joomla's API */

$mainframe->registerEvent'onSearch''vmExtendedSearch' ) ;



/**
 * Search method
 *
 * The sql must return the following fields that are used in a common display
 * routine: href, title, section, created, text, browsernav
 */

function vmExtendedSearch$text$phrase ''$ordering '' ) {

$database JFactory::getDBO() ;



$text trim$text ) ;

if( $text == '' ) {

return array( ) ;

}



// Get mambot parameters
// check if param query has previously been processed
if( ! isset( $GLOBALS['_search_mambot_params']['vmxsearch'] ) ) {

// load mambot params info
$query "SELECT params FROM #__plugins WHERE element = 'vmxsearch.plugin' AND folder = 'search'" ;

$database->setQuery$query ) ;

$mambot $database->loadObject() ;

// save query to class variable
$GLOBALS['_search_mambot_params']['vmxsearch'] = $mambot ;

}

// pull query data from class variable
$mambot $GLOBALS['_search_mambot_params']['vmxsearch'] ;

$botParams = new vmParameters$mambot->params ) ;



$fields = array( ) ;

$thumbnail_flag $botParams->def'thumbnail_flag') ;

$thumbnailx $botParams->def'thumbnailx'40 ) ;

$thumbnaily $botParams->def'thumbnaily'40 ) ;

if( $botParams->def'name_flag') == )

$fields[] = 'p.product_name' ;

if( $botParams->def'sku_flag') == )

$fields[] = 'p.product_sku' ;

if( $botParams->def'desc_flag') == )

$fields[] = 'p.product_desc' ;

if( $botParams->def'sdesc_flag') == )

$fields[] = 'p.product_s_desc' ;

if( $botParams->def'url_flag') == )

$fields[] = 'p.product_url' ;

if( $botParams->def'review_flag') == )

$fields[] = 'r.comment' ;

if( $botParams->def'manufacturer_flag') == )

$fields[] = 'm.mf_name' ;

if( $botParams->def'category_flag') == )

$fields[] = 'c.category_name' ;



$oos_where = (PSHOP_SHOW_OUT_OF_STOCK_PRODUCTS != 1)? 'and product_in_stock > 0' '' ;

switch( $botParams->def'parent_filter''both' )) {

case 'parent' :

$parent_where "AND (p.product_parent_id='' OR p.product_parent_id='0')" ;

break ;

case 'child' :

$parent_where "AND (p.product_parent_id > '0')" ;

break ;

case 'both' :

$parent_where '' ;

break ;

}



// Build search logic
$wheres = array( ) ;

switch( $phrase) {

case 'exact' :

$wheres2 = array( ) ;

foreach( $fields as $field ) {

$wheres2[] = "$field LIKE '%".$database->getEscaped($text)."%'" ;

}

$where '(' implode') OR ('$wheres2 ). ')' ;

break ;

case 'all' :

case 'any' :

default :

$words explode' '$text ) ;

$wheres = array( ) ;

foreach( $words as $word ) {

$wheres2 = array( ) ;

foreach( $fields as $field ) {

$wheres2[] = "$field LIKE '%".$database->getEscaped($word)."%'" ;

}

$wheres[] = implode' OR '$wheres2 ) ;

}

$where '(' implode( ($phrase == 'all' ') AND (' ') OR ('), $wheres ). ')' ;

break ;

}



switch( $ordering) {

case 'newest' :

default :

$order 'p.cdate DESC' ;

break ;

case 'oldest' :

$order 'p.cdate ASC' ;

break ;

case 'popular' :

$order 'p.product_name ASC' ;

break ;

case 'alpha' :

$order 'p.product_name ASC' ;

break ;

case 'category' :

$order 'p.category_name ASC' ;

break ;

}



if( $botParams->def'density_flag') == ) {

$whole_text ", CONCAT_WS(' ',LOWER(" implode'), LOWER('$fields ). ')) AS whole_text ' ;

} else {

$whole_text '' ;

}



//Get VirtueMart module ID

$database->setQuery" SELECT id, name FROM  `#__menu` WHERE link LIKE '%com_virtuemart%' AND published=1 AND access=0" ) ;

$Item $database->loadObject() ;

$ItemName = ! empty( $Item->name )? $Item->name "Shop" ;

$Itemid = ! empty( $Item->id )? $Item->id "1" ;



/*##my20110604171754 { Add field to search

$query = "SELECT DISTINCT p.product_id, p.product_name as title,

It was:

It became:*/

$query "SELECT DISTINCT p.product_id, p.product_name as title, p.product_full_image,

/*##my20110604171754 } */

FROM_UNIXTIME( p.cdate, '%Y-%m-%d %H:%i:%s'  ) AS created,

p.product_s_desc AS text,

CONCAT('
$ItemName/',c.category_name) as section,

CONCAT('index.php?option=com_virtuemart&page=shop.product_details&flypage=',IFNULL(c.category_flypage,'" 
FLYPAGE "'),'&category_id=',IFNULL(c.category_id,''),'&product_id=',p.product_id,'&Itemid='," $Itemid ") as href,

'2' as browsernav

$whole_text

FROM #__vm_product p

LEFT JOIN #__vm_product_reviews r ON (r.product_id = p.product_id)

LEFT JOIN #__vm_product_mf_xref mx ON (mx.product_id = p.product_id)

LEFT JOIN #__vm_manufacturer m ON (m.manufacturer_id = mx.manufacturer_id),

#__vm_product_category_xref cx, #__vm_category c

WHERE (
$where)" "\n AND cx.product_id = p.product_id

AND cx.category_id = c.category_id 
$parent_where

AND c.category_publish='Y'

AND p.product_publish='Y'

$oos_where

ORDER BY 
$order;

//echo "\n-QUERY:\n$query\n";
$database->setQuery$query ) ;



$row $database->loadObjectList() ;



if( ! empty( $row ) && $botParams->def'density_flag') == ) {

$txt strtolower$text ) ;

if( $phrase != 'exact' )

$txt_array explode' '$txt ) ; else

$txt_array[0] = $txt ;

$i ;

/*##my20110604172804 {

It was:

foreach( $row as $result ) {

It became:*/

foreach( $row as $key=>$result ) {

/*##my20110604172804 } */

$count ;

foreach( $txt_array as $txt ) {

$count substr_count$result->whole_text$txt ) + $count ;

}

$row[$i]->count $count ;

$i ++ ;

/*##my20110604172941 { Added

It was:

It became:*/

$path JPATH_ROOT.DS.'components'.DS.'com_virtuemart'.DS.'shop_image'.DS.'product'.DS.$result->product_full_image;

if (file_exists($path)) {

$row[$key]->text '<img src="'.JURI::root().'components/com_virtuemart/shop_image/product/'.$result->product_full_image.'">'.'<b>'.$result->text.'</b>';

}



/*##my20110604172941 } */



}

pg_keydenseSort$row'count''DESC' ) ;

}

return $row ;



}



function 
pg_keydenseSort( &$data$key$order ) {

for( $i count$data ) - $i >= $i -- ) {

$swapped false ;

for( $j $j $i $j ++ ) {

if( $order == 'ASC' ) {

if( $data[$j]->$key $data[$j 1]->$key ) {

$tmp $data[$j] ;

$data[$j] = $data[$j 1] ;

$data[$j 1] = $tmp ;

$swapped true ;

}

} else {

if( $data[$j]->$key $data[$j 1]->$key ) {

$tmp $data[$j] ;

$data[$j] = $data[$j 1] ;

$data[$j 1] = $tmp ;

$swapped true ;

}

}



}

if( ! $swapped )

return ;

}

}

?>




Забирает большую картинку. Уменьшить можно автоматически, но я так делаю, родные не использую. Но это в данном случае всё ранов не имеет смысла.
« Последнее редактирование: 04.06.2011, 21:18:38 от Gruz »
Життя має дві форми - горіння і гниття!
-
Со мной на "ты"
-
Вам лень развёрнуто формулировать вопрос? Нам лень отвечать.
Правильный вопрос:
- Версии J! и проблемного расширения?
- Что хотел?
- Что пробовал?
- Что получилось и что не получилось?
- Какие были ошибки?

*

mzavalny

Огромное спасибо за доработанный плагин :D

*

Оффлайн tigra-uki

  • ****
  • 374
  • [+]10 / [-]0
  • Joom'лiстка
    • Просмотр профиля
Gruz, спасибо!
Все получилось, почти!

Один нюанс:
там где д.б.: 1)Материалы 2)Категории 3)Разделы 4)Товары
у меня вместо товаров написано  "Catalogue" - понимаю, что ответ прост, но не нашла решения.
Может подскажите? :)
Слишком сконцентрированное внимание необходимо разбавлять действием.

*

Оффлайн Gruz

  • *
  • 1276
  • [+]166 / [-]3
  • gruz@jabber.org | gruz.org.ua
    • Просмотр профиля
    • КОМУ ВНИЗ
Попробуй по аналогии

И сюда language/ru-RU положить файл языка ru-RU.plg_search_vmxsearch.ini с содержанием
VMXSEARCH=Товары
:

В language/ru-RU/ru-RU.plg_search_vmxsearch.ini добавить строчку
CATALOGUE=Товары
Життя має дві форми - горіння і гниття!
-
Со мной на "ты"
-
Вам лень развёрнуто формулировать вопрос? Нам лень отвечать.
Правильный вопрос:
- Версии J! и проблемного расширения?
- Что хотел?
- Что пробовал?
- Что получилось и что не получилось?
- Какие были ошибки?

*

Оффлайн tigra-uki

  • ****
  • 374
  • [+]10 / [-]0
  • Joom'лiстка
    • Просмотр профиля
Gruz, такое добавляла, увы не поменялось... :(

Но твой совет натолкнул на другую мысль -
Добавила CATALOGUE=Товары  в ru-RU.com_search.ini
и все заработало! Спасибо! :)
« Последнее редактирование: 25.07.2011, 13:23:44 от tigra-uki »
Слишком сконцентрированное внимание необходимо разбавлять действием.

*

Оффлайн Gruz

  • *
  • 1276
  • [+]166 / [-]3
  • gruz@jabber.org | gruz.org.ua
    • Просмотр профиля
    • КОМУ ВНИЗ
Тогда не знаю.
Життя має дві форми - горіння і гниття!
-
Со мной на "ты"
-
Вам лень развёрнуто формулировать вопрос? Нам лень отвечать.
Правильный вопрос:
- Версии J! и проблемного расширения?
- Что хотел?
- Что пробовал?
- Что получилось и что не получилось?
- Какие были ошибки?

*

Оффлайн tigra-uki

  • ****
  • 374
  • [+]10 / [-]0
  • Joom'лiстка
    • Просмотр профиля

Цитировать
Добавила CATALOGUE=Товары  в ru-RU.com_search.ini
и все заработало!

Gruz, так что все хорошо! спасибо! ;)
Слишком сконцентрированное внимание необходимо разбавлять действием.

*

Оффлайн tigra-uki

  • ****
  • 374
  • [+]10 / [-]0
  • Joom'лiстка
    • Просмотр профиля
Есть усложненный вопрос:
а можно ли что-то сделать, чтобы этот поиск осуществлялся еще и в описании категории VirtueMart'a ?

Это было бы просто шикарно!  ::)
Слишком сконцентрированное внимание необходимо разбавлять действием.

*

Оффлайн Gruz

  • *
  • 1276
  • [+]166 / [-]3
  • gruz@jabber.org | gruz.org.ua
    • Просмотр профиля
    • КОМУ ВНИЗ
Поиск не товаров, а категорий? Или при поиске товаров искать не только в описании товара, но и в описании его категории?
Життя має дві форми - горіння і гниття!
-
Со мной на "ты"
-
Вам лень развёрнуто формулировать вопрос? Нам лень отвечать.
Правильный вопрос:
- Версии J! и проблемного расширения?
- Что хотел?
- Что пробовал?
- Что получилось и что не получилось?
- Какие были ошибки?

*

Оффлайн tigra-uki

  • ****
  • 374
  • [+]10 / [-]0
  • Joom'лiстка
    • Просмотр профиля
Поиск не товаров, а категорий? Или при поиске товаров искать не только в описании товара, но и в описании его категории?
Я изначально имела ввиду  именно в названии категории магазина, но и в описании категории, конечно, тоже хорошая идея :)
Слишком сконцентрированное внимание необходимо разбавлять действием.

Народ а каким образом можно добавить поле по которому искать? Добавил поле в админку виртмарта, теперь хочется, что бы поиск и по этому полю работал, как реализовать, какие файлы копать?

Попробовал. Поправиол плагин поиска ВМ, чтобы включал изображение. Фиг там. Joomla оберазет теги на этапе вывода результатов поиска.
Как вариант писать линк на изображение в текст и потом выгребать его ява-скриптом да делать правильный тег. Но это уже слишком много геморроться.

........



Удалось ли вам доработать стандартный поиск Joomla , что бы в результатах отображались фотографии и цены ?

Вот нашел форум - тут в результате поиска выводятся товары, потом результаты поиска по категориям. Как сделать так ?

*

Оффлайн Gruz

  • *
  • 1276
  • [+]166 / [-]3
  • gruz@jabber.org | gruz.org.ua
    • Просмотр профиля
    • КОМУ ВНИЗ
Я не занимался больше, мне не нужно было. А указанный сайт не на Joomla.
Життя має дві форми - горіння і гниття!
-
Со мной на "ты"
-
Вам лень развёрнуто формулировать вопрос? Нам лень отвечать.
Правильный вопрос:
- Версии J! и проблемного расширения?
- Что хотел?
- Что пробовал?
- Что получилось и что не получилось?
- Какие были ошибки?

*

Оффлайн zzaj

Ребят, а как сделать чтоб в результатах поиска в таблице после строки с первым товаром была строка с, допустим текстом, а дальше остальные результаты?

*

Оффлайн eclipseggg

а че AJAX поиск повесить никак чтоли уже?

*

Оффлайн selelo

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

Пример:

Товар 0066 001. Его позиции имеют артикулы 88 0066 001, 92 0066 001 и т.д. Это размеры товара.
При поиске по слову "0066" выводится как сам товар, так и все его позиции. А нужно, чтобы только товар, без своих размеров.

Заранее большое спасибо. Извиняюсь что не по теме.

*

Оффлайн Gruz

  • *
  • 1276
  • [+]166 / [-]3
  • gruz@jabber.org | gruz.org.ua
    • Просмотр профиля
    • КОМУ ВНИЗ
В плагине поиска добавить проверку child_id, или что-то в этом роде. Чтобы искала товары, у которых child_id = 0
Життя має дві форми - горіння і гниття!
-
Со мной на "ты"
-
Вам лень развёрнуто формулировать вопрос? Нам лень отвечать.
Правильный вопрос:
- Версии J! и проблемного расширения?
- Что хотел?
- Что пробовал?
- Что получилось и что не получилось?
- Какие были ошибки?

*

Оффлайн selelo

Нет, это не помогает. Правил файл shop.browse. Изменяется вид выводимых позиций, но они всёравно выводятся ...

*

Оффлайн Gruz

  • *
  • 1276
  • [+]166 / [-]3
  • gruz@jabber.org | gruz.org.ua
    • Просмотр профиля
    • КОМУ ВНИЗ
Не так правил, видимо.
Життя має дві форми - горіння і гниття!
-
Со мной на "ты"
-
Вам лень развёрнуто формулировать вопрос? Нам лень отвечать.
Правильный вопрос:
- Версии J! и проблемного расширения?
- Что хотел?
- Что пробовал?
- Что получилось и что не получилось?
- Какие были ошибки?

*

Оффлайн Duke_r

Подскажите кто знает, насчет доработки поиска...
Как сделать чтобы в результатах поиска показывались: вначале товары которые имеют цену, а в конце - которые не имеют..

Проблема такова, что если клиент хочет выбрать товар и ставит сортировку по цене на возрастание, то вначале он пролистает много товаров без цены (((

Пример: http://vse-est.com.ua/search?lang=ru&searchword=nokia


Надеюсь что удалось описать проблему.
Кстати, я у себя настроил вывод картинки и кнопки купить в результатах...  (пример можете увидеть по той же верхней ссылке)
Обращайтесь кому нужно еще..
« Последнее редактирование: 19.02.2012, 05:12:16 от Duke_r »

*

Оффлайн Gruz

  • *
  • 1276
  • [+]166 / [-]3
  • gruz@jabber.org | gruz.org.ua
    • Просмотр профиля
    • КОМУ ВНИЗ
Поиск Joomla передаёт параметры запроса (то, что ищется) всем активным плагинам поиска, а эти плагины возвращают ему массив со своими результатами. Поиск Joomla эти массивы склеивает и выводит общий результат. И статьи, и товары. Но ищут статьи и товары разные плагины абсолютно по разному.
Это нужно для понимания.

Написать запрос, чтобы он ставил товары без цены в конец, может и можно. Мне знания MySQL такого не позволяют. Посему в плагине нужно два раза искать раз всё, что с ценами, а второй раз всё, что без цен. Результирующие массивы объединить и вернуть из плагина в родной поиск Joomla.

Учесть разбиение на страницы, т.е. лимиты. Тут логику нужно включить, когда делать второй запрос, какие ему лимиты говорить. По результатам первого определить.

Может, быстрее будет работать, если всё-таки выбрать все одним запросом, а уже в результирующем массиве перенести в конец все товары без цен. Но, опят же, разбиение на страницы.

Теорию описал, как я её вижу. Практика - это не одна строчка кода и не 10 минуть экспериментов.

Может, кто-то что-то более остроумное придумает. Или есть простой способ в запросе выстроить всё в таком порядке. Или запрос написать сложный, вложенный, из двух штук.
Життя має дві форми - горіння і гниття!
-
Со мной на "ты"
-
Вам лень развёрнуто формулировать вопрос? Нам лень отвечать.
Правильный вопрос:
- Версии J! и проблемного расширения?
- Что хотел?
- Что пробовал?
- Что получилось и что не получилось?
- Какие были ошибки?

Огромное спасибо за доработанный плагин :D

Решение здесь (вывод изображения) http://shin.org.ua/kartinka-tovara-virtuemart-v-rezultatah-poiska.html
долго искал но нашел, решил поделится с вами :)

там же есть обсуждения вывода кнопки купить и цены

p.s. если не получится идем в com_search в вашем шаблоне.