Новости Joomla

WT Set elements v.1.0.0: плагин поля для RadicalMart

WT Set elements v.1.0.0: плагин поля для RadicalMart

👩‍💻 WT Set elements v.1.0.0: плагин поля для RadicalMart.Плагин пользовательского поля компонента интернет-магазина для Joomla - RadicalMart (@radicalmart). Плагин позволяет создавать набор элементов, включающих заголовок, изображение и краткое описание и выбирать необходимые из них в товаре. Отображать наборы элементов можно в виде товара и в списке товаров (в своих макетах). От клиента поступил запрос на возможность добавления для товаров в RadicalMart списка повторяемых элементов. Это должен был быть редактируемый в одном месте список функций и режимов, которые могли относиться к разным товарам одной категории в разных сочетаниях. Во вкладке параметров "Отображение" вы можете выбрать отображать или нет элементы в категории товаров и/или карточке товара. Для каждого вида возможно выбрать собственный макет. Файлы макета находятся в /layouts/plugins/radicalmart_fields/wtsetelements. Вы можете использовать свои файлы макета в формате .php, разместив их в этой папке. Кроме того, файлы макетов можно переопределить стандартным способом Joomla, после чего они будут доступны по адресу: /templates/YOUR_TEMPLATE/html/layouts/plugins/radicalmart_fields/wtsetelements.Плагин предполагает самостоятельную разработку макетов вывода. Макеты "из коробки" следует рассматривать как образец для создания собственных.Плагин бесплатный. Протестирован на Joomla 5.3.3 и RadicalMart 2.2.4.Плагин разработан в соавторстве участниками нашего сообщества: Сергеем Сергевниным (@gresserg) и Сергеем Толкачёвым (@sergeytolkachyov).Страница расширенияGitHub расширения@joomlafeed#joomla #расширения #radicalmart

IWS.BY VK app widget - Виджет приложения ВКонтакте для Joomla

IWS.BY VK app widget - Виджет приложения ВКонтакте для Joomla

👩‍💻 IWS.BY VK app widget - Виджет приложения ВКонтакте для Joomla.Модуль «Виджет приложения ВКонтакте» для Joomla поможет добавить на сайт виджет с карточкой приложения или игры из социальной сети ВКонтакте.У вас возникла потребность отобразить информацию о ваших приложениях или играх на сайте с кнопкой перехода в социальную сеть, то этот модуль для Вас. Вам не придется хранить информацию о приложении у себя на сайте, все данные получаются через публичное API социальной сети ВКонтакте. Хранение информации на стороне ВКонтакте позволит Вам не нагружать базу данных сайта.В модуле имеется всего несколько опций и полей, которые максимально упрощают публикацию виджета. Первая опция позволяет подключить публичное API социальной сети ВКонтакте, необходимое для работы виджетов. Следующее поле потребует ввести идентификатор приложения или игры, присвоенный в социальной сети ВКонтакте. Следующая опция позволит выбрать вид отображаемой информации в виджете.Модуль имеет 3 варианта отображения:- карточка- участники- кнопкаПоддерживаемые версии Joomla: Joomla 3, Joomla 4, Joomla 5.Страница расширенияJoomla Extensions Directory#joomla #расширения #vk

SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla

SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla

👩‍💻 SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla.Компонент - менеджер цифровых проектов для Joomla! CMS. Компонент обеспечивает создание каталога цифровых проектов и предоставляет возможность скачивания, в том числе с использованием лицензионных ключей.👩‍💻 v.2.5.0. Что нового?Схемы структур данных для серверов обновлений. Теперь с SW JProjects вы может создавать сервер обновлений не только для расширений Joomla, но и свои собственные. Например, вам нужно, чтобы структура данных сервера обновлений была другая и формат должен быть, например, не XML, а JSON. Формирование структуры данных для сервера обновлений расширений Joomla вынесено в отдельный плагин. Вы можете создать свой собственный плагин и реализовать в нём нужную вам структуру данных, добавив или наоборот исключив отображаемые данные. Сервер обновлений в компоненте по-прежнему отображает информацию о списке проектов и их версиях, о конкретном проекте и его changelog.Можно выбрать схему данных сервера обновлений глобально для всего компонента, выбрать другую схему данных для категории проектов, а так же выбрать схему в каждом проекте.

