[Модуль] AJAX Live Search 5.4

Тема в разделе "Joomla", создана пользователем Ping, 23 дек 2012.

  1. Ping

    Ping PingWin always win Команда форума

    Регистрация:
    29 окт 2012
    Сообщения:
    443
    Симпатии:
    301
  2. diks13

    diks13

    Регистрация:
    22 янв 2013
    Сообщения:
    63
    Симпатии:
    22
    Universal Ajax Live Search 4.0

     
  3. Afres

    Afres

    Регистрация:
    17 янв 2013
    Сообщения:
    64
    Симпатии:
    20
    Может я чего не знаю, но офф сайт http://offlajn.com/ расширения лежит уже ну месяца 2-3 точно, не меньше, откуда новая версия?
     
  4. Ping

    Ping PingWin always win Команда форума

    Регистрация:
    29 окт 2012
    Сообщения:
    443
    Симпатии:
    301
  5. versa4e

    versa4e

    Регистрация:
    23 фев 2013
    Сообщения:
    187
    Симпатии:
    112
    Universal Ajax Live Search 4.0.1
     
  6. Васька

    Васька

    Регистрация:
    2 янв 2014
    Сообщения:
    29
    Симпатии:
    1
    Здравствуйте!
    Подскажите если кто знает как сделать так что бы этот модуль отображал изображения товаров в поиске??
    --- Добавлено, 3 янв 2014 ---
    Нашел ответ на одном из форумов.
    Для того что бы всё работало нужно:
    файле \plugins\search\virtuemart\virtuemart.php
    Полностью заменить код на этот

    Код:
    <?php
    /**
    * @version        $Id: virtuemart.php $
    * @package        Joomla
    * @copyright    Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
    * @license        GNU/GPL, see LICENSE.php
    * Joomla! is free software. This version may have been modified pursuant
    * to the GNU General Public License, and as distributed it includes or
    * is derivative of works licensed under the GNU General Public License or
    * other free or open source software licenses.
    * See COPYRIGHT.php for copyright notices and details.
    */
    // no direct access
    defined('_JEXEC') or die('Restricted access');
    jimport( 'joomla.plugin' ) ;
    if (!class_exists( 'VmConfig' )) require(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart'.DS.'helpers'.DS.'config.php');
    $config= VmConfig::loadConfig();
    if(!class_exists('TableCategories')) require(JPATH_VM_ADMINISTRATOR.DS.'tables'.DS.'categories.php');
    if (!class_exists( 'VirtueMartModelCategory' )) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'category.php');
    if (!class_exists( 'VirtueMartModelProduct' )) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'product.php');
    if(!version_compare(JVERSION,'1.6.0','ge')) {
        $mainframe->registerEvent('onSearch', 'plgSearchVirtuemart');
        $mainframe->registerEvent('onSearchAreas', 'plgSearchVirtuemartAreas');
    }
    function &plgSearchVirtuemartAreas() {
        static $areas = array(
    'vmxsearch' => 'Products'
        );
        return $areas;
    }
    function plgSearchVirtuemart($text, $phrase='', $ordering='', $areas=null) {
        $db = & JFactory::getDBO();
        $user = & JFactory::getUser();
        if (is_array($areas)) {
            if (!array_intersect($areas, array_keys(plgSearchVirtuemartAreas()))) {
                return array();
            }
        }
        // load plugin params info
        $plugin = & JPluginHelper::getPlugin('search', 'vmxsearch');
        $pluginParams = new JParameter($plugin->params);
        $limit = $pluginParams->def('search_limit', 50);
        $text = trim($text);
        if ($text == '') {
            return array();
        }
        $section = JText::_('Products');
        $wheres = array();
        switch ($phrase) {
            case 'exact':
                $text = $db->Quote('%' . $db->getEscaped($text, true) . '%', false);
                $wheres2 = array();
                $wheres2[] = 'a.product_sku LIKE ' . $text;
                $wheres2[] = 'p.product_name LIKE ' . $text;
                $wheres2[] = 'p.product_s_desc LIKE ' . $text;
                $wheres2[] = 'p.product_desc LIKE ' . $text;
                $wheres2[] = 'b.category_name 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[] = 'a.product_sku LIKE ' . $word;
                    $wheres2[] = 'p.product_name LIKE ' . $word;
                    $wheres2[] = 'p.product_s_desc LIKE ' . $word;
                    $wheres2[] = 'p.product_desc LIKE ' . $word;
                    $wheres2[] = 'b.category_name LIKE ' . $word;
                    $wheres[] = implode(' OR ', $wheres2);
                }
                $where = '(' . implode(($phrase == 'all' ? ') AND (' : ') OR ('), $wheres) . ')';
                break;
        }
        switch ($ordering) {
            case 'alpha':
                $order = 'p.product_name ASC';
                break;
            case 'category':
                $order = 'b.category_name ASC, a.product_name ASC';
                break;
            case 'popular':
                $order = 'p.product_name ASC';
                break;
            case 'newest':
                $order = 'a.created_on DESC';
                break;
            case 'oldest':
                $order = 'a.created_on ASC';
                break;
            default:
                $order = 'p.product_name DESC';
        }
        $text = $db->Quote('%' . $db->getEscaped($text, true) . '%', false);
        $query = "SELECT DISTINCT CONCAT( p.product_name,' (',a.product_sku,')' ) AS title, a.virtuemart_product_id , b.virtuemart_category_id , media.file_url AS product_full_image,   p.product_s_desc   AS text, b.category_name as section,
             a.created_on as created, '2' AS browsernav
            FROM #__virtuemart_products AS a
            LEFT JOIN #__virtuemart_products_".VMLANG." p ON p.virtuemart_product_id = a.virtuemart_product_id
            LEFT JOIN #__virtuemart_product_categories AS xref ON xref.virtuemart_product_id = a.virtuemart_product_id
            LEFT JOIN #__virtuemart_categories_".VMLANG." AS b ON b.virtuemart_category_id = xref.virtuemart_category_id
        LEFT JOIN #__virtuemart_product_medias AS pm ON pm.virtuemart_product_id = (SELECT IF(a.product_parent_id>0, a.product_parent_id, p.virtuemart_product_id))
          LEFT JOIN #__virtuemart_medias AS media ON pm.virtuemart_media_id = media.virtuemart_media_id"
        . ' WHERE ' . $where . 'AND a.published = 1 '
      .' GROUP BY a.virtuemart_product_id '
        . ' ORDER BY ' . $order
        ;
        $db->setQuery($query, 0, $limit);
        $rows = $db->loadObjectList();
        if ($rows) {
            foreach ($rows as $key => $row) {
                $rows[$key]->href = 'index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $row->virtuemart_product_id . '&virtuemart_category_id=' . $row->virtuemart_category_id;
                // $rows[$key]->text = $text;
            }
        }
        return $rows;
    }
    class plgSearchVirtuemart extends JPlugin
    {
        function onContentSearchAreas() {
            static $areas = array(
        'virtuemart' => 'Products'
            );
            return $areas;
        }
        /**
        * virtuemart Products Search method
        *
        * The sql must return the following fields that are used in a common display
        * routine: href, title, section, created, text, browsernav
        * @param string Target search string
        * @param string mathcing option, exact|any|all
        * @param string ordering option, newest|oldest|popular|alpha|category
        */
        function onContentSearch($text, $phrase='', $ordering='', $areas=null) {
            $db        = JFactory::getDbo();
            $app    = JFactory::getApplication();
            $user = & JFactory::getUser();
            $groups    = implode(',', $user->getAuthorisedViewLevels());
            $tag = JFactory::getLanguage()->getTag();
            $searchText = $text;
            if (is_array($areas)) {
                if (!array_intersect($areas, array_keys($this->onContentSearchAreas()))) {
                    return array();
                }
            }
            // load plugin params info
            // $plugin = & JPluginHelper::getPlugin('search', 'virtuemart');
            // $pluginParams = new JParameter($plugin->params);
            // $limit = $pluginParams->def('search_limit', 50);
            $limit = $this->params->def('search_limit',        50);
            /* TO do it work with date
            $nullDate        = $db->getNullDate();
            $date = JFactory::getDate();
            $now = $date->toMySQL();
            */
            $text = trim($text);
            if ($text == '') {
                return array();
            }
            $section = JText::_('Products');
            $wheres = array();
          switch ($phrase) {
              case 'exact':
                  $text = $db->Quote('%' . $db->getEscaped($text, true) . '%', false);
                  $wheres2 = array();
                  $wheres2[] = 'a.product_sku LIKE ' . $text;
                  $wheres2[] = 'p.product_name LIKE ' . $text;
                  $wheres2[] = 'p.product_s_desc LIKE ' . $text;
                  $wheres2[] = 'p.product_desc LIKE ' . $text;
                  $wheres2[] = 'b.category_name 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[] = 'a.product_sku LIKE ' . $word;
                      $wheres2[] = 'p.product_name LIKE ' . $word;
                      $wheres2[] = 'p.product_s_desc LIKE ' . $word;
                      $wheres2[] = 'p.product_desc LIKE ' . $word;
                      $wheres2[] = 'b.category_name LIKE ' . $word;
                      $wheres[] = implode(' OR ', $wheres2);
                  }
                  $where = '(' . implode(($phrase == 'all' ? ') AND (' : ') OR ('), $wheres) . ')';
                  break;
          }
          switch ($ordering) {
              case 'alpha':
                  $order = 'p.product_name ASC';
                  break;
              case 'category':
                  $order = 'b.category_name ASC, a.product_name ASC';
                  break;
              case 'popular':
                  $order = 'p.product_name ASC';
                  break;
              case 'newest':
                  $order = 'a.created_on DESC';
                  break;
              case 'oldest':
                  $order = 'a.created_on ASC';
                  break;
              default:
                  $order = 'p.product_name DESC';
          }
            // search product
          $text = $db->Quote('%' . $db->getEscaped($text, true) . '%', false);
          $query = "SELECT DISTINCT CONCAT( p.product_name,' (',a.product_sku,')')  AS title, a.virtuemart_product_id , b.virtuemart_category_id , media.file_url AS product_full_image,   p.product_s_desc   AS text, b.category_name as section,
               a.created_on as created, '2' AS browsernav
              FROM #__virtuemart_products AS a
              LEFT JOIN #__virtuemart_products_".VMLANG." p ON p.virtuemart_product_id = a.virtuemart_product_id
              LEFT JOIN #__virtuemart_product_categories AS xref ON xref.virtuemart_product_id = a.virtuemart_product_id
              LEFT JOIN #__virtuemart_categories_".VMLANG." AS b ON b.virtuemart_category_id = xref.virtuemart_category_id
            LEFT JOIN #__virtuemart_product_prices AS pr ON pr.virtuemart_product_id = a.virtuemart_product_id
          LEFT JOIN #__virtuemart_product_medias AS pm ON pm.virtuemart_product_id = (SELECT IF(a.product_parent_id>0, a.product_parent_id, p.virtuemart_product_id))
            LEFT JOIN #__virtuemart_medias AS media ON pm.virtuemart_media_id = media.virtuemart_media_id
            LEFT JOIN #__virtuemart_product_customfields AS c ON p.virtuemart_product_id = c.virtuemart_product_id"
          . ' WHERE ' . $where . 'AND a.published = 1 '
        .' GROUP BY a.virtuemart_product_id '
          . ' ORDER BY ' . $order
          ;
          $db->setQuery($query, 0, $limit);
          $rows = $db->loadObjectList();
            if ($rows) {
                foreach ($rows as $key => $row) {
                    $rows[$key]->href = 'index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $row->virtuemart_product_id . '&virtuemart_category_id=' . $row->virtuemart_category_id;
                    // $rows[$key]->text = $text;
                }
            }
            return $rows;
        }
    }
     
    Последнее редактирование: 3 янв 2014
  7. Васька

    Васька

    Регистрация:
    2 янв 2014
    Сообщения:
    29
    Симпатии:
    1
    Здравствуйте.
    Нет ли у вас версии плагина посвежее?
    Буду очень благодарен
     
  8. klop

    klop

    Регистрация:
    19 ноя 2012
    Сообщения:
    1.527
    Симпатии:
    1.860
    Universal AJAX Live Search 5.4
     
    Lasted edited by : 19 май 2015
    Zulus нравится это.
  9. klop

    klop

    Регистрация:
    19 ноя 2012
    Сообщения:
    1.527
    Симпатии:
    1.860
    ссылку обновил
     
    MGT1 нравится это.
  10. MGT1

    MGT1

    Регистрация:
    5 янв 2013
    Сообщения:
    617
    Симпатии:
    182
    И так, вроде все класно, установил, вылечил.
    Вроде и ищет. Только что, не понятно. Есть в DJClasified категории. Их пока не видит.
     
  11. Zulus

    Zulus Команда форума

    Регистрация:
    20 дек 2012
    Сообщения:
    682
    Симпатии:
    686
    Была похожая проблема но с другим компонентом. Решил так - зайди в плагины и посмотри, есть ли для DJClasified плагин поиска, если есть, то включи его, а затем зайди в в настройки модуля Universal AJAX Live Search и поставь "галку" - Искать в DJClasified.
     
  12. Antonio12122012

    Antonio12122012

    Регистрация:
    3 дек 2015
    Сообщения:
    1
    Симпатии:
    0
    Чтобы в virtuemart 3 ajax live search отображал картинки, надо в файле virtuemart.php, который находится по адресу /plugins/search/virtuemart, весь код заменить на следующий:

     
    Lasted edited by : 4 дек 2015
  13. Serjj_777

    Serjj_777

    Регистрация:
    15 янв 2015
    Сообщения:
    15
    Симпатии:
    7
    Подскажите, пожалуйста, AJAX модуль поиска, где есть возможности искать исключительно по выбранной категории, например только по "Услуги". Нигде не могу найти ((