Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module ›

RULES mit Imagecache - Löschregeln für Original Dateien per PHP klappen nicht

Eingetragen von Thoor (3678)
am 07.03.2009 - 14:10 Uhr in
  • Module
  • Drupal 6.x

Nachdem ich vor einigen Tagen das Tutorial zu Bildgößen geschrieben habe, hat stBorchert ja auf die Möglichkeit hingewiesen, daß man mit seiner vorgestellten Erweiterung die Ursprungsbilder löschen könnte. Finde ich eine sehr gute Idee, da einige wenige hochgeladenen Bilder ja einen ganzen Webspaceaccount ausnutzen können.

Ich habe mich also mal an die Umsetzung gewagt. Hier mein aktuelles Vorgehen ( STAND 20.03.2009 ):

RULES installiert
Die RULES Integration ( http://drupal.org/files/issues/376531_imagecache.rules_.inc_.txt ) als imagecache.rules.inc in den Modulordner sites\all\modules\imagecache eingefügt

Folgende Regel erstellt: Anrissbilder - Originale löschen

Neue Regel: Nach dem speichern von neuem Inhalt

Bedingung: keine

2 Aktionen hinzugefügt:

1. Aktion: Imagecache - Execute Preset
- Feld: field_anrissbild
- Select the name of the preset to execute: anrissbild_teaser
- Reihenfolge: 0

2. Aktion: Benutzerdefinierten PHP Code ausführen
- Code: if (isset($node->field_anrissbild[0]['filepath'])) {
file_delete($node->field_anrissbild[0]['filepath']);
}
- Reihenfolge: 5 ( auch -5 versucht ... keine Änderung )

------------------------

Tja ... nur ich habe schon alle möglichen Kombinationen versucht, es klappt keine so richtig. Mit der oben beschriebenen Regel wird mir das Bild kpl. gelöscht. Aus den Pfaden sites/default/files/anrissbilder und auch aus sites/default/files/imagecache/anrissbild_teaser/anrissbilder

Da es ja eigentlich klappt, wird das wohl wieder ein leidiges PHP Problem sein, dass ich leider nicht kann. Jemand nen Tipp, wie ich die PHP Aktion anzupassen habe, damit mein Vorhaben klappt? Ich möchte letztendlich erreichen, daß die upgeloadeten Bilder unter sites/default/files/anrissbilder gelöscht werden und nur noch die Bilder unter sites/default/files/imagecache/anrissbild_teaser/anrissbilder nach dem Eintragen erhalten bleiben.

Nötige Pfade gibts einzusehen unter: http://www.steeldart.org/dart/pferd

Ich wäre jedem verbunden, der mir bei dem Problem behilflich sein könnte! Danke

‹ Bei bestimmten Inhaltstypen keine Menueinstellungen anzeigen Embedded Media Field - Filme nachladen, aber wie? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Rules

Eingetragen von stBorchert (6003)
am 07.03.2009 - 14:39 Uhr

Moin!
Kann sein, dass ich jetzt etwas faösch verstehe. Die Originalbilder werden auch mit meiner Rules-Integration weiterhin im Standardordner gespeichert. Ich lösch die dann nur automatisch mit einer weiteren Regel.

 Stefan

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hinfällig - siehe ganz oben

Eingetragen von Thoor (3678)
am 20.03.2009 - 16:29 Uhr

Hinfällig - siehe ganz oben die Thema Beschreibung!

thoor - Thomas Ortner
Drupal 7 Screencasts in deutsch!

  • Anmelden oder Registrieren um Kommentare zu schreiben

PHP als Aktion bei Rules

Eingetragen von Thoor (3678)
am 07.03.2009 - 15:35 Uhr

Hmm leide rnichts mehr gehört, wegen meiner erstellten Regel oben, aber ich habe es jetzt mal mit folgendem PHP Code als weitere Aktion bei meiner Regel versucht:

$ordnername = "sites/default/files/";
if (is_dir($ordnername)) {
if ($dh = opendir($ordnername)) {
while (($file = readdir($dh)) !== false) {
if ($file!="." AND $file !="..") {
unlink("sites/default/files/$file");
}
}
closedir($dh);
}
}

Dieser Code löscht mir zwar die Einzeldateien aus meinem Verzeichnis, aber es gibt dann diverse Fehlermeldungen wegen der anderen Ordner im Verzeichnis.

Kann mir jemand nen Tip geben, wie die PHP Anweisung auszusehen hat, damit die Dateien unter sites /default/files ohne Fehler gelöscht werden? Ich bin leider nur rudimentär in Sachen PHP bewandert ...

thoor - Thomas Ortner
Drupal 7 Screencasts in deutsch!

  • Anmelden oder Registrieren um Kommentare zu schreiben

rules + imagecache

Eingetragen von stBorchert (6003)
am 09.03.2009 - 10:17 Uhr

Moin!
Jetzt musste ich doch selbst erstmal nachschauen, wie ich das gemacht hatte.
Also, ich hatte mir für imagecache zwei Presets angelegt, "display" und "thumb". Diese Presets legen ihre erzeugten Bilder dann in /sites/default/files/imagecache/display bzw. /sites/default/files/imagecache/thumb ab.
Dann habe ich eine neue Regel (unter "Triggered Rules") angelegt:

* Event: Content is going to be saved
* Actions
  - Execute preset 'display'
    o Arguments: "Content: Saved content"
    o Preset: display
  - Execute preset 'thumb'
    o Arguments: "Content: Saved content"
    o Preset: thumb

Tja und die Löschen-Regel finde ich gerade nicht bei den Installationen auf dem Rechner hier. Da muss ich heute Abend nochmal zu Hause schauen.
Wenn ich mich richtig erinnere, hatte ich einfach aus $node den entsprechenden Eintrag mit dem Pfad zum hochgeladenen Bild herausgesucht und dann ein unlink() auf diesen Pfad gemacht.
Nichts Wildes also.

hth,

 Stefan

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

stBorchert schrieb Wenn ich

Eingetragen von Thoor (3678)
am 20.03.2009 - 16:30 Uhr

Hinfällig - siehe ganz oben die Thema Beschreibung!

thoor - Thomas Ortner
Drupal 7 Screencasts in deutsch!

  • Anmelden oder Registrieren um Kommentare zu schreiben

opendir

Eingetragen von stBorchert (6003)
am 09.03.2009 - 11:53 Uhr

Ah, moment. Jetzt seh ich das erst. Was machst Du denn da mit opendir()?
Das benötigst Du doch überhaupt nicht. Lass Dir mal spassenshalber in einer neuen Aktion ("execute custom php") nach den Bildverkleinerungsaktionen einfach den Inhalt von $node ausgeben.

<?php
drupal_set_message
('<pre>'. print_r($node, 1) .'</pre>');
?>

Dann siehst Du den Pfad der Originaldatei und kannst diese dann über das Node-Objekt mit unlink() löschen.
In etwa so:
<?php
if ($node['field_myimage']['path']) {
 
unlink($node['field_myimage']['path']);
}}
?>

