xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Как удалить все материалы определённого типа

Опубликовано в

Пример удаления всех материалов с типом article:

drupal_set_time_limit(600);
$nids = db_select('node', 'n')
  ->fields('n', array('nid'))
  ->condition('n.type', 'article')
  ->execute()
  ->fetchCol();
foreach ($nids as $nid) {
  node_delete($nid);
}
drupal_set_message('Удалено ' . count($nids) . ' нод');

Код можно выполнить с помощью Devel, по адресу devel/php

Похожий способ, только с применением EntityFieldQuery.

Написанное актуально для Drupal 7
Похожие записи

Комментарии RSS

Как поведут себя коментарии к этим нодам в такой ситуации ?

удалятся, как и файлы, синонимы и т.п.

А не подскажете, как можно сделать, чтобы ноды с определенными nid нельзя было удалить из админки ?

Например, есть какие-то ключевые ноды и чтобы пользователь по глупости их не удалил.

Заранее благодарен !

Спасибо большое.

Смущает то, что если у владельца сайта будет доступ к логину администратора (uid=1), а он имеет на это право, то этот хук, как Вы сами пишите, не сработает.

Возможно ли, чтобы, к примеру, если нужно запретить удаление нод с nid 30 и 35, то просто перехватить команды меню 'node/30/delete' и 'node/35/delete', чтобы они не выполнялись? То есть, добавить исключения к команде 'node/*/delete'.

Есть ли такие возможности ?

если у рут-админа есть желание что-то удалить с сайта, то ни один модуль не сможет ему в этом помешать ;) поэтому не давайте владельцу сайта данные от главного админа

Понятно.

То есть, создать ему аккаунт с uid=2 и пусть оттуда работает ...

Так а вот чисто теоретический вопрос задам, если не возражаете ...

Есть ли возможность добавлять исключения к меню с %-символами ? Не было ли у Вас на эту тему поста ?

что за исключения к меню?

Ну, допустим, есть команда меню, прописанная в таблице menu_router как 'node/%/delete'. И при её вызове отрабатывает функция, которая осуществляет удаление ноды.

А как и что нужно сделать, чтобы, команды node/30/delete и node/35/delete обрабатывались как-то иначе , чем стандартная команда node/%/delete ?
То есть, если значения аргумента % равны 30 или 35, то обработчик будет другим - например, дополнять стандартную обработку, либо изменять её, либо вообще ничего не делать.

http://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_menu/7

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании