Наверно многие уже сталкивались с импортом нод и прочего с помощью feeds, он позволяет загружать в моем случае товары, но есть необходимость, чтобы перед загрузкой новых товаров - старые удалялись. Кто как это решал?
апдейт только обновляет существующие, суть в том, что при загрузке нового прайс-листа те товары, которые в прайсе отсутствуют, а на сайте присутствуют - удалялись.
> при загрузке нового прайс-листа те товары, которые в прайсе отсутствуют, а на сайте присутствуют - удалялись.
Не удалялись а становились - "не опубликованными" или как модно писать - "архивными" - это быстрее. А те которые уже есть и в прайсе есть - обновлялись.
Получилось сделать с помощью hook_feeds_before_import, вставил простой код для удаления нод.
function preimport_feeds_before_import($source) {
$query= db_query("SELECT nid FROM {node} AS n WHERE type = 'product'");
foreach ($query as $node) { node_delete($node->nid);
}
}
Вот только медленно это и если будут тысячи товаров то никакой сервер не спасет...
Комментарии
update не подходит ?
апдейт только обновляет существующие, суть в том, что при загрузке нового прайс-листа те товары, которые в прайсе отсутствуют, а на сайте присутствуют - удалялись.
Обновляется быстрее, надо поставить - "не опубликован" и результат будет тот же.
Не совсем вас понял:)
> при загрузке нового прайс-листа те товары, которые в прайсе отсутствуют, а на сайте присутствуют - удалялись.
Не удалялись а становились - "не опубликованными" или как модно писать - "архивными" - это быстрее. А те которые уже есть и в прайсе есть - обновлялись.
Ну это я понял) а как сделать разом все эти товары "не опубликованными"?
Можно кодом, можно попробовать разные добавки к feed типа https://drupal.org/project/feeds_tamper
да, придется вставлять код. осталось понять какой и куда)
нужно, чтобы перед загрузкой удалялись все материалы одного типа.
Получилось сделать с помощью hook_feeds_before_import, вставил простой код для удаления нод.
function preimport_feeds_before_import($source) {
$query= db_query("SELECT nid FROM {node} AS n WHERE type = 'product'");
foreach ($query as $node) { node_delete($node->nid);
}
}
Вот только медленно это и если будут тысячи товаров то никакой сервер не спасет...
Я и говорил, что удалять медленно.
а как то можно отделить обновленные товары от необновленных? чтобы необновленные отправить в "не опубликованно"
Можно по дате обновления