Форум русской поддержки Joomla!® CMS
09.12.2016, 15:43:08 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2  Все   Вниз
  Добавить закладку  |  Печать  
Автор

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

 (Прочитано 14858 раз)
0 Пользователей и 1 Гость смотрят эту тему.
mike_jag
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Сообщений: 30


« : 14.05.2011, 02:51:23 »

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

Репутация: +165/-3
Offline Offline

Пол: Мужской
Сообщений: 1285


gruz@jabber.org | gruz.org.ua


« Ответ #1 : 14.05.2011, 03:31:31 »

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=Товары

[вложение удалено Администратором]
Записан
mike_jag
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Сообщений: 30


« Ответ #2 : 16.05.2011, 20:02:25 »

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


Записан
Gruz
JComments Tester
*

Репутация: +165/-3
Offline Offline

Пол: Мужской
Сообщений: 1285


gruz@jabber.org | gruz.org.ua


« Ответ #3 : 16.05.2011, 22:03:20 »

Надо модифицировать запрос к БД и его результаты немного перелопатить, чтобы в $row возвращалась нужная информация, удобоваримая для поиска от Joomla. Относительно несложно. Надо поэкспериментировать.
С ценами проблема - и у товара может быть много, разные там групы, скидки и т.д. Тут геморройно, какую именно выводить.

Возможно есть способ использовать шаблон отображения категории, как родном поиске от VM, но надо пробовать и экспериментировать.
Записан
mike_jag
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Сообщений: 30


« Ответ #4 : 16.05.2011, 23:59:16 »

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

Репутация: +165/-3
Offline Offline

Пол: Мужской
Сообщений: 1285


gruz@jabber.org | gruz.org.ua


« Ответ #5 : 17.05.2011, 00:18:36 »

Вообще-то в комплект поставки VM входит дармовой модуль поиска
Записан
mike_jag
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Сообщений: 30


« Ответ #6 : 17.05.2011, 01:00:12 »

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

Репутация: +3/-0
Offline Offline

Сообщений: 103


« Ответ #7 : 04.06.2011, 18:08:12 »

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

Репутация: +165/-3
Offline Offline

Пол: Мужской
Сообщений: 1285


gruz@jabber.org | gruz.org.ua


« Ответ #8 : 04.06.2011, 18:56:52 »

Попробовал. Поправиол плагин поиска ВМ, чтобы включал изображение. Фиг там. 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 » Записан
mzavalny
Гость
« Ответ #9 : 03.07.2011, 14:46:31 »

Огромное спасибо за доработанный плагин Cheesy
Записан
tigra-uki
Давно я тут
****

Репутация: +10/-0
Offline Offline

Пол: Женский
Сообщений: 351


Joom'листка


« Ответ #10 : 24.07.2011, 20:58:28 »

Gruz, спасибо!
Все получилось, почти!

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

Репутация: +165/-3
Offline Offline

Пол: Мужской
Сообщений: 1285


gruz@jabber.org | gruz.org.ua


« Ответ #11 : 25.07.2011, 11:05:42 »

Попробуй по аналогии

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

В language/ru-RU/ru-RU.plg_search_vmxsearch.ini добавить строчку
CATALOGUE=Товары
Записан
tigra-uki
Давно я тут
****

Репутация: +10/-0
Offline Offline

Пол: Женский
Сообщений: 351


Joom'листка


« Ответ #12 : 25.07.2011, 11:20:26 »

Gruz, такое добавляла, увы не поменялось... Sad

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

Репутация: +165/-3
Offline Offline

Пол: Мужской
Сообщений: 1285


gruz@jabber.org | gruz.org.ua


« Ответ #13 : 25.07.2011, 11:27:14 »

Тогда не знаю.
Записан
tigra-uki
Давно я тут
****

Репутация: +10/-0
Offline Offline

Пол: Женский
Сообщений: 351


Joom'листка


