Есть такой плагин для последовательного выбора категорий при добавлении новостей...
query("SELECT * FROM " . PREFIX . "_category WHERE parentid = $pid");
if ($res->num_rows) while ($r = $res->fetch_object()) $data[] = $r;
break;
case 'load-object':
$id = empty($_GET['objectID'])? 0 : $_GET['objectID'];
$res = $db->query("SELECT * FROM dle_category WHERE id = $id");
if ($res->num_rows) $data = $res->fetch_object();
}
if ($data) echo json_encode($data,true);
function TSEL(params) {
this.SC = 0;
this.IDSobj = $('#' + params.selectorID).get(0);
this.IDRobj = $('#' + params.resultID).get(0);
this.url = params.ajaxUrl;
this.buildSelect = function(data) {
var id = 's' + this.SC;
this.SC++;
$(this.IDSobj).append('<div id=" + id + " style="margin-bottom:3px;"><select name="catlist[]"><option value="-1">-- Выберать --</option></select></div>');
var SL = $(this.IDSobj).find('#' + id + ' select').get(0);
i = 1;
for (index in data) {
if (data[index].id) SL.options[i] = new Option(data[index].name, data[index].id);
i++;
}
TL = this;
$(SL).change(function() {
TL.doChild(this);
})
$(this.IDRobj).html('');
}
this.getBrunch = function(parentID) {
TL = this;
$.ajax({
url: this.url,
data: { mod:'catselect', commmand:'load-brunch', parentID:parentID},
success: function(data, textStatus, jqXHR) {
if (data) {
var data = JSON.parse(data);
TL.buildSelect(data);
}
}
})
}
this.getResult = function(id) {
TL = this;
$.ajax({
url: this.url,
data: { mod:'catselect', commmand:'load-brunch', parentID:parentID},
success: function(data, textStatus, jqXHR) {
if (data) var data = JSON.parse(data);
}
})
}
this.doChild = function(selectObj) {
var found = false;
$(this.IDSobj).children().each(function(index, element) {
if (found) $(element).remove();
else if (element == $(selectObj).parent().get(0)) found = true;
})
$(this.IDRobj).html('');
var id = parseInt($(selectObj.options[selectObj.selectedIndex]));
if (id) this.getResult(id);
else if (selectObj.value != -1) this.getBrunch(selectObj.value);
}
this.getBrunch(0);
}
$(function(){
new TSEL({
selectorID:"selector",
resultID:"result",
ajaxUrl:"/engine/ajax/controller.php"
})
})
Проблема в том, новость присваивается всем выбранным категория, как основной, так и подкатегории. Например, основная категория Общество (id 1), подкатегория Происшествия (id 2), в БД записываются обе категории, а должна записаться только последняя выбранная (как по умолчанию в DLE, если не выбрана опция Мультикатегории).