Кто в курсе как вынести расширенный поиск на главную страницу плагина?
Непонятно о каком плагине идёт речь, если речь о компоненте 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);
}
}
}
Сохраняем, закрываем, проверяем!