Добрый день!
А не пробовали прикрутить к Adsmanager выбор категории каскадном виде с помощью AJAX и библиотеки JQuery:
Такая структура категорий на сайте:
Категория 1
-- Подкатегория 1 категории 1
-- Подкатегория 2 категории 1
-- Подкатегория 3 категории 1
Категория 2
--Подкатегория 1 категории 2
--Подкатегория 2 категории 2
Категория 3
--Подкатегория 1 категории 3
---Подподкатегория 1 подкатегории 1
---Подподкатегория 1 подкатегории 2
--Подкатегория 2 категории 3
................. и так далее
есть определенные наработки в этом направлении
Вставка в файл Adsmanager.html.php подача объявления строка 1486 где-то около:
<script src="components/com_adsmanager/ajax/jquery-1.3.2.js" type="text/javascript"></script>
<script language="JavaScript" type="text/JavaScript">
/* Функция отсылает ajax-запрос */
function getCategory(pcategory, level) {
$.ajax({
url: 'components/com_adsmanager/ajax/list.php',
type: 'POST',
data: 'pcategory='+ pcategory +'&level='+ level,
dataType: 'JSON',
timeout: 5000,
beforeSend: function(){
// Блокируем все необходимы select`ы
$('select[name^=category_]').attr('disabled', 'disabled');
},
complete: function(){ // Снимаем блокировку
$('select[name^=category_]').removeAttr('disabled');
},
success: function(response){
var data = eval('('+ response +')');
// Если количество категорий в ответе 0 либо не определено
if(data.count === 'undefined' || data.count == 0) {
// просто удаляет старшие уровни каскада
$('select[name=category_'+ (data.level - 1) +']')
.clearField('select[name^=category]')
.clearField('span');
return false;
}
if( $('select[name=category_'+ data.level +']').length ) {
// Если select этого уровня уже существует
// мы должны удалить все старшие select`ы,
// очистить старые данные и заполнить новым контентом
$('select[name=category_'+ data.level +']')
.clearField('select[name^=category]')
.clearField('span')
.fillSelect(data.item);
} else {
// Если select этого уровня не существует,
// мы должны его создать и заполнить данными
$('#categories select:last').after('<span><br style="margin-bottom:10px; margin-top:10px;"/></span> <select name="category_'+ data.level +'" class="adsmanager_required"></select>');
$('select[name=category_'+ data.level +']').fillSelect(data.item);
}
/* Сбрасываем старый обработчик */
$('select[name=category_'+ data.level +']').unbind('change');
/* Вешаем новый */
$('select[name=category_'+ data.level +']').change(function(){ return clickEvent($(this)); });
return false;
},
error: function(){
// Сообщаем пользователю, что произошла ошибка
$('#msg').append('<p>Some error with categories. Please, try later
</p>');
return false;
}
});
}
/* Добавляем обработчик событий при изменении пункта списка */
function clickEvent(select)
{
var id = select.find('option:selected').attr('value');
/**
* Если id=-1, значит выбран пункт "Выбор.."
* значит мы должны просто очистить старшие списки
*/
if (id == '-1') {
select.clearField('select[name^=category]').clearField('span');
return false;
}
var level = parseInt(select.attr('name').replace('category_', '')) + 1;
return getCategory(id, level);
}
$(document).ready(function(){
/* Развешиваем обработчики */
$('select[name^=category] option').live("click", function(){
var select = $(this).parents('select');
var level = parseInt(select.attr('name').replace('category_', '')) + 1;
return getCategory(select.find('option:selected').attr('value'), level);
})
/* Получаем список категорий */
getCategory(0, 0);
});
</script>
<div id="categories">
<select name="category_0" class='adsmanager_required' onchange="jumpmenu('parent',this)"><span></span></select>
</div>
плюс в директории компонента создаем директорию AJAX и кидаем туда два прикрепленных файла:
list.php - обработчик (необходимо прописать базу данных и логин с пассом для доступа к базе данных)
jquery-1.3.2.js.php - переименовать в js перед копированием - непопиленная библиотека (нужно убрать ненужные функции и сжать)
теперь при по подаче у нас будет выборка из категорий в виде каскадных списков, но нужно еще сделать чтобы эти списки были активными!!!
Если есть профи, может глянут и помогут адаптировать сие чудо под Adsmanager???
[вложение удалено Администратором]