Пример удаления всех материалов с типом 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
Написанное актуально для
Drupal 7
Похожие записи
- Добавить своё действие над сущностью в bulk operations
- Добавить своё действие над сущностью в contextual links
- Добавить своё действие над сущностью в operations links
- Добавляем на страницу управления отображением материала поля "Заголовок" и "Дата создания"
- Добавить вкладку/таб/локальную-задачу/local-task для определённого типа материала
Комментарии
Как поведут себя коментарии к этим нодам в такой ситуации ?
удалятся, как и файлы, синонимы и т.п.
А не подскажете, как можно сделать, чтобы ноды с определенными nid нельзя было удалить из админки ?
Например, есть какие-то ключевые ноды и чтобы пользователь по глупости их не удалил.
Заранее благодарен !
http://xandeadx.ru/blog/drupal/562
Спасибо большое.
Смущает то, что если у владельца сайта будет доступ к логину администратора (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…
Если в базе будет десятки тысяч записей и за 600 секунд не успеет всё удалиться, ничего не случится? Можно повторно будет выполнять скрипт пока вся база не очиститься?
можно, но лучше пользуйтесь views bulk operations
При удалении появляется ошибка PDOException Object ERROR: null value in column "node_title" violates not-null constraint
Зашел в эти ноды, у них заголовок пустой. База древняя, всё могло быть.
Вопрос, как принудительно сказать друпалу, чтобы их всё равно удалял?
Добавить комментарий