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 - 13: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 - 13: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

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hinfällig - siehe ganz oben

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

Hinfällig - siehe ganz oben die Thema Beschreibung!

  • Anmelden oder Registrieren um Kommentare zu schreiben

PHP als Aktion bei Rules

Eingetragen von Thoor (3678)
am 07.03.2009 - 14: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 ...

  • Anmelden oder Registrieren um Kommentare zu schreiben

rules + imagecache

Eingetragen von stBorchert (6003)
am 09.03.2009 - 09: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

  • Anmelden oder Registrieren um Kommentare zu schreiben

stBorchert schrieb Wenn ich

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

Hinfällig - siehe ganz oben die Thema Beschreibung!

  • Anmelden oder Registrieren um Kommentare zu schreiben

opendir

Eingetragen von stBorchert (6003)
am 09.03.2009 - 10: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

  • Anmelden oder Registrieren um Kommentare zu schreiben

file_delete

Eingetragen von stBorchert (6003)
am 10.03.2009 - 09: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

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi Stefan, Vielen Dank ....

Eingetragen von Thoor (3678)
am 10.03.2009 - 10: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

  • Anmelden oder Registrieren um Kommentare zu schreiben

Klappt leider wieder mal nicht ...

Eingetragen von Thoor (3678)
am 20.03.2009 - 15: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?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 3 Tagen
  • Hey danke
    vor 2 Wochen 4 Tagen
  • Update: jetzt gibt's ein
    vor 2 Wochen 5 Tagen
  • Hallo, im Prinzip habe ich
    vor 3 Wochen 2 Tagen
  • Da scheint die Terminologie
    vor 3 Wochen 2 Tagen
  • Kannst doch auch alles direkt
    vor 4 Wochen 2 Stunden
  • In der entsprechenden View
    vor 4 Wochen 2 Stunden
  • Dazu müsstest Du vermutlich
    vor 4 Wochen 2 Stunden
  • gelöst
    vor 6 Wochen 3 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 4 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20453

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 26 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