[Решено] Расширенный поиск на главной странице

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

rentony

  • Осваиваюсь на форуме
  • ***
  • 93
  • 0
Кто в курсе как вынести расширенный поиск на главную страницу плагина? простое копирование кода из "components/com_adsmanager/views/search/tmpl/deafult.php" не работает :(
« Последнее редактирование: 02.02.2012, 23:07:59 от rentony »

*

rentony

  • Осваиваюсь на форуме
  • ***
  • 93
  • 0
ап... тема всё еще актуальная (

*

rentony

  • Осваиваюсь на форуме
  • ***
  • 93
  • 0
ап

*

Alex89

  • Завсегдатай
  • *****
  • 555
  • 197
  • Joomlaman :)
Цитировать
Кто в курсе как вынести расширенный поиск на главную страницу плагина?
Непонятно о каком плагине идёт речь, если речь о компоненте AdsManager - читай ниже
Цитировать
простое копирование кода из "components/com_adsmanager/views/search/tmpl/deafult.php" не работает
Просто тупой копипаст почти нигде не работает, если не соображать что и куда копипастить...
      Ну а теперь подробнее рассмотрим структуру представлений (views) данного компонента, чтобы в дальнейшем было легче:
После открытия папки views видим несколько подпапок - это и есть так называемые представления, по имени папки сразу становится понятным за что отвечает то или иное представление (требуется начальное знание английского языка). Открываем любую папку представления и видим следующее - файлы view.html.php, index.html, metadata.xml (в зависимости от открытой папки могут отсутствовать файлы index.html, metadata.xml) и подпапку tmpl
      view.html.php - содержит собственно php-код для взаимодействия с шаблоном (интерфесом)
      index.html - служит для защиты от прямого доступа через адресную строку браузера
      metadata.xml - метаданные страницы
      Теперь о папке tmpl. Как ясно из названия это всего лишь сокращение от английского слова template (шаблон), т.е. в файлах этой папки содержится интерфейс взаимодействия с пользователем (собственно html), который тесно связан с файлом view.html.php для вызова объявленных в нём функций!
Надеюсь теперь понятно почему простое копирование не работает!

      Ну а теперь по существу вопроса:
1. Как Вы наверное уже догадались код из components/com_adsmanager/views/search/tmpl/default.php всё-таки нужно скопипастить в components/com_adsmanager/views/front/tmpl/default.php
2. Теперь, чтобы интерфейс наконец-то заработал нужно перенести несколько строк из components/com_adsmanager/views/search/view.html.php в components/com_adsmanager/views/front/view.html.php, а именно:
открываем файл components/com_adsmanager/views/front/view.html.php и находим там такую строку
Код
require_once(JPATH_BASE."/components/com_adsmanager/helpers/general.php");
после неё вставляем такую строку
Код
require_once(JPATH_BASE."/components/com_adsmanager/helpers/field.php");
Идём ниже, находим
Код
function display($tpl = null)
....
$configurationmodel = &$this->getModel( "configuration" );
после этой строки вставляем
Код
$fieldmodel	    = &$this->getModel( "field" );
Опять идём ниже, находим
Код
$this->assignRef('conf',$conf);
после этой строчки вставляем
Код
$searchfields = $fieldmodel->getSearchFields($catid);
$this->assignRef('searchfields',$searchfields);
$field_values = $fieldmodel->getFieldValues();
$plugins = $fieldmodel->getPlugins();
$field = new JHTMLAdsmanagerField($conf,$field_values,"2",$plugins,$this->get("Itemid"),$this->get("baseurl"));
$this->assignRef('field',$field);
$tree = $catmodel->getCatTree();
$this->assignRef('cats',$tree);
Идём в самый конец файла и между последней функцией и закрывающей фигурной скобкой вставляем недостающую функцию
Код
function selectCategories($id, $level, $children,&$catid,$root_allowed,$link,$current_cat_only =0) {
if (@$children[$id]) {
foreach ($children[$id] as $row) {
if (($root_allowed == 1)||(!@$children[$row->id])) {
if ($current_cat_only == 0)
{?>
<option value="<?php echo JRoute::_("$link&catid=".$row->id); ?>" <?php if ($row->id == $catid) { echo "selected='selected'"; } ?>>
<?php echo $level.$row->name; ?>
</option>
<?php
}
else if ($row->id == $catid)
{
echo $level.$row->name;
}
}
$this->selectCategories($row->id, $level.$row->name." >> ", $children,$catid,$root_allowed,$link,$current_cat_only);
}
}
}
Сохраняем, закрываем, проверяем!
« Последнее редактирование: 24.02.2012, 11:29:59 от Alex89 »
Увеличить посещаемость сайта помогут здесь - http://tinyurl.com/kpaprwy
Если помог, ткните "крестик" в репу!

*

rentony

  • Осваиваюсь на форуме
  • ***
  • 93
  • 0
Alex89 cпасибо, будем пробывать)

