Новости Joomla

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

FreeR

  • Новичок
  • 5
  • 0 / 0
Доброго времени суток! Пытаюсь решить вроде простецкую задачку, а знаний не хватает. Надеюсь кто подскажет как с ней быть. Суть в следующем : Написан компонент под j1.5 довольно давно, который содержит много таблиц в бд о товарах компаниях и т.д. , а поиск стандартный по компоненту не работает. Начал разбираться в том как написать плагин для апгрейда поиска. Ознакомился с событиями onSearch и onSearchAreas , постарался изучить стандартные поиски (по категориям, статьям, контактам ..) До конца не получается разобраться, упираюсь в ошибку Warning: Invalid argument supplied for foreach() test/www/plugins/search/searchtiu.php on line 131, понимаю что возвращаемый объект не содержит чего то (массив rows). Сама таблица в которой надо вести поиск содержит такие столбцы: id,    id_user ,id_cat_tovarov, id_company, value(так неудачно задано название товара), articul, cost, wholesale, published
К сожалению не получается дебагом пройтись по функции и посмотреть где что лежит(((((((((
Сам код плагина
//Определить registerEvent. Заменил "Tiu"
Код
$mainframe->registerEvent( 'onSearch', 'plgSearchTiu' );
$mainframe->registerEvent( 'onSearchAreas', 'plgSearchTiuAreas' );
 
 
function &plgSearchTiuAreas()
{
        static $areas = array(
                'searchtiu' => 'Searchtiu'
        );
        return $areas;
}


function plgSearchTiu( $text, $phrase='', $ordering='', $areas=null )
{
        $db    =& JFactory::getDBO();
        $user  =& JFactory::getUser();
 
if (is_array( $areas )) {
if (!array_intersect( $areas, array_keys( plgSearchTiuAreas() ) )) {
return array();
}
}


$plugin =& JPluginHelper::getPlugin('search', 'searchtiu');
 

$pluginParams = new JParameter( $plugin->params );
 

$limit = $pluginParams->def( 'search_limit', 50 );
 

$text = trim( $text );


if ($text == '')
{
    return array();
}
 

        $wheres = array();
        switch ($phrase) {
 
//Поиск точного
                case 'exact':
                        $text          = $db->Quote( '%'.$db->getEscaped( $text, true ).'%', false );
                        $wheres2       = array();
                        $wheres2[]   = 'LOWER(a.value) LIKE '.$text;
                        $where                 = '(' . implode( ') OR (', $wheres2 ). ')';
                        break;
 
//поиск всех или
                case 'all':
                case 'any':
 
//Установить по умолчанию
                default:
                        $words         = explode( ' ', $text );
                        $wheres = array();
                        foreach ($words as $word)
                        {
                                $word          = $db->Quote( '%'.$db->getEscaped( $word, true ).'%', false );
                                $wheres2       = array();
                                $wheres2[]   = 'LOWER(a.value) LIKE '.$word;
                                $wheres[]    = implode( ' OR ', $wheres2 );
                        }
                        $where = '(' . implode( ($phrase == 'all' ? ') AND (' : ') OR ('), $wheres ). ')';
                        break;
        }
 
//упорядочение результатов
        switch ( $ordering ) {
 
//алфавитный, по возрастанию
                case 'alpha':
                        $order = 'a.value ASC';
                        break;
 
//сначала старые
                case 'oldest':
 
//популярные первый
                case 'popular':
 
//Сначала новые
                case 'newest':
 
//Значение по умолчанию: алфавитный, по возрастанию
                default:
                        $order = 'a.value ASC';
        }
 
//заменить nameofplugin
        $searchSearchtiu = JText::_( 'Searchtiu' );
 
//запрос к базе данных, отличается в ситуации! Это будет выглядеть примерно так:
        $query = 'SELECT a.value AS title,'
        . ' CONCAT_WS( " / ", '. $db->Quote($searchSearchtiu).', b.title )AS section,'
        . ' "1" AS browsernav'
        . ' FROM #__c_tovari AS a'
        . ' WHERE ( '. $where .' )'
        . ' AND a.published = 1'
        . ' ORDER BY '. $order
        ;

//Установить запроса
        $db->setQuery( $query, 0, $limit );
        $rows = $db->loadObjectList();
 
//"Выход" из отображается ссылка
        foreach($rows as $key => $row) {
                $rows[$key]->href = '#';
        }

 
//Вернуться результаты поиска в массиве
return $rows;

}
*

FreeR

  • Новичок
  • 5
  • 0 / 0
Собственно проблема была в запросе. Почитав документацию на инглише понял какие поля должны содержаться в результирующем запросе плагина.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Плагин LVSpoiler - спойлеры с динамической загрузкой изображений

Автор Arkadiy

Ответов: 449
Просмотров: 93512
Последний ответ 20.04.2024, 21:10:33
от Beer
Плагин StopKids для маркировки сайта знаком 18+ для Joomla 1.5-3.x

Автор ecolora

Ответов: 40
Просмотров: 19851
Последний ответ 19.03.2023, 18:55:08
от ecolora
Компонент Commedia и плагин mp3browser для медиа-сайтов

Автор ecolora

Ответов: 557
Просмотров: 119001
Последний ответ 13.03.2023, 00:25:14
от ecolora
Плагин seoLinks

Автор alexandr-spb

Ответов: 0
Просмотров: 1180
Последний ответ 26.01.2023, 23:08:41
от alexandr-spb
Плагин "Русская типографика"

Автор Physicist

Ответов: 258
Просмотров: 147665
Последний ответ 25.01.2023, 13:43:35
от Physicist