Magento – Individuelle Optionen / Custom Options Datei oder Bild mit Link zum Download

Bild

Es ist wieder etwas Kurioses aufgefallenBildBild: Nutzt man in Magento die Individuellen Optionen und dort den Eingabetyp “File”, um also Kunden die Möglichkeit zu geben bei bestimmten Produkten eigene Dateien wie z.B. Bilder zum Aufdruck mitzusenden.

Standardmäßig wird nur leider weder im Warenkorb, noch im Checkout noch in der Bestellbestätigung ein Link oder gar die Datei selber mitgegeben. Es steht nur der Titel der Option (hier “Bild upload”). Sollte man aber z.B. Dropshipping verwenden und schon in der Bestellemail dem Zulieferer eine Möglichkeit bieten, das Produkt anzufertigen, wäre es schön, wenn er direkten Zugriff auf die Datei hätte.

Im rechten Bild ist nun zu sehen, wie es schön wäre. Ein Link, welches auch bei o.g. Stellen angezeigt wird und auch in der Mail auftaucht. Woher kommt aber der Link?

Anscheinend handelt es sich um einen Magentofehler, dass der Link nicht angezeigt wird. Schaut man sich den Seiten Code im Frontend an, sieht dieser OHNE den gewünschten Link so aus

Bild

 

mit dem gewünschten Link sieht er so aus

Bild

Hier scheint also etwas zu fehlen. Die Grundstruktur ist aber schon da. Es fehlt am vollständigen Link und an der Linkbezeichnung.

Was tun, um den Link zu bekommen?

Wir haben durch Zufall den Link überhaupt erst “kennen gelernt” und dann einige Zeit gebraucht, um rauszufinden warum er angezeigt wird.
Es liegt an der Extension Custom Product Preview von AITOC. Das wirklich komische ist hier nämlich, dass man mit dieser Extension wunderbar Texte und Bilder für einen Artikel hochladen kann, diese dann auf dem Produkt verschieben, vergrößern, verkleinern etc. pp.. BildHat man dies getan, wird aber nur ein Bild wie das Produkt nachher aussehen soll an den o.g. Stellen angezeigt aber NICHT der Link zu den Dateien. Dies ist also nicht so optimal und daher für uns nicht nutzbar gewesen. Die Extension ließen wir aber auf dem System installiert.

Nun stellte sich aber heraus, dass ein (wahrscheinlich unbekannter) Nebeneffekt dieser Extension ist, dass bei ganz normalen Produkten, die nichts mit der Extension zu tun haben, im Falle von Individuellen Optionen in Form von Dateien, plötzlich der Link angezeigt wird.

Es muss also in dieser Extension die Antwort auf die Frage geben, wie man ein Standardprodukt mit Optionen dazu bewegt den Link mitzuteilen.

AITOC selber teilte übrigens auf Nachfrage (BEVOR wir das Phänomen mit den Standardprodukten erkannten) mit, dass es nicht möglich sei die Datei oder den Link zu dieser mit der Extension mitzugeben. Es seien nur die Previews in der Funktion umschlossen….

Nun hoffen wir bald herauszufinden, wo das Geheimnis liegt, um dann jedem die Möglichkeit zu geben die gewünschten Links zu nutzen. Vorschläge sind wie immer gern gesehen.

Nachtrag vom 29.11.2016

Ein Problem scheint vor allem dann zu bestehen wenn es sich um Bündel-Produkte handelt. In diesem Fall werden auch keine Links im Backend angezeigt. Dies kann behoben werden indem man die renderer.phtml im Ordner app/design/adminhtml/default/default/template/bundle/sales/order/view/items anpasst.

Hier wird zu Anfang zwischen die Zeilen

<?php $_index = 0 ?>

und

<?php $_prevOptionId = '' ?>

die Zeile

<?php $_order = $this->getItem()->getOrder(); ?>

eingefügt.

Anschließend noch ca. nach Zeile 382

                <dl class="item-options">
                <?php foreach ($this->getOrderOptions() as $option): ?>
                    <dt><?php echo $option['label'] ?>:</dt>
                    <dd>

