Ищу сниппет (php, sql) для удаления нод определенного вида

Главные вкладки

Комментарии

Аватар пользователя Ромка Ромка 6 сентября 2008 в 17:25

<?php
$q = db_query("SELECT nid FROM {node} WHERE type = '%s'", "page");
while($r = db_fetch_object($q))node_delete($r->nid);
?>

Вместо "page" поставь нужный тебе тип.

Аватар пользователя Valeratal Valeratal 6 сентября 2008 в 18:23

спасибо, нашел

<?php
require_once './includes/bootstrap.inc';drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
$type="nodetype";
$query= db_query("SELECT nid FROM {node} AS n WHERE type = '%s'",$type);
while ($row = db_fetch_object($query)) { print_r($row); node_delete($row->nid);
}
?>

nodetype - требуемый вид ноды

Запускал у себя. Удаляет

Аватар пользователя Ромка Ромка 6 сентября 2008 в 23:04

Valeratal wrote:
спасибо, нашел
nodetype - требуемый вид ноды
Запускал у себя. Удаляет

Дык, это тот же код, который привел я, только заточенный под запуск не из Друпала, а из произвольного файла.

Аватар пользователя VladSavitsky VladSavitsky 6 сентября 2008 в 20:55

Это полезный сниппет - подшил и у себя сохранил.
Drupal CookBook - Готовить может каждый!Решение было сохранено на сайте DrupalCookBook.ru:

Удалить документы определенного типа материалов.

Авторы, предложившие решения, также указаны в сохранённой статье.

Аватар пользователя Valeratal Valeratal 7 сентября 2008 в 12:04

Ну да, я примерно понял, что код один и тот же - запрос один и тот же
Просто не очень хорошо понимаю php

В дополнение
С первого раза сниппет не удаляет все (видимо зависит от настроек сервера - не хватате времени) (примерно удаляет 10 страниц (если смотреть по содержимому в админке)
Запускал несколько раз

Аватар пользователя PVasili PVasili 8 сентября 2008 в 22:09

Добавьте к запросу LIMIT N, где N - количество записей. Поиграйте с этим значением, чтобы в таймаут не попадать.