Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Import Artikel externe Artikelbilder

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Re: Import Artikel externe Artikelbilder
    Antwort #165 am: 01. Mai 2022, 11:12:31
    Gib mal bitte eine vollständige URL zu einem deiner externen Bilder.

    Grüße

    Torsten

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: Import Artikel externe Artikelbilder
    Antwort #166 am: 01. Mai 2022, 17:53:29
    Wär's nicht besser die Bilder auf den eigenen Webspace zu laden ?
    Oder muß man dann die CSVs ändern weil dort die komplette URL zu den Bildern enthalten ist ?

    Jedenfalls würde ich das:

    Code: PHP  [Auswählen]
    if (stristr($name, 'http:')) {

    aus Performance-Gründen so abfragen:

    Code: PHP  [Auswählen]
    if (stripos($name, 'http:') !== false) {

    und außerdem die Änderung in der Methode productImage()  update-sicher über eine Klassenerweiterung machen.

    Für die order_details_cart.php dann über eine "auto_include"-Datei in /includes/extra/modules/order_details_cart_content/.

    Da es außerdem noch die Möglichkeit gibt Produktbilder auf der checkout_confirmation.php anzeigen zu lassen müsste außerdem noch eine Klasenerweiterung der Klasse shoppingCart  für die Methode get_products()  gemacht werden.

    Da man darüber hinaus auch noch die Produktbilder in den Bestell-/Auftragsbestätigungen anzeigen lassen kann müsste es dann noch eine Klassenerweiterung der Klasse order  für die Method  order_data() geben.

    Wenn man das nicht alles so macht (und es wäre update-sicher) ist es nur halbgewalktes Gefrickel.

    Wenn man es so macht würde ich es außerdem noch als System-Modul bauen, welches bei Aktivierung die Klassenerweiterungen automatisch mit installiert und aktiviert.

    Das Ganze einfacher zu gestalten, indem man sich die Bilder auf den eigenen Webspace lädt scheitert, wenn man es update-sicher gestalten möchte, an den Möglichkeiten der Erweiterungen der Import-Klasse.

    Es stellt sich die Frage wie die Bilder genau heißen und welche Methode am einfachsten, oder, wenn Fakten dagegen sprechen, am besten wäre. Ich vermute fast eine eigene Import-Routine wäre die beste Lösung. In der kann man dann einstellen, ob die Bilder auf den eigenen Webspace geladen werden - und somit auch durch den Imageprozessor gejagt werden können - oder fremdgeladen werden sollen.

    Gruß,
    noRiddle

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: Import Artikel externe Artikelbilder
    Antwort #167 am: 01. Mai 2022, 22:08:04
    Kleine Korrektur:

    Besser ist

    Code: PHP  [Auswählen]
    if (stripos($name, 'http') !== false) {

    ohne den Doppelpunkt, denn die Bild-URL könnte ja auch mit "https" bginnen, was sogar wahrscheinlicher ist.

    Gruß,
    noRiddle

    D3m0n1um

    • Neu im Forum
    • Beiträge: 8
    Re: Import Artikel externe Artikelbilder
    Antwort #168 am: 02. Mai 2022, 09:39:29

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: Import Artikel externe Artikelbilder
    Antwort #169 am: 02. Mai 2022, 09:43:09
    Wie meine Wenigkeit bereits schrieb, wenn du unbedingt in den Code eingreifen möchtest anstatt es update-sicher umzusetzen, ersetze mal das

    Code: PHP  [Auswählen]
    if (stristr($name, 'http:')) {

    mit dem

    Code: PHP  [Auswählen]
    if (stripos($name, 'http') !== false) {

    Gruß,
    noRiddle

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Re: Import Artikel externe Artikelbilder
    Antwort #170 am: 02. Mai 2022, 09:44:08
    Naja, da hast du doch dann bereits das Problem, wie ich bereits vermutet hatte. Die Links zu den Bildern sind mit "https" und nicht mit "http".
    Halte dich mal an den Code von noRiddle aus Antwort #167, also zusammen dann:

    Datei "/shop/includes/classes/product.php":

    Code: PHP  [Auswählen]
    function productImage($name, $type) {
    //BOF EXTERNE PRODUKTBILDER
                    if (stripos($name, 'http') !== false) {
                       return $name;
                    }
                    //EOF EXTERNE PRODUKTBILDER
    }

    Datei "/shop/includes/modules/order_details_cart.php":

    Code: PHP  [Auswählen]
      $image = '';
      if ($products[$i]['image'] != '') {
        if (stripos($products[$i]['image'], 'http') !== false) {
          $image = $products[$i]['image'];
        } else {
          $image = DIR_WS_THUMBNAIL_IMAGES.$products[$i]['image'];
        }
      }

    EDIT 1: Nun war der noRiddle doch schneller als ich. ;-)
    EDIT 2: Zweites Vorkommen der Prüfung auf "http" für externe Produktbilder ergänzt.

    Grüße

    Torsten

    D3m0n1um

    • Neu im Forum
    • Beiträge: 8
    Re: Import Artikel externe Artikelbilder
    Antwort #171 am: 02. Mai 2022, 09:46:15
    Wär's nicht besser die Bilder auf den eigenen Webspace zu laden ?
    Oder muß man dann die CSVs ändern weil dort die komplette URL zu den Bildern enthalten ist ?
    [...]

    Bei über 10.000 Artikeln wird man blöd sie auszusortieren und herunterladen ist sowieso aus Platzgründe ausgeschlossen.

    Du musst dir vorstellen, dass alleine die CSV Datei schon über 130mb groß ist  und ich habe einen riesengroßen Aufwand die CSV Datei zu zerstückeln, damit ich alles auf dem Database bekomme (wenn ich mich nicht täusche, die maximale Anzahl an Produkte beim Importieren ist 1000, oder?).

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: Import Artikel externe Artikelbilder
    Antwort #172 am: 02. Mai 2022, 09:55:15
    • Klappt's denn jetzt mit der Code-Änderung ?
      Seltsamerweise ist das Bild auch ungesichert über "http" erreichbar, entscheidend ist jedoch was in der CSV steht.
      Außerdem würde sich der Browser (und Tante Suchmaschine) beschweren wenn du gemischte Inhalte ausgeben ließest, also mit https (dein Shop selbst) und ohne "s", die Bilder.
    • Ein "aussortieren und herunterladen" wäre ja unnötig, da ein entsprechendes Skript das automatisch täte.
      Insofern du sicher sein kannst, daß der Ursprungs-Server für die Bilder genug Bandbreite hat
      - du wirst nicht der einzige sein der die Bilder von dort lädt -
      kannst du es ja auch lassen wie es ist.
      Trotzdem würde ich es an deiner Stelle update-sicher machen.
    • Maximal 1000 importieren:
      Nein, das hängt davon ab wieviele Daten in so einer CSV sind und ab wann es zu einem Server-Timeout kommt.
      10.000 Artikel ist nichts, ich habe Import-Routinen gebaut die über eine Million Zeilen (und somit Artikel) importieren.
      Das geschieht dann mittels einer Hilfstabelle und Browser-Reload um ein Timeout zu verhindern.
      Sieht solch eine CSV bei dir immer gleich aus oder gibt es verschiedene von verschiedenen Herstellern ?
    Gruß,
    noRiddle

    D3m0n1um

    • Neu im Forum
    • Beiträge: 8
    Re: Import Artikel externe Artikelbilder
    Antwort #173 am: 02. Mai 2022, 10:11:34
    • Klappt's denn jetzt mit der Code-Änderung ?
      [...]
    [...]

    Das kann ich gerade nicht sagen, weil die Homepage nicht mehr startet (nur eine weiße Seite) und muss leider weg zu einem Termin.

    Ich werde Nachmittags mal nachschauen, wo das Problem liegt.

    • [...]
      Das geschieht dann mittels einer Hilfstabelle und Browser-Reload um ein Timeout zu verhindern.
      [...]
    [...]

    Gibt es mehr Infos dazu?

    • [...]
      Sieht solch eine CSV bei dir immer gleich aus oder gibt es verschiedene von verschiedenen Herstellern ?
    [...]

    Eigentlich ja, sieht immer gleich aus, es sei denn es gibt Updates.

    D3m0n1um

    • Neu im Forum
    • Beiträge: 8
    Re: Import Artikel externe Artikelbilder
    Antwort #174 am: 02. Mai 2022, 13:59:05
    • Klappt's denn jetzt mit der Code-Änderung ?
      [...]
    [...]

    Nein, die Änderungen an der Datei /includes/classes/product.php blockieren die Webseite, überschreibe ich sie mit der Originaldatei, dann wird die Seite wieder angezeigt.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: Import Artikel externe Artikelbilder
    Antwort #175 am: 02. Mai 2022, 17:28:07
    :glaskugel:

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Import Artikel externe Artikelbilder
    Antwort #176 am: 03. Mai 2022, 17:58:44
    Hallo D3m0n1um,

    die weisse Seite deutet auf einen Fatal Error hin, ich vermute deshalb, dass du z.B. eine geschweifte Klammer vergessen oder zu viel eingefügt hast.

    Die original Function (Methode) sieht ja bei der Shopsoftware-Version (2.0.6.0) in der Datei /includes/classes/product.php so aus,

    Code: PHP  [Auswählen]
      /**
       * productImage
       *
       * @param string $name
       * @param string $type
       * @return string
       */

      function productImage($name, $type) {
        switch ($type) {
          case 'mini':
            $path = DIR_WS_MINI_IMAGES;
            break;
          case 'thumbnail':
            $path = DIR_WS_THUMBNAIL_IMAGES;
            break;
          case 'midi':
            $path = DIR_WS_MIDI_IMAGES;
            break;
          case 'info':
            $path = DIR_WS_INFO_IMAGES;
            break;
          case 'popup':
            $path = DIR_WS_POPUP_IMAGES;
            break;
        }

        $returnName = $name;
        if ($returnName == '' || !is_file($path.$returnName)) {
          $returnName = '';
          if ($this->useStandardImage == 'true' && $this->standardImage != '' && is_file($path.$this->standardImage)) {
            $returnName = $this->standardImage;
          }
        }
       
        $returnName = ($returnName != '') ? DIR_WS_BASE.$path.$returnName : '';

        $returnName = $this->productModules->productImage($returnName, $name, $type ,$path);
       
        return $returnName;
      }

    diese musst du einfach mit der folgenden Function ersetzen .

    Code: PHP  [Auswählen]
      /**
       * productImage
       *
       * @param string $name
       * @param string $type
       * @return string
       */

      function productImage($name, $type) {
     
        //BOF EXTERNE PRODUKTBILDER
        if (stripos($name, 'http') !== false) {
           return $name;
        }
        //EOF EXTERNE PRODUKTBILDER
       
        switch ($type) {
          case 'info' :
            $path = DIR_WS_INFO_IMAGES;
            break;
          case 'thumbnail' :
            $path = DIR_WS_THUMBNAIL_IMAGES;
            break;
          case 'popup' :
            $path = DIR_WS_POPUP_IMAGES;
            break;
        }

        $returnName = $name;
        if ($returnName == '' || !is_file($path.$returnName)) {
          $returnName = '';
          if ($this->useStandardImage == 'true' && $this->standardImage != '' && is_file($path.$this->standardImage)) {
            $returnName = $this->standardImage;
          }
        }
       
        $returnName = ($returnName != '') ? DIR_WS_BASE.$path.$returnName : '';

        $returnName = $this->productModules->productImage($returnName, $name, $type ,$path);
       
        return $returnName;
      }

    Dann, in der Datei includes/modules/order_details_cart.php must du bei der Shopsoftware-Version (2.0.6.0) gar nichts ändern, und sofern du das Template tpl_modified_responsive verwendest musst du in der Datei templates/tpl_modified_responsive/stylesheet.css auch nichts ändern.

    Dafür musst du aber, sofern du im Admin unter "Konfiguration" -> "E-Mail Optionen" -> "Artikelbilder in Bestell-E-Mail einfügen" auf [Ja] gesetzt hast, in der Dateie templates/tpl_modified_responsive/mail/SPRACHE/order_mail.html und der Datei templates/tpl_modified_responsive/mail/SPRACHE/order_mail_step.html folgende Codezeile,

    Code: XML  [Auswählen]
    <img src="{$img_path}{$order_values.PRODUCTS_IMAGE}" alt="{$order_values.PRODUCTS_NAME}" title="{$order_values.PRODUCTS_NAME}" style="{$smarty.const.SHOW_IMAGES_IN_EMAIL_STYLE}" />

    mit dieser ersetzen.

    Code: XML  [Auswählen]
    <img src="{if stripos($order_values.PRODUCTS_IMAGE, 'http') === false}{$img_path}{/if}{$order_values.PRODUCTS_IMAGE}" alt="{$order_values.PRODUCTS_NAME}" title="{$order_values.PRODUCTS_NAME}" style="{$smarty.const.SHOW_IMAGES_IN_EMAIL_STYLE}" />

    Gruss
    Hanspeter
    2 Antworten
    3434 Aufrufe
    28. November 2011, 17:13:19 von techpoint
    8 Antworten
    5974 Aufrufe
    28. April 2011, 08:54:57 von web28
    7 Antworten
    7793 Aufrufe
    04. April 2011, 22:04:38 von cillex
    9 Antworten
    6464 Aufrufe
    20. Februar 2014, 09:58:39 von Gerry7