Перейти к содержимому

Фотография

Joomla - танцы с бубном. Или пишем свои компонеты под JoomlaРазработка плагинов, модулей и скриптов под Joomla


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1
xstud

xstud
  • Гость
  • 34 сообщений

Короче вчера вечером кое-кому кое-что   :beer:  ударило в голову прикрутить умный поиск к доске объявлений AdsManager 2.9 , Joomla 2.5 . Типа хочется умные подсказки чеб выскакивали  и типа все тут.

И меня  подтянули .. Ну значит лезу я  в инет а там и  нету ни фига...

Пришлось сесть и начать разбираться как работает этот умный поиск и как написать этот чертов плагин для работы  Умного поиcка в AdsManager   самостоятельно.

После пары часов танцев с бубнами сам код плагина получился вот такой  (кидание помидорами приветствуется  :laugh:)  

/plugins/finder/adsmanager/adsmanager.php

 

<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Finder.Content
 *
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE
 */

defined('JPATH_BASE') or die;

jimport('joomla.application.component.helper');

// Load the base adapter.
require_once JPATH_ADMINISTRATOR . '/components/com_finder/helpers/indexer/adapter.php';


class plgFinderAdsmanager extends FinderIndexerAdapter
{
    protected $context = 'Adsmanager';
    protected $extension = 'com_adsmanager';
    protected $layout = 'details';
    protected $type_title = 'Ads';
    protected $table = '#__adsmanager_ads';
    protected $state_field = 'published';
 
  protected function setup()
        {
         return true;
        }


   public function onFinderDelete($context, $table)
   {
      if ($context == 'com_adsmanager.ads')
      {
         $id = $table->id;
      }
      elseif ($context == 'com_finder.index')
      {
         $id = $table->link_id;
      }
      else
      {
         return true;
      }

      return $this->remove($id);
   }

   public function onFinderChangeState($context, $pks, $value)
   {
      if ($context == 'com_adsmanager.ads')
      {
         $this->itemStateChange($pks, $value);
      }

      if ($context == 'com_plugins.plugin' && $value === 0)
      {
         $this->pluginDisable($pks);
      }
   }
      
   protected function index(FinderIndexerResult $item, $format = 'html')
   {
      if (JComponentHelper::isEnabled($this->extension) == false)
      {
         return;
      }

    
      $item->summary = FinderIndexerHelper::prepareContent($item->summary, $item->params);
      $item->url = $this->getURL($item->id, $this->extension, $this->layout);
      $item->route = 'index.php?option=com_adsmanager&view=details&id='.$item->id;
      $item->addTaxonomy('Type', 'Ads');
      $item->addTaxonomy('Language', $item->language);

        // Get content extras.
    FinderIndexerHelper::getContentExtras($item);

        // Index the item.
    FinderIndexer::index($item);
   }

   protected function getListQuery($sql = null)
   {
      $db = JFactory::getDbo();
      $sql = $sql instanceof JDatabaseQuery ? $sql : $db->getQuery(true);
      $sql->select('a.id as id, a.ad_headline as title');
      $sql->select('a.published as state, a.published as access');
      $sql->select('a.ad_text as summary');
      $sql->from('#__adsmanager_ads AS a');
      return $sql;
      
   }

   protected function getStateQuery()
   {
      $sql = $this->db->getQuery(true);
      $sql->select($this->db->quoteName('a.id'));
      $sql->select($this->db->quoteName('a.ad_headline').' as title');
      $sql->select($this->db->quoteName('a.published'). ' AS state');
      $sql->select($this->db->quoteName('a.ad_state'). ' AS access');
      $sql->select($this->db->quoteName('a.ad_text'). ' AS summary');
      $sql->from($this->db->quoteName('#__adsmanager_ads'). ' AS a');
      return $sql;
   }
}


Ну поставил я плагин (Скачать готовый плагин Умный поиск для Adsmanager можно по ссылке   внизу  поста) сделал индексацию.

Поиск пашет  подсказки выдает дебильные типа все как полагается,  но лично меня Вывод результатов стандартного модуля Умного Поиска совсем не устроил...   уж больно кривой-некрасивый он и как то ну совсем не вписывается в дизайн AdsManager   :fie:

Почесал репу ну и думаю ... а фигли тут мудрить надо просто сделать пасер запросов из Модуля Умного поиска на стандартный поиск AdsManager и тогда и Умные подсказки будут и результаты поиска будут выводится в нормальном для Adsmanаger виде.

Сказано сделано. Тут же сварганил файлик search.php и кинул его в папку с плагином /plugins/finder/adsmanager/

Код  search.php  (помидоры приветствуются :rotate: )
 


<?php
$tsearch = $_REQUEST['q'];
$url="/index.php?tsearch=".$tsearch."&option=com_adsmanager&view=list";
header('HTTP/1.1 200 OK');
header('Location: http://'.$_SERVER['HTTP_HOST'].$url);
exit();
?>

А в  модуле Умного Поиска сделал маленький хак.

Файл /modules/mod_finder/tmpl/default.php

Строка 134.  Поменял

 

<form id="mod-finder-searchform" action="<?php echo JRoute::_($route); ?>" method="get">

на
 

<form id="mod-finder-searchform" action="<?php echo JRoute::_('plugins/finder/adsmanager/search.php', false); ?>" method="get">

И заюзал Умный поиск с выводом данных в привычном формате AdsManager


Download Smart Search Plugin для AdsManager можно здесь
 


Сообщение отредактировал xstud: 20.07.2014, 14:55:58

  • 0

#2
xstud

xstud
  • Гость
  • 34 сообщений

Ау Граждане! Помидоры будут?  :confused:

 

 

Неужели ни одиному Гуру  :super:  не хочется сказать свое фи  о моем  коде... :D

 

Пожалейте человека у меня же так и мания величия может развиться :lol: :lol: :lol:


Сообщение отредактировал xstud: 20.07.2014, 17:10:05

  • 0

#3
KingSurf

KingSurf
  • Гость
  • 46 сообщений

Если не нравится что он кривой/некрасивый, не думал что нужно пытаться изобретать велосипед. Вёрстка решила бы твои проблемы.


  • 0

#4
xstud

xstud
  • Гость
  • 34 сообщений

Если не нравится что он кривой/некрасивый, не думал что нужно пытаться изобретать велосипед. Вёрстка решила бы твои проблемы.

 

Ура! Нас заметили ...  теоретика видно из далека... ;)

 

Сразу чувствуется что ты брат прекрасно знаешь в каком виде выдает данные поиск  Adsmanager,  а он, кстати, выдает  с картинками и прочими атрибутами  объявлений, и в каком убогом виде выдает данные модуль Умного Поиска, а он выдает чисто текст, нет конечно можно было бы ... переделать весь модуль Умного поиcка чтобы он выдавал все в таком же виде как и поиск Adsmanager...

 

Но тут сразу возникает вопрос.  :confused:  А порядочно ли будет с заказчика брать дополнительные деньги за полную переработку  модуля если можно получить тот же результат путем кода из 4 строк и за 2 минуты? :idea:

 

Я мыслю так: если можно сделать проще надо делать проще и  решение должно быть простым и эффектным как удар серпом по яйца.   ... :rotate: Помнишь старичка-маньяка  Оккама с приципом  бритвой  по горлу... в смыле что "Не следует привлекать новые сущности без крайней на то необходимости" ... ну так вот я придерживаюсь примерно такого же приниципа...  хотя лично я  предпочитаю фигачить серпом на яйцам...  от бритвы по горлу -  уж сликом много крови :lol: :lol: :lol: ... в смысле что монах франкиcканец экономил мышление, я же экономлю рабоче время ну и, как следствие,  бабло заказчика... :idea:

 

Может оно и не правильно... но мне проще сделать за 2  минуты и  за бесплатно, чем сперва убить кучу времени  на чтобы сделать в стиле "мы простых путей не ищем", а потому еще убить пару дней объясняя заказчику почему он должен за таким образом  потраченное время внести дополнительную оплату...


Сообщение отредактировал xstud: 21.07.2014, 00:41:25

  • 0

#5
Nigrum cygnum

Nigrum cygnum
  • В доску свой
  • 1 201 сообщений

Привет всем! 

 

Может кто сталкивался - есть тема Базаар - http://demo.bonusthe...m/#theme=bazaar

В ней есть скины (вверху) хотел бы по умолчанию оставить одну, а остальные скрыть, не будет ли вариантов сделать это?

спасибо... парралельно сам буду делать, просто чтобы не убивать много времени.


  • 0

#6
Вау Студиявич

Вау Студиявич
  • Гость
  • 18 сообщений

Привет всем! 

 

Может кто сталкивался - есть тема Базаар - http://demo.bonusthe...m/#theme=bazaar

В ней есть скины (вверху) хотел бы по умолчанию оставить одну, а остальные скрыть, не будет ли вариантов сделать это?

спасибо... парралельно сам буду делать, просто чтобы не убивать много времени.

 

Скорей всего уже не нужно, но возможно кому-то пригодится.

 

Нужно прописать в css-стиле шаблона:

.bt_skin_switcher {display:none}

Не самое элегантное решение, но очень просто и быстро. Тема по умолчанию скорей всего задаются в админке.


  • 1

#7
ukk-kz

ukk-kz
  • Гость
  • 16 сообщений

Переходите на Вордпресс и будем счастье вам)


  • 0


Количество пользователей, читающих эту тему: 0

пользователей: 0, неизвестных прохожих: 0, скрытых пользователей: 0

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.