*

rentony

  • Осваиваюсь на форуме
  • ***
  • 93
  • 0
не было времени всё это проверить, увлекся другой работой над сайтом, сейчас всё сделал - Работает на ура!)) Спасибо еще раз огромнейшее!)

*

mbgr

  • Осваиваюсь на форуме
  • ***
  • 87
  • 11
в какое место вставлять код с файла components/com_adsmanager/views/search/tmpl/default.php в файл components/com_adsmanager/views/front/tmpl/default.php?

*

Diduly

  • Осваиваюсь на форуме
  • ***
  • 48
  • 1
Alex89
1.Все красиво получилось спасибо, одна пичаль как сделать чтобы расш. поиск в каждой категории присутствовал, а не только на главной?
2.Напрягает еще одна вещь, когда выбираешь какую либо категорию тебя со страницы перебрасывает автоматом, можно это побороть?

*

Diduly

  • Осваиваюсь на форуме
  • ***
  • 48
  • 1
Alex89
1.Все красиво получилось спасибо, одна пичаль как сделать чтобы расш. поиск в каждой категории присутствовал, а не только на главной?
2.Напрягает еще одна вещь, когда выбираешь какую либо категорию тебя со страницы перебрасывает автоматом, можно это побороть?
1. Сделал по аналогии с фронтом все работает, только
Код
require_once(JPATH_BASE."/components/com_adsmanager/helpers/general.php");
в файле не присутствует есть
Код
require_once(JPATH_SITE."/components/com_adsmanager/helpers/field.php");
require_once(JPATH_SITE."/components/com_adsmanager/helpers/general.php");
поэтому первый пункт пропустил, может я и не прав но работает.
2. Все еще борюсь....

*

Alex89

  • Завсегдатай
  • *****
  • 555
  • 197
  • Joomlaman :)
Цитировать
когда выбираешь какую либо категорию тебя со страницы перебрасывает автоматом, можно это побороть?
предположительный вариант решения:
после копирования кода из пункта 1 инструкции попробуйте поправить ссылки, т.е. в двух местах заменить
Код
view=search
на
Код
view=front
для главной страницы и на
Код
view=list
для краткого режима (списка объявлений)
Увеличить посещаемость сайта помогут здесь - http://tinyurl.com/kpaprwy
Если помог, ткните "крестик" в репу!

*

lionman

  • Осваиваюсь на форуме
  • ***
  • 40
  • 0
Все сделал как описано. Спасибо большое за помощь. Единственное у меня в расширенном поиске не выбираются категории. В поле Категория, стоит только Все объявления. А больше ничего нету

*

Diduly

  • Осваиваюсь на форуме
  • ***
  • 48
  • 1
Все сделал как описано. Спасибо большое за помощь. Единственное у меня в расширенном поиске не выбираются категории. В поле Категория, стоит только Все объявления. А больше ничего нету
У меня такое в листинге категорий самих, просто стер этот импут чтоб не раздражал, да он и не нужен там если пользователь уже внутри категории.
Цитировать
предположительный вариант решения:
после копирования кода из пункта 1 инструкции попробуйте поправить ссылки, т.е. в двух местах заменить
Код:

view=search

на
Код:

view=front

для главной страницы и на
Код:

view=list

для краткого режима (списка объявлений)
Ммм все осталось на своих местах тоесть также и перепрыгивает с фронта, в общем снес расширенный с фронта, оставил только в категориях листинга оно там как бы нужнее чем во фронте.

*

lionman

  • Осваиваюсь на форуме
  • ***
  • 40
  • 0
У меня такое в листинге категорий самих, просто стер этот импут чтоб не раздражал, да он и не нужен там если пользователь уже внутри категории.

А если к примеру пользователь перейдет во вкладку ВСЕ ОБЪЯВЛЕНИЯ. Там же тоже пропадает поле выбора категории... Или у вас нету ссылки на все объявления?

*

Diduly

  • Осваиваюсь на форуме
  • ***
  • 48
  • 1
А если к примеру пользователь перейдет во вкладку ВСЕ ОБЪЯВЛЕНИЯ. Там же тоже пропадает поле выбора категории... Или у вас нету ссылки на все объявления?
угадал

*

lionman

  • Осваиваюсь на форуме
  • ***
  • 40
  • 0
