Anleitung Artikelbilder nicht phsyisch löschen, sondern nur Referenzierung aufheben

Thema wurde von Dominik Späte, 4. September 2024 erstellt.

  1. Dominik Späte
    Dominik Späte Erfahrener Benutzer
    Registriert seit:
    16. Oktober 2018
    Beiträge:
    1.251
    Danke erhalten:
    1.141
    Danke vergeben:
    391
    #1 Dominik Späte, 4. September 2024
    Zuletzt bearbeitet: 4. September 2024
    Quick & Dirty Lösung für:

    Man kopiert einen Artikel, löscht beim neuen Artikel die Bilder raus und schon steht auch der alte Artikel ohne Bilder da.

    Datei:
    admin/includes/modules/set_product_image_data.inc.php

    2x diese Zeile auskommentieren:

    Code:
    $productWriteService->deleteProductImage($fileName);
    Also z.b. so:

    Code:
    //~ $productWriteService->deleteProductImage($fileName);
     
  2. DJ-Checkpoint
    DJ-Checkpoint Erfahrener Benutzer
    Registriert seit:
    18. Juli 2011
    Beiträge:
    56
    Danke erhalten:
    6
    Danke vergeben:
    35
    Hallo Herr Späte,

    bei mir hat es in einem ersten Test so funktioniert. Vielen lieben Dank! So war es ja am Ende relativ leicht. Stellt sich die Frage, warum diese Zeile in der admin/includes/modules/set_product_image_data.inc.php verankert ist? Wenn die diesen Fehler verursacht, braucht man sie eigentlich nicht.
     
  3. Dominik Späte
    Dominik Späte Erfahrener Benutzer
    Registriert seit:
    16. Oktober 2018
    Beiträge:
    1.251
    Danke erhalten:
    1.141
    Danke vergeben:
    391
    Super, freut mich, vielen Dank für die Rückmeldung!
     
  4. Christian Mueller
    Christian Mueller Beta-Held
    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.824
    Danke erhalten:
    981
    Danke vergeben:
    312
    Weil es kein Fehler ist. Es ist im Shop eigentlich nicht vorgesehen, daß zwei Artikel auf das selbe Bild zugreifen. Daher wird beim Löschen auch wirklich gelöscht und nicht nur ein anderer Bildname in der Datenbank eingetragen.

    It's not a bug. It's a feature.
     
  5. DJ-Checkpoint
    DJ-Checkpoint Erfahrener Benutzer
    Registriert seit:
    18. Juli 2011
    Beiträge:
    56
    Danke erhalten:
    6
    Danke vergeben:
    35
    Hallo Christian,

    Vielleicht zum Verständnis: Ich möchte nicht, dass zwei Artikel auf das selbe Bild zugreifen. Ein Artikel soll dupliziert werden, um die meisten Voreinstellungen zu übernehmen und so Zeit und Arbeit zu sparen. Im Anschluss werden dem neuen Artikel dann auch neue (andere) Bilder hinzugefügt. In diesem Moment werden dann aber die Bilder des ursprünglichen Artikels gelöscht, obwohl dieser ja dupliziert wurde und eigentlich nichts mehr mit dem neuen Artikel zu tun hat. Und das verstehe ich einfach nicht.
     
  6. Christian Mueller
    Christian Mueller Beta-Held
    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.824
    Danke erhalten:
    981
    Danke vergeben:
    312
    Ja, das ist dann tatsächlich ein Fehler. Im Grunde müsste in der Datenbank geprüft werden, daß der Bildname nur einmal vorhanden ist. Nur dann dürfte er gelöscht werden.
     
  7. Nitron
    Nitron Mitglied
    Registriert seit:
    7. Januar 2022
    Beiträge:
    23
    Danke erhalten:
    5
    Danke vergeben:
    43
    Wenn man bei dem neuen, kopierten Artikel nur auf das "X" geht, und dann Speichert/Aktualisiert, wird das Bild bei dem Artikel entfernt, ohne, dass es gelöscht wird.
    Nur wenn man den Haken bei "löschen" setzt, wird das Bild physisch gelöscht und eben auch beim Original-Artikel entfernt
    upload_2024-9-4_18-56-10.png
     
  8. Dominik Späte
    Dominik Späte Erfahrener Benutzer
    Registriert seit:
    16. Oktober 2018
    Beiträge:
    1.251
    Danke erhalten:
    1.141
    Danke vergeben:
    391
    Das hatte ich vorab schon ausprobiert. Natürlich glaube ich Dir, dass das bei Dir im Shop so funktioniert, wie Du schreibst. Bei mir aber nicht:

     
  9. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    14. Juni 2018
    Beiträge:
    1.671
    Danke erhalten:
    285
    Danke vergeben:
    1.109
    #9 Anonymous, 5. September 2024
    Zuletzt bearbeitet: 5. September 2024
    Wir laden einfach direkt ein neues Artikelbild hoch, so spart man sich sowohl das Löschen als auch den "X"-Button. Einfach ein neues Bild hochladen und auswählen. Das hat bei uns immer funktioniert, ohne dass sich etwas am Originalartikel, der kopiert wurde, geändert hat.

    Das mit dem "X"-Button funktioniert, jedoch nicht beim ersten und einzigen Artikelbild, wie in Herrn Spätes Video gezeigt. Wenn der Originalartikel z. B. 3 Bilder hat, dann einfach das erste durch ein neues ersetzen und bei den verbleibenden zwei funktioniert die "X"-Funktion dann auch und das Bild wird einfach entfernt und nicht gelöscht.

    Noch ein Tipp: Sollte man gerade kein Bild für den neuen Artikel zur Hand haben, diesen aber trotzdem schon anlegen wollen, erstellt euch einmalig ein "Bild demnächst verfügbar"-Bild als JPEG und verwendet dieses. Der Shop/Artikel benötigt immer ein Bild, sonst lässt es sich nicht speichern.
     
  10. Nitron
    Nitron Mitglied
    Registriert seit:
    7. Januar 2022
    Beiträge:
    23
    Danke erhalten:
    5
    Danke vergeben:
    43
    Ach krass. Ich habe es eben noch einmal probiert. Hat (erneut) bei mir geklappt. Ich habe den Cloudshop Gambio Version: v4.9.4

    Hast du den Haken "als Artikelbild verwenden" mal zusätzlich raus genommen?
     
  11. claudiaangerer
    claudiaangerer Erfahrener Benutzer
    Registriert seit:
    30. Juni 2011
    Beiträge:
    85
    Danke erhalten:
    13
    Danke vergeben:
    38
    Grüß dich Dominik.

    Funktioniert das auch wenn man z.B. bei mehreren Artikeln das gleiche Bild benutzt und dann bei nur 1 Atikel entfernen möchte?

    lg claudia
     
  12. Dominik Späte
    Dominik Späte Erfahrener Benutzer
    Registriert seit:
    16. Oktober 2018
    Beiträge:
    1.251
    Danke erhalten:
    1.141
    Danke vergeben:
    391
    Ja, eben probiert, ändert nichts. Ich gehe davon aus, dass @DrGuu 's Ausführungen zutreffen bzgl. ersten und einzigen Artikelbild, wie ich überhaupt herzlich "Danke" sage für die Beschreibung des Workarounds!

    Hi Claudia :) Ja, das sollte genau das gleiche Szenario sein, es also auch funktionieren, dass das Bild bei den übrigen Artikeln weiterhin angezeigt wird.
     
  13. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    22. Juli 2021
    Beiträge:
    170
    Danke erhalten:
    17
    Danke vergeben:
    56
    Wir bauen gerade eine Schnittstelle zwischen WaWi und Gambio.
    Dabei ist uns aufgefallen, dass es mit den Artikelbildern viele Fallstricke. So funktioniert die neue Rest-Api V3 mit den Bildern fast gar nicht. Da gibt es nur Probleme. Gerade auch dann, wenn man einen Artikel ein neues Bild zuweisen möchte.
    In der V2 geht es, aber ohne Unterordner der Artikelbilder.
    Wie sind jetzt zu dem Entschluss gekommen, das wir alle Artikelbilder im Hauptordner Original-Images anlegen und kein Artikelbild gelöscht wird, wenn ein Artikel ein neues Bild bekommen soll.
    Wir werden das so lange handhaben bis Gambio das endlich auf die Kette bekommt. Die Infos dazu haben sie von uns schon.
     
  14. Nitron
    Nitron Mitglied
    Registriert seit:
    7. Januar 2022
    Beiträge:
    23
    Danke erhalten:
    5
    Danke vergeben:
    43
    Ja, habe ich gerade noch mal getestet. Bilder 2-5 verschwinden auf diesem Wege (ohne beim Original-Artikel gelöscht zu werden) Nur das letzte Bild bleibt. Dieses dann ohne Löschen zu ersetzen, halte ich für akzeptabel
     
  15. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    28. Dezember 2020
    Beiträge:
    403
    Danke erhalten:
    205
    Danke vergeben:
    68
    #15 Anonymous, 7. Oktober 2024
    Zuletzt bearbeitet: 8. Oktober 2024
    Hallo Dominik,
    hast du vielleicht auch eine Quick & Dirty Lösung für mich?
    Sobald ich im Artikel irgend etwas ändere wie z.B. Artikel-Menge, erhalte ich immer 4 solcher Warnungen:
    Code:
    2024-10-07 18:10:49 WARNING: Undefined array key "image_delete"
    session-67042237680127.50018183
    code:
    2
    file:
    /var/www/web328/html/Shop3/admin/includes/modules/set_product_image_data.inc.php
    line:
    190
    context:
    code snippet:
    │          {
    │              // Skips the current image if the image is deleted and no new image is uploaded instead
    ├─             if(is_array($_POST['image_delete']) && in_array($_POST['image_original'][$index], $_POST['image_delete']) && !isset($uploadedImages[$imageNameFromInput]))
    │              {
    │                  continue;
    trace:
    ...
     
  16. Dominik Späte
    Dominik Späte Erfahrener Benutzer
    Registriert seit:
    16. Oktober 2018
    Beiträge:
    1.251
    Danke erhalten:
    1.141
    Danke vergeben:
    391
    Hallo @Gerd_P,

    da fehlt die eigentliche Meldung. Deshalb muss ich etwas raten:

    Erweitere mal bitte
    Code:
    if(is_array($_POST['image_delete']) && in_array($_POST['image_original'][$index], $_POST['image_delete']) && !isset($uploadedImages[$imageNameFromInput]))
    um eine isset-Prüfung für den ersten POST-Parameter:

    Code:
    if(isset($_POST['image_delete']) && is_array($_POST['image_delete']) && in_array($_POST['image_original'][$index], $_POST['image_delete']) && !isset($uploadedImages[$imageNameFromInput]))
    Hak gerne kurz nach, weiterhin Log-Einträge erzeugt werden.
     
  17. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    28. Dezember 2020
    Beiträge:
    403
    Danke erhalten:
    205
    Danke vergeben:
    68
    Hallo Dominik,
    danke für die Rückmeldung, jetzt kommt nur noch eine Warnung:
    Code:
    2024-10-08 14:40:04 WARNING: Undefined array key "image_delete"
    
    context:   
    session ID:  
    session-67052824160710.94688081
    code:  
    2
    file:  
    /var/www/web328/html/testshop2/admin/includes/modules/set_product_image_data.inc.php
    line:  
    142
    context:  
    code snippet:  
    │    
    │      // Delete images
    ├─     if(is_array($_POST['image_delete']))
    │      {
    │          foreach($_POST['image_delete'] as $imageToDelete)
    bei dem letzten Code von gestern habe ich die Warnung ergänzt
     
  18. Dominik Späte
    Dominik Späte Erfahrener Benutzer
    Registriert seit:
    16. Oktober 2018
    Beiträge:
    1.251
    Danke erhalten:
    1.141
    Danke vergeben:
    391
    Hallo Gerd,

    alles klar, dann musst Du in

    Code:
    if(is_array($_POST['image_delete']))
    auch noch abfragen, ob's den POST-Parameter gibt:

    Code:
    if(isset($_POST['image_delete']) && is_array($_POST['image_delete']))
     
  19. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    28. Dezember 2020
    Beiträge:
    403
    Danke erhalten:
    205
    Danke vergeben:
    68
    Das wars, Warnungen sind weg. Danke