Разработчикам в качестве образца можно посмотреть плагин схемы данных для Joomla в составе компонента или же плагин-образец JSON-схемы на GitHub.
Группа плагинов swjprojects. Для нужд компонента создана группа плагинов swjprojects. В частности, в этой группе находится плагин структуры данных Joomla расширений для сервера обновлений.Изменение языковых констант. Изменены некоторые языковые константы в панели администратора. Если вы делали переопределение констант - переопределите их снова.👩‍💻 Joomla 6. Внесены изменения для корректной установки и работы компонента на Joomla 6. Компонент успешно протестирован на Joomla 6-beta2.Минимальная версия Joomla - 5. Подняты минимальные системные требования: Joomla 5.0.0 и PHP 8.1.
- Страница расширения👉 Плагин-образец кастомной JSON-схемы данных для сервера обновлений на GitHub.- GitHub расширения- Документация на GitHub- Joomla Extensions Directory#joomla #расширения

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

mike_jag

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

Gruz

  • Завсегдатай
  • 1275
  • 167 / 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( $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
  • 1 / 1
Благодарю за решение.
Ваши изменения частично решают проблему в лучшую сторону.
Но посетителям сайта в результатах поиска важно видеть цены на товар.
Я, к сожалению, не знаток РНР, но в данной Вами ссылке на сайт, как мне кажется, не хватает цен. И дата там - вещь совершенно лишняя.


*

Gruz

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

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

mike_jag

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

Gruz

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

mike_jag

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

ASkidkin

  • Захожу иногда
  • 103
  • 3 / 0
кто подскажет как в стандартный поиск всунуть картинки товаров на страницу результатов?
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 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', 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

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

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

Gruz

  • Завсегдатай
  • 1275
  • 167 / 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

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

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

Gruz

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

tigra-uki

  • Давно я тут
  • 565
  • 11 / 0
  • Joom'лiстка

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

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

tigra-uki

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

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

Gruz

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

tigra-uki

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

Master of Magic

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

Kolluchii

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

........



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

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

Gruz

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

zzaj

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

eclipseggg

  • Захожу иногда
  • 410
  • 32 / 2
а че AJAX поиск повесить никак чтоли уже?
*

selelo

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

Пример:

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

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

Gruz

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

selelo

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

Gruz

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

Duke_r

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

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

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


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

Gruz

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

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

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

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

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

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

softmark

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

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

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

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

Количество просмотров товара VirtueMart Существует?

Автор grishin

Ответов: 38
Просмотров: 12492
Последний ответ 22.08.2020, 08:44:29
от rsn
Не выводит списком Настраиваемое поле в VirtueMart 5.0

Автор ЛюдмилаМир

Ответов: 2
Просмотров: 3394
Последний ответ 25.08.2019, 16:27:04
от ЛюдмилаМир
Joomla VirtueMart помощь в переводе

Автор akkord31

Ответов: 0
Просмотров: 3248
Последний ответ 21.05.2019, 09:14:02
от akkord31
Миграция с Joomla 1.5 на 3 с VirtueMart 1.1.9 stable на свежую. Кто поможет?

Автор Гриша-Десантник

Ответов: 7
Просмотров: 3543
Последний ответ 23.04.2019, 10:22:25
от draff
Переход на https VirtueMart 1.1.4 проблемы с фото

Автор Sergey1984

Ответов: 4
Просмотров: 3606
Последний ответ 25.10.2018, 20:56:54
от Sergey1984