Как удалить все новости из категории в DLE?

12
amilo-ua
На сайте с 12.04.2011
Offline
4
8082

Здравствуйте! Меня интересует один вопросик.

У меня есть готовый дамп базы данных MySQL на движке DLE.

В данной базе есть много категорий, мне не нужных. Новостей очень много, около 47 000.

Хочу как нибудь удалить ненужные категории вместе с новостями. Подскажите, как это сделать. И реально ли это сделать вообще? Метод удаления по 50 новостей - мне не очень подходит. Удалить вручную 40 000 из 47 000 я вряд ли осилю. Спасибо за ответ.

[Удален]
#1

Вы php знаете? В папке engine/inc есть файл massactions.php.

Со строки


elseif( $action == "do_mass_delete" ) {

начинается рассказ про массовое удаление новостей. Если немножко подкрутить и отдать массиву $selected_news id всех новостей из заданной категории, то можно все их корректно удалить.

e16r
На сайте с 03.02.2009
Offline
139
#2
amilo-ua:

Хочу как нибудь удалить ненужные категории вместе с новостями.

А если в админпанели полностью удалить не нужную категорию?

Продам ссылки (http://www.maultalk.com/topic132534.html) - стройка, туризм, авто, женские, Subscribe (http://www.maultalk.com/topic195802.html) Пишу статьи и новости (http://www.maultalk.com/topic75993s0.html)
amilo-ua
На сайте с 12.04.2011
Offline
4
#3
Freon:
Вы php знаете? В папке engine/inc есть файл massactions.php.
Со строки

elseif( $action == "do_mass_delete" ) {

начинается рассказ про массовое удаление новостей. Если немножко подкрутить и отдать массиву $selected_news id всех новостей из заданной категории, то можно все их корректно удалить.

Мне надо удалить все категории вместе с новостями кроме одной. Реально ли так?

amilo-ua добавил 28.06.2011 в 19:29

e16r:
А если в админпанели полностью удалить не нужную категорию?

В Админке есть только такой вариант как удалить категорию, и сразу перенести новости в другую категорию. Что-то похожее на перенос новостей из одной категории в другую.

siv1987
На сайте с 02.04.2009
Offline
427
#4

sql запросом

DELETE FROM dle_post WHERE условия

находите по каким критериям удалять и вперед

[Удален]
#5

Всё реально.:)

Последовательность действий:

а) убеждаемся, что есть резервная копия;)

б) делаем удалятор:


//удалятор_начало
$cats = '1,2,3';//список категорий, из которых надо всё удалить

include_once('engine/api/api.class.php');
$news = $dle_api->take_news($cats, 'id');
foreach($news as $n) {
$ids[] = $n['id'];
}
$selected_news = $ids;
//удалятор_конец

Вставляем его в файл engine/inc/massactions.php после строки

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Удаление новостей
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
elseif( $action == "do_mass_delete" ) {

Перед

foreach ( $selected_news as $id ) {
У меня это где-то 333-я строка.

После этого идём в админку и посылаем комманду на удаление нескольких любых новостей. Вместо них удалятор должен удалить то, что он достанет из базы. А из базы он достанет новости из категорий:

$cats = '1,2,3';//список категорий, из которых надо всё удалить

Так что позаботьтесь о том, чтобы в этом списке оказались нужные Вам категории. Сами категории потом руками удаляются из админки. И удалятор, разумеется, тоже надо убрать из файла massactions.php, чтобы сделать "как было".

Всё, радуемся пустой базе;)

amilo-ua
На сайте с 12.04.2011
Offline
4
#6
Freon:
Всё реально.:)

Последовательность действий:
а) убеждаемся, что есть резервная копия;)
б) делаем удалятор:

//удалятор_начало
$cats = '1,2,3';//список категорий, из которых надо всё удалить

include_once('engine/api/api.class.php');
$news = $dle_api->take_news($cats, 'id');
foreach($news as $n) {
$ids[] = $n['id'];
}
$selected_news = $ids;
//удалятор_конец


Вставляем его в файл engine/inc/massactions.php после строки
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Удаление новостей
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
elseif( $action == "do_mass_delete" ) {


Перед
foreach ( $selected_news as $id ) {
У меня это где-то 333-я строка.
После этого идём в админку и посылаем комманду на удаление нескольких любых новостей. Вместо них удалятор должен удалить то, что он достанет из базы. А из базы он достанет новости из категорий:
$cats = '1,2,3';//список категорий, из которых надо всё удалить

Так что позаботьтесь о том, чтобы в этом списке оказались нужные Вам категории. Сами категории потом руками удаляются из админки. И удалятор, разумеется, тоже надо убрать из файла massactions.php, чтобы сделать "как было".

Всё, радуемся пустой базе;)

Сделал все как написано - эффекта почему-то я не увидел. Наверное руки кривые... :(

[Удален]
#7
amilo-ua:
Сделал все как написано - эффекта почему-то я не увидел. Наверное руки кривые... :(

Без паники:) Сейчас разберёмся. Версия DLE какая?

A2
На сайте с 17.11.2009
Offline
52
#8

Идём в админку, нажимаем редактировать новости, появится список всех новостей, Дальше нажимаем расширенный поиск. Выбираем нужную категорию и нажимаем показать. Ставим галочку и удаляем новости. Затем удаляем категорию.

amilo-ua
На сайте с 12.04.2011
Offline
4
#9
asmakovec2:
Идём в админку, нажимаем редактировать новости, появится список всех новостей, Дальше нажимаем расширенный поиск. Выбираем нужную категорию и нажимаем показать. Ставим галочку и удаляем новости. Затем удаляем категорию.

Если ставим галочку - то отображаются только пачками по 50 штук. А там их 40 700. Мне этот способ не подходит, по скольку таким способом придется удалять все эти новости пол года :(

A2
На сайте с 17.11.2009
Offline
52
#10
amilo-ua:
Если ставим галочку - то отображаются только пачками по 50 штук. А там их 40 700. Мне этот способ не подходит, по скольку таким способом придется удалять все эти новости пол года :(

в расширенном поиске есть параметр "Новостей на страницу:" укажи например 1000. (если хостинг конечно выдержит удаление 1000 новостей)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий