Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » jQuery » Баг плагина для последовательного выбора категорий при добавлении новости?

Баг плагина для последовательного выбора категорий при добавлении новости?


     09.11.2022    jQuery, Общие вопросы по PHP, Модули, Хаки    146

вопрос
Доброго времени!

Есть такой плагин для последовательного выбора категорий при добавлении новостей...



Проблема в том, новость присваивается всем выбранным категория, как основной, так и подкатегории. Например, основная категория Общество (id 1), подкатегория Происшествия (id 2), в БД записываются обе категории, а должна записаться только последняя выбранная (как по умолчанию в DLE, если не выбрана опция Мультикатегории).

Как сделать так, чтобы выбиралась только одна выбранная категория?

Ответа пока нет


5 комментариев

ravchik
Юзер

ravchik - 10 ноября 2022 09:29 -

Сделал костыль в addnews.php
if( $config['allow_catsel'] AND !$config['allow_multi_category'] AND isset($_POST['catlist']) ) {
	$catsel = array();
	foreach ( $catlist as $value ) if($value > 0) $catsel[] = intval($value);
	$catlist = explode( ',', end($catsel) );
}

Уважаемые гуру, подскажите, может есть более правильное и изящное решение?

dj-avtosh
PHP-developer

dj-avtosh - 10 ноября 2022 16:54 -

Я не понимаю, что находится в $catlist, поэтому не понимаю, что происходит в коде.

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

ravchik
Юзер

ravchik - 10 ноября 2022 17:12 -

В addnews.php:
$catlist = $_POST['catlist'];

А в $_POST['catlist'] находится массив выбранных категорий, которые передается из формы добавления новости, например, если выбрана подкатегория 2 из категории 1, то массив такой: [0] => 1 [1] => 2, а если у категории 1 есть подкатегории, но ни одна не выбрана, то массив будет [0] => 1 [1] => -1. Это происходит из-за того, что JS добавляет новые <select name="catlist[]'>,,,</select>,

Кодом из моего коммента выше я пытался сделать так, чтобы в итоге осталось только последнее положительное значение.

dj-avtosh
PHP-developer

dj-avtosh - 10 ноября 2022 18:23 -

$catlist = [current(array_filter(array_reverse($catlist), function($v){return $v>0;}))];

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

ravchik
Юзер

ravchik - 10 ноября 2022 18:37 -

Спасибо! Работает отлично!

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх