Posted by cato on November 5, 2010 at 9:33am
Jag bygger ett ehandelssystem och importerar produkter från en extern datakälla tillsammans med bilder som jag kör i en batch som hämtar ner och lägger till dem i noderna. Allting körs på schema med cron och scriptfiler som körs standalone men med drupal_bootstrap
Det ska också köras en daglig uppdatering av noderna och där ska produktbilder kunna bytas ut eller tas bort baserat på lite olika regler. I princip ser koden för att skapa noderna ut så här:
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
module_load_include('inc', 'node', 'node.pages');
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
$node = node_load($nid)
// här gör jag en massa med fälten
$node->field_uppdaterad[0]['value'] = $row['uppdaterad'];
// ... etc etc
// spara nod
content_presave($node);
content_insert($node);
if($node = node_submit($node)){
node_save($node);
echo "Created node ok - nid ".$node->nid."\n";
} else {
echo "Error creating node\n";
}
}
Det som jag inte riktigt har klurat ut är hur man tar bort en bild programmatiskt från ett CCK-fält med multipla värden och det är det jag behöver hjälp med om någon känner sig manad.
Mvh
Christopher Cato
Comments
Detta kanske fungerar (ej
Detta kanske fungerar (ej testat):
for ($i=0; $i<sizeof($node->field_images); $i++) {
if ($node->field_images[$i]['filename'] == 'remove_me.png') {
unset($node->field_images[$i]);
}
}
--
Peter Törnstrand, Happiness
Tja Peter. Det jag inte
Tja Peter.
Det jag inte riktigt hittat svar på är om
unset($node->field_images....)
hookar tillbaka så att filen även raderas från filsystem och från files-tabellen i db eller om den bara ändrar referensen från noden till filen. Systemet jag bygger kommer ha runt en halv miljon produktbilder av olika slag så det är ju onekligen rätt viktigt att hålla ordning i den röran.Försöker också klura ut en lämplig strategi för att dela upp bilderna i olika mappar men har inte kommit fram till något ännu, känns lite sådär att dumpa in 500000 bilder i en mapp, kul att försöka lista dem sen.