« Ответ #14 : 25.07.2011, 11:29:00 »


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

Gruz, так что все хорошо! спасибо! Wink
Записан
tigra-uki
Давно я тут
****

Репутация: +10/-0
Offline Offline

Пол: Женский
Сообщений: 351


Joom'листка


« Ответ #15 : 25.07.2011, 20:14:12 »

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

Это было бы просто шикарно!  Roll Eyes
Записан
Gruz
JComments Tester
*

Репутация: +165/-3
Offline Offline

Пол: Мужской
Сообщений: 1285


gruz@jabber.org | gruz.org.ua


« Ответ #16 : 07.08.2011, 21:07:34 »

Поиск не товаров, а категорий? Или при поиске товаров искать не только в описании товара, но и в описании его категории?
Записан
tigra-uki
Давно я тут
****

Репутация: +10/-0
Offline Offline

Пол: Женский
Сообщений: 351


Joom'листка


« Ответ #17 : 07.08.2011, 22:46:06 »

Поиск не товаров, а категорий? Или при поиске товаров искать не только в описании товара, но и в описании его категории?
Я изначально имела ввиду  именно в названии категории магазина, но и в описании категории, конечно, тоже хорошая идея Azn
Записан
Master of Magic
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 39


« Ответ #18 : 29.09.2011, 13:28:40 »

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

Репутация: +3/-0
Offline Offline

Сообщений: 35


« Ответ #19 : 27.11.2011, 18:41:58 »

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

........



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

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

Репутация: +165/-3
Offline Offline

Пол: Мужской
Сообщений: 1285


gruz@jabber.org | gruz.org.ua


« Ответ #20 : 27.11.2011, 19:45:14 »

Я не занимался больше, мне не нужно было. А указанный сайт не на Joomla.
Записан
zzaj
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 47


« Ответ #21 : 23.12.2011, 11:19:11 »

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

Репутация: +32/-2
Offline Offline

Пол: Мужской
Сообщений: 416



« Ответ #22 : 23.12.2011, 18:58:55 »

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

Репутация: +0/-0
Offline Offline

Сообщений: 4


« Ответ #23 : 11.02.2012, 15:38:36 »

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

Пример:

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

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

Репутация: +165/-3
Offline Offline

Пол: Мужской
Сообщений: 1285


gruz@jabber.org | gruz.org.ua


« Ответ #24 : 11.02.2012, 15:59:41 »

В плагине поиска добавить проверку child_id, или что-то в этом роде. Чтобы искала товары, у которых child_id = 0
Записан
selelo
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 4


« Ответ #25 : 16.02.2012, 17:14:44 »

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

Репутация: +165/-3
Offline Offline

Пол: Мужской
Сообщений: 1285


gruz@jabber.org | gruz.org.ua


« Ответ #26 : 16.02.2012, 17:19:56 »

Не так правил, видимо.
Записан
Duke_r
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 10


« Ответ #27 : 19.02.2012, 03:05:51 »

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

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

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


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

Репутация: +165/-3
Offline Offline

Пол: Мужской
Сообщений: 1285


gruz@jabber.org | gruz.org.ua


« Ответ #28 : 19.02.2012, 03:21:50 »

Поиск Joomla передаёт параметры запроса (то, что ищется) всем активным плагинам поиска, а эти плагины возвращают ему массив со своими результатами. Поиск Joomla эти массивы склеивает и выводит общий результат. И статьи, и товары. Но ищут статьи и товары разные плагины абсолютно по разному.
Это нужно для понимания.

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

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

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

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

Может, кто-то что-то более остроумное придумает. Или есть простой способ в запросе выстроить всё в таком порядке. Или запрос написать сложный, вложенный, из двух штук.
Записан
softmark
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 6


« Ответ #29 : 19.04.2012, 15:03:16 »

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

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

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

p.s. если не получится идем в com_search в вашем шаблоне.
Записан
Страниц: [1] 2  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet