Hur tar jag bort en bild från ett cck-fält programmatiskt?

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
cato's picture

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

Peter Törnstrand's picture

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

cato's picture

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.