угадал
Угадать то угадал))), а как сделать чтобы сразу автоматом категория стояла в расширенном поиске при переходе на эту категорию?))))

*

Diduly

  • Осваиваюсь на форуме
  • ***
  • 48
  • 1
Сделал расширенный поиск категориях components\com_adsmanager\views\list\tmpl\.... здесь все менял по тому же принципу, все красиво работает.
Появилась одна проблемка при установке Communtiy Builder при выводе таблицы плагина вот такая ошибка
Код
Warning: Invalid argument supplied for foreach() in \components\com_adsmanager\views\list\tmpl\default.php on line 14

То есть не нравится вот этот код:
Код
		<?php $link = JRoute::_("index.php?option=com_adsmanager&view=result&catid=".$this->catid."&Itemid=".$this->Itemid); ?>
<form action="<?php echo $link ?>" method="post">

<?php
foreach($this->searchfields as $fsearch) {
$this->field->showFieldSearch($fsearch,$this->catid);
}?>
<input type="hidden" value="1" name="new_search" />
<input type="submit" value="<?php echo JText::_('ADSMANAGER_SUBMIT_BUTTON'); ?>" />
</form>
2 варианта думаю:
1-как поправить код поиска?
2-или вырезать это дело из плагина, вот с этим проблема....добавить правильный аргумент вывода для поиска, оно там как бы не нужно, остается только убрать НО где??

*

Diduly

  • Осваиваюсь на форуме
  • ***
  • 48
  • 1
Спрятал форму таким образом
Код
<script language="JavaScript" type="text/JavaScript">
<!--
function jumpmenu(target,obj,restore){
  eval(target+".location='"+obj.options[obj.selectedIndex].value+"'");
  obj.options[obj.selectedIndex].innerHTML="<?php echo JText::_('ADSMANAGER_WAIT');?>";
}
//-->
</script>
<?php $link = JRoute::_("index.php?option=com_adsmanager&view=result&catid=".$this->catid."&Itemid=".$this->Itemid); ?>
<form action="<?php echo $link ?>" method="post">

<?php
            if ($this->catid != 0){
            foreach($this->searchfields as $fsearch)
            $this->field->showFieldSearch($fsearch,$this->catid);
          }
        ?>
<input type="hidden" value="1" name="new_search" />
<input type="submit" value="<?php echo JText::_('ADSMANAGER_SUBMIT_BUTTON'); ?>" />
</form>
Вопрос как теперь спрятать саму кнопку поиск при том же условии если не выбрана категория, а то только она  теперь и вылазит ?
« Последнее редактирование: 03.03.2012, 21:56:55 от Diduly »

*

Diduly

  • Осваиваюсь на форуме
  • ***
  • 48
  • 1
Ля двоешник все спрятал всю форму вместе с дивами во всех объявлениях тоже не отображает
Код
<?php if ($this->catid != 0) { ?>
<div class="module mod-box deepest">
<?php $link = JRoute::_("index.php?option=com_adsmanager&view=result&catid=".$this->catid."&Itemid=".$this->Itemid); ?>
<form action="<?php echo $link ?>" method="post">

<?php
foreach($this->searchfields as $fsearch)
$this->field->showFieldSearch($fsearch,$this->catid);
?>
<input type="hidden" value="1" name="new_search" />
<input type="submit" value="<?php echo JText::_('ADSMANAGER_SUBMIT_BUTTON'); ?>" />
</form>
</div>
<?php } ?>

*

red5

  • Осваиваюсь на форуме
  • ***
  • 25
  • 2