folgenden Code

                    <?php  
                        $optionValues = unserialize($option['option_value']);
                        if(isset($optionValues['url'])){
                            $url = Mage::getUrl(
                                $optionValues['url']['route'],
                                array(
                                    '_store' => $_order->getStoreId(),
                                    'id' => $optionValues['url']['params']['id'],
                                    'key' => $optionValues['url']['params']['key']
                                )
                            );
                        } else {
                            $url = '';
                        }
                    ?>
                    <?php if($url!='') { echo '<a href="'.$url.'" target="_blank">'.$optionValues['title'].'</a>'; } ?>

Anschließend werden die Links für Bündelprodukte im Backend angezeigt.

Nachtrag vom 30.11.2016

Nun haben wir auch eine Anpassung vorgenommen, um die Links zu den Bildern in den Transaktionsemails anzeigen zu lassen.

Für Einfache Produkte wird hier die Datei /app/design/frontend/base/default/template/email/order/items/order/default.phtml

benötigt (am besten wieder in den eigenen Template-Ordner kopieren und dort anpassen).

Man fügt nach

<dd style="margin:0; padding:0 0 0 9px;">

(ca. Zeile 36) folgenden Code ein

                <?php  
                    $optionValues = unserialize($option['option_value']);
                    $url = '';

                    if(isset($optionValues['url']['route'])) {
                        $url = Mage::getUrl(
                        $optionValues['url']['route'],
                        array(
                            '_store' => $_order->getStoreId(),
                            'id' => $optionValues['url']['params']['id'],
                            'key' => $optionValues['url']['params']['key']
                            )
                        );
                    }
                        
                    //var_dump($url);exit;
                ?>
                <?php if($url!=''): ?>
                    <?php echo '<a href="'.$url.'" target="_blank">'.$optionValues['title'].'</a>'; ?>
                <?php else: ?>
                    <?php echo $option['value'] ?>
                <?php endif; ?>
            </dd>

und ersetzt damit den Code

<?php echo $option['value'] ?></dd>

Das war es dann hier.

Für Bündel Produkte wird hingegen die Datei /app/design/frontend/base/default/template/bundle/email/order/items/order/default.phtml (bzw. im eigenen Template)

Dort fügt man folgenden Code nach

<dd style="margin:0; padding:0 0 0 9px;">

(ca. Zeile 159) ein.

                <?php  
                    $optionValues = unserialize($option['option_value']);
                    $url = '';

                    if(isset($optionValues['url']['route'])) {
                        $url = Mage::getUrl(
                        $optionValues['url']['route'],
                        array(
                            '_store' => $_order->getStoreId(),
                            'id' => $optionValues['url']['params']['id'],
                            'key' => $optionValues['url']['params']['key']
                            )
                        );
                    }
                        
                    //var_dump($url);exit;
                ?>
                <?php if($url!=''): ?>
                    <?php echo '<a href="'.$url.'" target="_blank">'.$optionValues['title'].'</a>'; ?>
                <?php else: ?>
                    <?php echo $option['value'] ?>
                <?php endif; ?>
            </dd>

und ersetzt damit

<?php echo $option['value'] ?></dd>

Nun werden in der eMail auch die Links zu der hochgeladenen Datei angezeigt und diese können direkt aus der eMail angeklickt und geöffnet werden.

Genutzt in Magento Version 1.4.1.1 Kommentare? Ergänzungen? Hinweise? Gerne!

Published by Covos

Seit 2009 arbeite ich nun intensiv mit Magento. Begonnen habe ich mit der Erstellung und dem Betrieb von B2C-Shops. Ausgeweitet wurde dies durch meine Tätigkeit im Logistik-Sektor. Hieraus entstanden erste spezialisierte B2E-Systeme. Heute arbeite ich tag-täglich mit spannenden B2C-, B2B- und B2E-Projekten und berichte in diesem Blog über Herausforderungen und gebe Insider-Tipps.

Leave a Reply

Your email address will not be published. Required fields are marked *