Сделаем настраиваемый краткий поиск для доски объявлений AdsManager 2.6.5 (версия Joomla 1.7)

1. Запускаем PHPadmin http://localhost/phpmyadmin. Выбираем базу данных где стоит Ваша доска объявления(посмотреть имя базы можно так - пункт меню Сайт->Общие настройки->Сервер->База данных. Ниже Префикс базы данных - если у Вас на одной Базе данных установлено несколько сайтов). Находим табличку Префикс_вашей БД_adsmanager_fields. И выполняем запрос который ниже:

ALTER TABLE `Префикс_adsmanager_fields` ADD `search_s` tinyint DEFAULT '0';

Перед изменениями в файлах делайте копии этих файлов. На случай если будет нужно откатится назад.

2. Переходим в каталог   \administrator\com_adsmanager\views\admin\tmpl\ открываем файл editfield.php 
Находим

<tr > 
<td width="20%" <?php echo JText::_('ADSMANAGER_FIELD_SEARCHABLE');? > </td >
<td width="20%" > <?php echo $this- > lists['searchable']; ? > </td >
<td > &nbsp;</td >
</tr >

после них добавляем добавляем следующие строчки  
<tr >
<td width="20%" > <?php echo JText::_('ADSMANAGER_FIELD_SEARCH_S');? > </td >
<td width="20%" > <?php echo $this- > lists['search_s']; ? > </td >
<td > &nbsp;</td >
</tr >

Сохраняем файл.

3. Переходим в другой каталог \administrator\com_adsmanager\views\admin\ открываем файл view.html.php 
Находим строчку в функции function _editfield() приблизительно 540 строка
 $lists['searchable'] = JHTML::_('select.booleanlist', 'searchable', 'class="inputbox" size="1"', @$field->searchable );
После нее добавляем такую строку
$lists['search_s'] = JHTML::_('select.booleanlist', 'search_s', 'class="inputbox" size="1"', @$field->search_s );

4. Переходим в каталог \administrator \com_adsmanager\tables\ открываем файл field.php
Находим строчку var $searchable = null; приблизительно 34 строка и
добавляем после нее var $search_s = null;

5. Переходим в каталог \administrator \com_adsmanager\models\ открываем файл field.php
После функции function getSearchFields добавляем следующий код

 function getSearchFieldsS($catid)
{
  $this->_db->setQuery( "SELECT f.* FROM #__adsmanager_fields AS f ".
"WHERE f.search_s = 1 AND f.published = 1 ORDER by f.ordering" );
$results = $this->_db->loadObjectList();
$fields = array();
foreach ($results as $r ) {
if ($r->catsid == ",-1,")
$fields[] = $r;
else
{
if ($catid != 0) {
$find = ",".$catid.",";
if (strstr($r->catsid, $find))
$fields[] = $r;
}
}
}
return $fields;
}

 Эта функция полный аналог функции getSearchFields только выбираются поля из по другому условию WHERE f.search_s = 1

 6. Переходим в каталог administrator/language/ru-RU/  открываем файл ru-RU.com_adsmanager.ini
добавляем такую строчку ADSMANAGER_FIELD_SEARCH_S="Использовать в кратком поиске? "Или другой текст.

ads Manager 7. Открываем в Доске объявлений Компоненты->Adsmanager->Поля  находим добавленную опцию , выставляем для нужный полей Да. Сохраняем с закрытием и снова открываем, смотрим что все работает.

 

 

8. Переходим в каталог \components\com_adsmanager\views\list\tmpl\ открываем  файл  default.php

Находим

<div class="adsmanager_search_box">
<div class="adsmanager_inner_box">

и ставим следующий код

<div align="left">
 <?php $link = JRoute::_("index.php?option=com_adsmanager&view=result&catid=".$this->catid."&Itemid=".$this->Itemid); ?>
<form action="" method="post">
<table>
<?php 
$fieldmodel = &$this->getModel( "field" );
$searchfields = $fieldmodel->getSearchFieldsS($this->catid);
foreach($searchfields as $fsearch) {
$this->field->showFieldSearch($fsearch,$this->catid, null);
}?>
<td>
<input type="hidden" value="1" name="new_search" />
<input type="submit" value="" />
</td>
</table>
</form>
</div> 

Если Вам нужно вывести в одну строку тогда вызываем  showFieldSearch с таким параметром (Нужно изменить немного функцию):

