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

mike_jag

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

Gruz

  • JComments Tester
  • 1276
  • 163
  • 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( $areas, array_keys( plgSearchvmxsearchAreas() ) )) {

                        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', 1 ) ;

$thumbnailx = $botParams->def( 'thumbnailx', 40 ) ;

$thumbnaily = $botParams->def( 'thumbnaily', 40 ) ;

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

$fields[] = 'p.product_name' ;

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

$fields[] = 'p.product_sku' ;

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

$fields[] = 'p.product_desc' ;

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

$fields[] = 'p.product_s_desc' ;

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

$fields[] = 'p.product_url' ;

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

$fields[] = 'r.comment' ;

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

$fields[] = 'm.mf_name' ;

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

$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', 1 ) == 1 ) {

$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', 1 ) == 1 ) {

$txt = strtolower( $text ) ;

if( $phrase != 'exact' )

$txt_array = explode( ' ', $txt ) ; else

$txt_array[0] = $txt ;

$i = 0 ;

foreach( $row as $result ) {

$count = 0 ;

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 ) - 1 ; $i >= 0 ; $i -- ) {

$swapped = false ;

for( $j = 0 ; $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

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


*

Gruz

  • JComments Tester
  • 1276
  • 163
  • gruz@jabber.org | gruz.org.ua
Надо модифицировать запрос к БД и его результаты немного перелопатить, чтобы в $row возвращалась нужная информация, удобоваримая для поиска от Joomla. Относительно несложно. Надо поэкспериментировать.
С ценами проблема - и у товара может быть много, разные там групы, скидки и т.д. Тут геморройно, какую именно выводить.

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

mike_jag

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

Gruz

  • JComments Tester
  • 1276
  • 163
  • gruz@jabber.org | gruz.org.ua
Вообще-то в комплект поставки VM входит дармовой модуль поиска
Життя має дві форми - горіння і гниття!
-
Со мной на "ты"
-
Вам лень развёрнуто формулировать вопрос? Нам лень отвечать.
Правильный вопрос:
- Версии J! и проблемного расширения?
- Что хотел?
- Что пробовал?
- Что получилось и что не получилось?
- Какие были ошибки?
*

mike_jag

  • Осваиваюсь на форуме
  • 30
  • 0
Входит.
Но этот более расширенный.
*

ASkidkin

  • Осваиваюсь на форуме
  • 103
  • 3
кто подскажет как в стандартный поиск всунуть картинки товаров на страницу результатов?
*

Gruz

  • JComments Tester
  • 1276
  • 163
  • 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', 1 ) ;

$thumbnailx = $botParams->def( 'thumbnailx', 40 ) ;

$thumbnaily = $botParams->def( 'thumbnaily', 40 ) ;

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

$fields[] = 'p.product_name' ;

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

$fields[] = 'p.product_sku' ;

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

$fields[] = 'p.product_desc' ;

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

$fields[] = 'p.product_s_desc' ;

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

$fields[] = 'p.product_url' ;

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

$fields[] = 'r.comment' ;

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

$fields[] = 'm.mf_name' ;

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

$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', 1 ) == 1 ) {

$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', 1 ) == 1 ) {

$txt = strtolower( $text ) ;

if( $phrase != 'exact' )

$txt_array = explode( ' ', $txt ) ; else

$txt_array[0] = $txt ;

$i = 0 ;

/*##my20110604172804 {

It was:

foreach( $row as $result ) {

It became:*/

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

/*##my20110604172804 } */

$count = 0 ;

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 ) - 1 ; $i >= 0 ; $i -- ) {

$swapped = false ;

for( $j = 0 ; $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, 19:18:38 от Gruz »
Життя має дві форми - горіння і гниття!
-
Со мной на "ты"
-
Вам лень развёрнуто формулировать вопрос? Нам лень отвечать.
Правильный вопрос:
- Версии J! и проблемного расширения?
- Что хотел?
- Что пробовал?
- Что получилось и что не получилось?
- Какие были ошибки?

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

tigra-uki

  • Давно я тут
  • 388
  • 10
  • Joom'лiстка
Gruz, спасибо!
Все получилось, почти!

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

Gruz

  • JComments Tester
  • 1276
  • 163
  • 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

  • Давно я тут
  • 388
  • 10
  • Joom'лiстка
Gruz, такое добавляла, увы не поменялось... :(

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

Gruz

  • JComments Tester
  • 1276
  • 163
  • gruz@jabber.org | gruz.org.ua
Тогда не знаю.
Життя має дві форми - горіння і гниття!
-
Со мной на "ты"
-
Вам лень развёрнуто формулировать вопрос? Нам лень отвечать.
Правильный вопрос:
- Версии J! и проблемного расширения?
- Что хотел?
- Что пробовал?
- Что получилось и что не получилось?
- Какие были ошибки?
*

tigra-uki

  • Давно я тут
  • 388
  • 10
  • Joom'лiстка

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

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

tigra-uki

  • Давно я тут
  • 388
  • 10
  • Joom'лiстка
Есть усложненный вопрос:
а можно ли что-то сделать, чтобы этот поиск осуществлялся еще и в описании категории VirtueMart'a ?

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

Gruz

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

tigra-uki

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

Master of Magic

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

Kolluchii

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

........



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

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

Gruz

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

zzaj

  • Осваиваюсь на форуме
  • 47
  • 0
Ребят, а как сделать чтоб в результатах поиска в таблице после строки с первым товаром была строка с, допустим текстом, а дальше остальные результаты?
*

eclipseggg

  • Завсегдатай
  • 415
  • 30
а че AJAX поиск повесить никак чтоли уже?
*

selelo

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

Пример:

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

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

Gruz

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

selelo

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

Gruz

  • JComments Tester
  • 1276
  • 163
  • gruz@jabber.org | gruz.org.ua
Не так правил, видимо.
Життя має дві форми - горіння і гниття!
-
Со мной на "ты"
-
Вам лень развёрнуто формулировать вопрос? Нам лень отвечать.
Правильный вопрос:
- Версии J! и проблемного расширения?
- Что хотел?
- Что пробовал?
- Что получилось и что не получилось?
- Какие были ошибки?
*

Duke_r

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

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

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


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

Gruz

  • JComments Tester
  • 1276
  • 163
  • gruz@jabber.org | gruz.org.ua
Поиск Joomla передаёт параметры запроса (то, что ищется) всем активным плагинам поиска, а эти плагины возвращают ему массив со своими результатами. Поиск Joomla эти массивы склеивает и выводит общий результат. И статьи, и товары. Но ищут статьи и товары разные плагины абсолютно по разному.
Это нужно для понимания.

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

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

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

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

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

softmark

  • Новичок
  • 6
  • 0
Огромное спасибо за доработанный плагин :D

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

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

p.s. если не получится идем в com_search в вашем шаблоне.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Мобильное приложение VirtueMart

Автор Mihalich41

Ответов: 9
Просмотров: 446
Последний ответ 15.08.2017, 00:34:47
от capricorn
Sj Minicart Pro for VirtueMart не показывает изображение товара

Автор 6199233

Ответов: 2
Просмотров: 111
Последний ответ 22.07.2017, 17:16:46
от 6199233
rel=canonical + VirtueMart

Автор saulS

Ответов: 0
Просмотров: 116
Последний ответ 06.07.2017, 23:15:05
от saulS
Почему перемешивается товар в категории VirtueMart

Автор ruslanmunteanu

Ответов: 0
Просмотров: 75
Последний ответ 05.07.2017, 18:10:13
от ruslanmunteanu
Русификация для VirtueMart 3.0.14

Автор Veselaya

Ответов: 1
Просмотров: 150
Последний ответ 05.07.2017, 13:59:29
от lexxbry