hth,

 Stefan

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

file_delete

Eingetragen von stBorchert (6003)
am 10.03.2009 - 10:37 Uhr

Moin!
Hab jetzt nochmal geschaut:

<?php
if (isset($node->field_picture[0]['filepath'])) {
 
file_delete($node->field_picture[0]['filepath']);
}
?>

Das als neue Regel mit "execute custom PHP code" und schon wird das Original gelöscht.

 Stefan

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi Stefan, Vielen Dank ....

Eingetragen von Thoor (3678)
am 10.03.2009 - 11:30 Uhr

Hi Stefan,

Vielen Dank .... werde ich dann mal in Kürze ausprobieren und dann hoffentlich ne Erfolgsmeldung verkünden :-)

-------------------------------------
Öfter mal was neues ... warum nicht mal DRUPAL :-) Meinen "Drupal Kampf" als Anfänger schildere ich mal unter http://www.thoor.de

thoor - Thomas Ortner
Drupal 7 Screencasts in deutsch!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Klappt leider wieder mal nicht ...

Eingetragen von Thoor (3678)
am 20.03.2009 - 16:44 Uhr

... klappt ( wie zu erwarten ) natürlich nicht. Ich habe ein Imagefield: field_anrissbild

Pfade:
Pfad für die Uplodas: sites/default/files/anrissbilder
Pfad für Imagecache: sites/default/files/imagecache/anrissbild_teaser/anrissbilder

Folgende Regeln habe ich ausprobiert, um die Originale unter sites/default/files/anrissbilder gelöscht zu bekommen:

if (isset($node->field_anrissbild[0]['filepath'])) {
file_delete($node->field_anrissbild[0]['filepath']); }

Ergebnis - löscht alles

if (isset($node->field_anrissbild[0]['sites/default/files/anrissbilder'])) {
  file_delete($node->field_anrissbild[0]['sites/default/files/anrissbilder']);}

Ergebnis - löscht nichts

if (isset($node->field_anrissbild[0]['sites/default/files/anrissbilder/'])) {
  file_delete($node->field_anrissbild[0]['sites/default/files/anrissbilder/']);}

Ergebnis - löscht ebenfalls nichts

Es wird doch ( ausser stBorchert :-)) noch jemanden hier geben, der mir den richtigen PHP Befehl verraten können - oder?

thoor - Thomas Ortner
Drupal 7 Screencasts in deutsch!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Konto löschen, wie? (Drupalorg/Drupalcenter)
  • Wie 'saubere' Dateinamen bei Upload erzwingen?
  • Modul lässt Website anstürzen
  • Showroom
  • rename admin paths - Probleme mit Modul - Alterantive?
  • Probleme mit Installation voa COMPOSER
  • Drupal- Vor- und Nachteile
  • Text Editor verschwunden
  • Wie URL Alias für Entity in Drupal 9 erstellen?
  • in View zwischen Felder einer Node filtern
  • HTML-Code funktioniert nicht
  • Webform, Condtional Logik, Kontrollkästchen
Weiter

Neue Kommentare

  • Hallo, bitte löscht meinen
    vor 11 Stunden 44 Minuten
  • Schau mal hier
    vor 16 Stunden 56 Minuten
  • Das Modul ist ja ganz schön,
    vor 3 Tagen 16 Stunden
  • Modul Purge
    vor 4 Tagen 10 Stunden
  • Nö
    vor 4 Tagen 18 Stunden
  • Manuell aus der Datenbank löschen
    vor 4 Tagen 18 Stunden
  • Bots ... auf Abstand
    vor 5 Tagen 10 Stunden
  • Cache vs Browser
    vor 5 Tagen 10 Stunden
  • h2b2 schrieb Nach einigen
    vor 1 Woche 18 Stunden
  • Vor- und Nachteile
    vor 1 Woche 20 Stunden

Statistik

Beiträge im Forum: 247802
Registrierte User: 19535

Neue User:

  • Chrisvek
  • RebeccaBeils
  • rogerfk18

» Alle User anzeigen

User nach Punkten sortiert:
wla9209
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3845
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 2 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association