Ребяты... а можно ли расширенный поиск засунуть в модуль? ведь как удобно сразу рядом и поиск и результаты. встречал такой модуль под AdsManager 2.5, а вот под 2.6.5 нету :(

*

Diduly

  • Осваиваюсь на форуме
  • ***
  • 48
  • 1
Можно но не нужно, у меня например сейчас в каждой категории расширенный стоит, сразу поиск результат и объявления...

*

Bukita

  • Новичок
  • *
  • 2
  • 0
Здравствуйте, помогите, пожалуйста, все же вставить расширенный поиск в модуль для AdsManager 2.6.5? мне его нужно отображать на каждой странице, вне зависимости от категорий... Пытаюсь редактировать стандартный модуль поиска, но ничего не получается(
« Последнее редактирование: 14.04.2012, 15:11:24 от Bukita »

*

finan05

  • Захожу иногда
  • **
  • 18
  • 1
Хелп! Подскажите где копать. Поставил адс 2.7, настроил расширенный поиск в категориях, как здесь было описано, работает, но одна проблема и она в принципе, хотя она не только поиска касается, вообщем если в разделе "поля" не выберать "Все объявления" то в поиске, поля появляются без названий, а если выберать, то появляются все поля которым назначен параметр поиска. И соответственно при добавлении объявления вылазят все поля не зависимо от категории.  Кто сталкивался? Подскажите!

*

LS_D

  • Осваиваюсь на форуме
  • ***
  • 155
  • 16
Скажите люди добрые, а  этом методе вывода поиска при обновлении страницы поля сохраняют значение или сбрасываются?

*

nick71

  • Живу я здесь
  • ******
  • 1143
  • 0
  • Сайты любой сложности - обращайтесь
может наглость, но для НЕ кодера можете выложить готовый вариант файлов?
Основная специализация - стандартные сайты на Joomla, но готовы к выполнению работ любой степени сложности, есть специалисты самой высокой квалификации, в т.ч. каталоги и магазины с синхронизацией с 1С. Скайп portall.com.ua Ася 473737041, телефон в Киеве (044) 361-7570

*

LS_D

  • Осваиваюсь на форуме
  • ***
  • 155
  • 16
может наглость, но для НЕ кодера можете выложить готовый вариант файлов?
У меня это вариан почему-то не стал работать (все отображалось, но ничего не искал, мб где-то накосепорил), зато заработал вот этот  (http://www.joomlastart.ru/comp/ads/31-ads), правда я скопипастил и измеменил функцию вывода объявления для фронта, т.е в расширеном виде одна фунцкция формирует таблицы, а в кратком другая.
вот думаю подцепить джаву(для эфекта раскрытия поиска) для функции расширеного поика и вывести в краткий вид.
« Последнее редактирование: 23.08.2012, 20:57:40 от LS_D »

*

alexx2007

  • Осваиваюсь на форуме
  • ***
  • 145
  • 8
Непонятно о каком плагине идёт речь, если речь о компоненте AdsManager - читай нижеПросто тупой копипаст почти нигде не работает, если не соображать что и куда копипастить...
      Ну а теперь подробнее рассмотрим структуру представлений (views) данного компонента, чтобы в дальнейшем было легче:
После открытия папки views видим несколько подпапок - это и есть так называемые представления, по имени папки сразу становится понятным за что отвечает то или иное представление (требуется начальное знание английского языка). Открываем любую папку представления и видим следующее - файлы view.html.php, index.html, metadata.xml (в зависимости от открытой папки могут отсутствовать файлы index.html, metadata.xml) и подпапку tmpl
      view.html.php - содержит собственно php-код для взаимодействия с шаблоном (интерфесом)
      index.html - служит для защиты от прямого доступа через адресную строку браузера
      metadata.xml - метаданные страницы
      Теперь о папке tmpl. Как ясно из названия это всего лишь сокращение от английского слова template (шаблон), т.е. в файлах этой папки содержится интерфейс взаимодействия с пользователем (собственно html), который тесно связан с файлом view.html.php для вызова объявленных в нём функций!
Надеюсь теперь понятно почему простое копирование не работает!

      Ну а теперь по существу вопроса:
1. Как Вы наверное уже догадались код из components/com_adsmanager/views/search/tmpl/default.php всё-таки нужно скопипастить в components/com_adsmanager/views/front/tmpl/default.php
2. Теперь, чтобы интерфейс наконец-то заработал нужно перенести несколько строк из components/com_adsmanager/views/search/view.html.php в components/com_adsmanager/views/front/view.html.php, а именно:
открываем файл components/com_adsmanager/views/front/view.html.php и находим там такую строку
Код
require_once(JPATH_BASE."/components/com_adsmanager/helpers/general.php");
после неё вставляем такую строку
Код
require_once(JPATH_BASE."/components/com_adsmanager/helpers/field.php");
Идём ниже, находим
Код
function display($tpl = null)
....
$configurationmodel = &$this->getModel( "configuration" );
после этой строки вставляем
Код
$fieldmodel	    = &$this->getModel( "field" );
Опять идём ниже, находим
Код
$this->assignRef('conf',$conf);
после этой строчки вставляем
Код
$searchfields = $fieldmodel->getSearchFields($catid);
$this->assignRef('searchfields',$searchfields);
$field_values = $fieldmodel->getFieldValues();
$plugins = $fieldmodel->getPlugins();
$field = new JHTMLAdsmanagerField($conf,$field_values,"2",$plugins,$this->get("Itemid"),$this->get("baseurl"));
$this->assignRef('field',$field);
$tree = $catmodel->getCatTree();
$this->assignRef('cats',$tree);
Идём в самый конец файла и между последней функцией и закрывающей фигурной скобкой вставляем недостающую функцию
Код
function selectCategories($id, $level, $children,&$catid,$root_allowed,$link,$current_cat_only =0) {
if (@$children[$id]) {
foreach ($children[$id] as $row) {
if (($root_allowed == 1)||(!@$children[$row->id])) {
if ($current_cat_only == 0)
{?>
<option value="<?php echo JRoute::_("$link&catid=".$row->id); ?>" <?php if ($row->id == $catid) { echo "selected='selected'"; } ?>>
<?php echo $level.$row->name; ?>
</option>
<?php
}
else if ($row->id == $catid)
{
echo $level.$row->name;
}
}
$this->selectCategories($row->id, $level.$row->name." >> ", $children,$catid,$root_allowed,$link,$current_cat_only);
}
}
}
Сохраняем, закрываем, проверяем!
Спасибо, все здорово, работает. Только появился странный косяк, во фронте пропало количество объявлений в категориях, стоит везде (0) Как побороть?

*

lovivolnu

  • Давно я тут
  • ****
  • 323
  • 8
в какое место вставлять код с файла components/com_adsmanager/views/search/tmpl/default.php в файл components/com_adsmanager/views/front/tmpl/default.php?
подскажите,а то что то ничего не получается.
весь код или только его часть?

*

finan05

  • Захожу иногда
  • **
  • 18
  • 1
на 2.7 все работает, кроме поиска по городам. Стоит плагин городов, отображается в расширенном поиске но по городам не ищет, не в коротком режиме ни в расширенном! И сортировка по городам тоже не работает. Подскажите где копать. Работает все под Joomla 2.5.

*

stepan_fed

  • Осваиваюсь на форуме
  • ***
  • 79
  • 1
ПРОБЛЕМУ РЕШИЛ!
большое спасибо за такую разработку.

я пытаюсь сделать это по list, все вставил, но теперь ошибка:
Parse error: syntax error, unexpected T_STRING in /home/agrobirz/agrobirzha.com/www/components/com_adsmanager/views/list/view.html.php on line 9
вот эта часть кода:

Код
<?php
/**
 * @package AdsManager
 * @copyright Copyright (C) 2010-2011 JoomPROD.com. All rights reserved.
 * @license GNU/GPL
 */

// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die( 'Restricted access'this->getModel( "configuration"  );

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

может кто знает, что за ошибка?
« Последнее редактирование: 06.08.2012, 19:02:55 от stepan_fed »

*

stepan_fed

  • Осваиваюсь на форуме
  • ***
  • 79
  • 1
ПРОБЛЕМУ РЕШИЛ!

Цитировать
Идём в самый конец файла и между последней функцией и закрывающей фигурной скобкой вставляем недостающую функцию
Код
function selectCategories($id, $level, $children,&$catid,$root_allowed,$link,$current_cat_only =0) {
if (@$children[$id]) {
foreach ($children[$id] as $row) {
if (($root_allowed == 1)||(!@$children[$row->id])) {
if ($current_cat_only == 0)
{?>
<option value="<?php echo JRoute::_("$link&catid=".$row->id); ?>" <?php if ($row->id == $catid) { echo "selected='selected'"; } ?>>
<?php echo $level.$row->name; ?>
</option>
<?php
}
else if ($row->id == $catid)
{
echo $level.$row->name;
}
}
$this->selectCategories($row->id, $level.$row->name." >> ", $children,$catid,$root_allowed,$link,$current_cat_only);
}
}
}


а можно попросить помощь? не очень понимаю где именно вставить этот код.
я пробую вставить в list, и файл у меня заканчивается так:
Код
break;
case 'lightbox':
case 'lytebox':
  $document->addCustomTag('<script type="text/javascript" src="'.$this->get("baseurl").'/components/com_adsmanager/lytebox/js/lytebox_322cmod1.3.js"></script>');
  $document->addCustomTag('<link rel="stylesheet" href="'.$this->get("baseurl").'/components/com_adsmanager/lytebox/css/lytebox_322cmod1.3.css" type="text/css" media="screen" />');
  break;
case 'highslide':
$document->addCustomTag('<script type="text/javascript" src="'.$this->get("baseurl").'/components/com_adsmanager/highslide/js/highslide-full.js"></script>');
$document->addCustomTag('<script type="text/javascript">hs.graphicsDir = "'.$this->get("baseurl").'" + hs.graphicsDir;</script>');
$document->addCustomTag('<link rel="stylesheet" href="'.$this->get("baseurl").'/components/com_adsmanager/highslide/css/highslide-styles.css" type="text/css" media="screen" />');
break;
default:
break;

}
}
}
« Последнее редактирование: 06.08.2012, 19:02:35 от stepan_fed »