$this->field->showFieldSearch($fsearch,$this->catid, null, false);

И сделать следующие изменения(Как выводить поля горизонтально в кратком поиске)

Если нужна кнопка сортировки, то помещаем ее код  выше нашего коментария. Код вывода кнопки сортировки такой.

 
 php echo JText::_('ADSMANAGER_ORDER_BY_TEXT');?>
<select name="order" size="1" onchange="jumpmenu('parent',this)">
 <option value="<?php echo JRoute::_("index.php?option=com_adsmanager&view=list"
.$urloptions."&order=&Itemid=".$this->Itemid);?>" <?php if  ($this->order == "0") { echo "selected='selected'"; } ?>>
<option value="<?php echo JRoute::_("index.php?option=com_adsmanager&view=list"
.$urloptions."&order=".$o->fieldid."&Itemid=".$this->Itemid);?>"
<?php if ($this->order == $o->fieldid) { echo "selected='selected'"; } ?>><?php echo JText::_($o->title); ?></option>
<?php
 } 
?>
</select> 

 Смотрим  результат.

Краткий поиск

Чтобы вывести категорию смотрите статью

 Скачать архив с изменеными файлами можно по этой ссылке.  Сайт с этим примером

Comments   

#21 Посмотрел 2012-11-30 05:15
При переходе по сцылке посмотреть пример, аваст закричал ТРОЯНпечалько :o
#20 Guest 2012-11-26 17:35
Здравствуйте в чем может быть проблема? делал все как написано.
Fatal error: Call to undefined method AdsmanagerModel Field::getSearc hFields() in \home\localhost \www\1\componen ts\com_adsmanag er\views\list\v iew.html.php on line 238
Стоит Adsmanager 2.7.0
+4 #19 Рекламодатель 2012-10-16 17:40
А как сделать чтобы на странице результата после поиска тоже отображался краткий поиск?
+4 #18 LS_D 2012-07-13 06:03
Скажите пожалуйста, возможно ли реализовать, чтобы поиск сохранял заполненые поля?
-2 #17 Павел 2012-07-09 11:50
Скажите, как сделать такой же поиск в отдельном модуле? Или как переделать модуль поиска adsmanager 2.6.5 под такой вид?
#16 Guest 2012-04-12 17:30
в файле /com _adsmanager/vie ws/list/tmpl/de fault.php строчка присутствует, видимо нужно прописать в плагине для CB, вот только с php не как, не подскажите, что нужно добавтиь?
#15 Guest 2012-04-12 17:18
я так понимаю, что эта строчка должна быть в плагине adsmanager для Community Builder? пробовал вставить, но ничего не выходит.
#14 Guest 2012-04-12 14:28
Похоже что нет инициализации переменной
у Вас есть такая строчка?
$fieldmodel = &$this->getMode l( "field" );
$searchfields = $fieldmodel->ge tSearchFieldsS( $this->catid);
#13 Guest 2012-04-12 09:01
Забыл написать, что это ошибка только при использлвании Community Builder
#12 Guest 2012-04-12 08:24
Здраствуйте! Сделал все вышеперечисленн ое, работает прекрасно, но при переходе по сылке "Просмотреть все объявления от пользователя" выдает Fatal error: Call to a member function getSearchFields S() on a non-object in /home/cityvlad/ public_html/ric /components/com _adsmanager/vie ws/list/tmpl/de fault.php on line 92
Подскажите пожалуйста как это исправить.
 

 

Последние коментарии

  • Выбор бесплатного хостинга для Joomla

    Alex 09.07.2015 11:57
    Отличный хостинг http://web-times.ru , а главное бесплатный. Есть поддержка Joomla и других CMS.
     
  • Выбор виртуального хостинга для Joomla

    Алекс 30.03.2015 12:24
    Использую http://hostlix.ru/, помоему лучший хостинг для Joomla
     
  • Выбор бесплатного хостинга для Joomla

    Alex 29.03.2015 15:32
    JH5.Studio предлагаем интересным проектам бессрочный, бесплатный хостинг. Каждый сайт получает бесплатно ...
     
  • Убираем лишние надписи

    Анатолий111 28.06.2014 16:59
    Кто-нибудь знает как отключить или удалить строку поиск в шаблоне joomla?
     
  • Настройка FTP доступа в Far managere

    Cthu 03.04.2014 15:23
    не могу соединиться с сервером. в чем причина?