Onlineshopbetreiber suchen ständig nach Möglichkeiten, ihre Absatzmärkte zu vergrößern. Sie setzen dabei auf Suchmaschinenoptimierung, Mailing oder Produktvermarktung auf hoch frenquentierten Plattformen, um den Absatz zu steigern. Dass dabei die Gewinnquote merklich sinken kann, zeigt das Beispiel Shopgate.
Denn Shopgate, ein Anbieter von Apps, hat vor Jahren damit begonnen, Shopbetreibern weitere Standbeine auf dem Markt mobiler Lösungen zu verkaufen. Auf der Shopgate-Plattform können sich die Shops mit einer eigenen App listen lassen, die in der Tat ein hohes Nutzererlebnis bietet, wenn der Käufer die App installiert und einschaltet. So weit, so gut.
Parallel dazu werden jedoch die Besucher des Shops, die (ohne die App) mit einem Smartphone den Original-Shop besuchen, auf die Shopgate-Website umgeleitet. Das gilt unserer Erfahrung nach bei Shopgate für modified-Shop und xt-Commerce. Sollte ein Smartphone-User z.B. www.mein-shop.de anwählen, schiebt ihn das Shopgatemodul ungefragt auf mein-shop.shopgate.com.
Solange der Shop über kein "Responsive Design" verfügt, das ein Surfen mit kleinen Endgerätebildschirmen ermöglicht, ist das ohne Frage für das User-Erlebnis hilfreich.
Dieses Verfahren aber setzt Shopgate bei jedem Shop ein mit seinem Modul ein, ob er nun responsiv arbeitet oder nicht.
Das Ergebnis sind hohe Umsatzverluste bei den Shopbetreibern, da Shopgate Provisionen für jede Bestellung verlangt, die über die App oder ihre Web-Repräsentanz abgewickelt wird.
Prüfen Sie deshalb auf jeden Fall, ob Ihr Shopgate-Plugin/-Modul Mobilgeräte auf die Shopgate-Website abzieht. Falls ja, deaktivieren wir gern diese unerwünschten Umleitungen. Oder Sie lassen die Umsatzbremse bei Shopgate aktiv abschalten und sich dies bestätigen.

In Online-Shops verwaltete Bewertungen von Bestellungen und Artikeln werden von potentiellen Käufern als nicht objektiv genug angesehen. Denn sie können tatsächlich durch den Shopbetreiber manipuliert werden. Zudem haben einige systemimmanente Bewertungsfunktionen von modified-Shop und xt-Commerce kleinere bis größere Fehler, die ihre Nutzung auch aus diesem Grunde nicht empfehlenswert erscheinen lassen.
Abhilfe schaffen hier externe, zertifizierte Bewertungsplattformen wie "ekomi.de", "trustpilot.com" und andere. Solche Dienstleister wickeln das Bewertungsprozedere für Onlineshops ab, kümmern sich um die Ansprache der Käufer, sobald deren Bestellung im Shop abgeschlossen ist, ganz nach den Wünschen des Shop-Inhabers.

Während die allgemeinen Shopbewertungen von Ekomi oder Trustpilot (bei Ekomi über ein vom Anbieter bereitgestelltes Javascript-Snippet) im eigenen Shop recht leicht dargestellt werden können, erhält der Shopbetreiber hinsichtlich der Anzeige von Artikelbewertungen Bewertungsrohdaten vom Dienstleister, die erst weiterverarbeitet werden müssen.

Ein Tool zur Auswertung dieser Rohdaten und zur optisch hochwertigen Anzeige der Bewertungen - das Shopmodul "k1-reviews" - halten wir für Sie vor. Es bietet folgende Features:
Ausschnitt der Listendarstellung von k1-reviewsDas Shopmodul "k1-reviews" holt erstens die Bewertungsdaten von Artikeln bei Ekomi und Co ab. Zweitens speichert es diese Informationen in der Datenbank des Shops zwischen, um die Server von Ekomi und Trustpilot nicht über Gebühr zu beanspruchen. Drittens ermittelt es einige statistische Werte wie die Durchschnittsbewertung und die Gesamtzahl der Reviews, da diese wie erwähnt nicht in expliziter Form bereitgestellt werden. Als letztes bereitet das Modul diese Werte für Listendarstellungen von Artikeln und für die Produktdetailseite individuell und optisch ansprechend auf.

Sprechen Sie uns an. Schildern Sie uns Ihre Ansprüche an eine angemessene Aufbereitung und Darstellung von Produktbewertungen. Wir finden für Sie den geeigneten Abwickler von Bewertungen und stellen für Sie die geeignete Lösung bereit.

Als Experten auf dem Gebiet innovativer Module für Shopsysteme wie xt-Commerce, modified-Shop und Gambio möchten wir Ihnen wärmstens unser Modul für die Nutzung von Mietartikeln - das k1-Mietmodul - ans Herz legen. Wir haben es entwickelt, um Ihnen das Vermieten von Artikeln, Personal und sogar Immobilien enorm zu erleichtern und Ihren Kunden eine angenehme und rasche Buchung zu ermöglichen.

Das k1-Mietmodul ist mit minimalem Aufwand in Ihren Shop zu integrieren. Es arbeitet spielend leicht und systemkonform mit den Eigenschaften der Mietartikel (wie Start- und Endtagen, Uhrzeiten, Abrechnung nach Tagen oder Stunden, Mindestbuchungszeiten, Mietkautionen, Lieferoptionen und von der Postleitzahl abhängigen Anfahrtskosten) sowie daraus resultierenden Kundenbestellungen.
Der k1-Mietmodul-Showroom
Dabei haben Sie die Möglichkeit, sowohl einfache technische Geräte als auch solche, für die eine Anlieferung, Betreuung oder Einrichtung durch Fachpersonal erforderlich ist, zu vermieten und entsprechend abzurechnen. Zudem können Ihre Kunden mit dem Modul das geeignete Fachpersonal für Ihre Schulungen auch "standalone" buchen.
Die Eigenschaften eines Mietartikels konfigurieren Sie im Backend für jeden Artikel einzeln und flexibel. Im Frontend erkennt das Modul automatisch bereits gebuchte Zeiträume und Einzeltage und stellt diese als nicht mehr auswählbar für Ihre Kunden dar.

Sollten Sie von einem Mietartikel mehrere Exemplare besitzen, können Sie dies in den Moduleigenschaften darstellen und dem Mieter die Möglichkeit geben, mehrere Geräte (z.B. Beamer, PCs, Bildschirme, Kameras) oder Schulungspersonal in gewünschter Stärke in einem Vorgang zu buchen. Der Kalender auf der Detailseite verrät immer, wie viele Personen oder Geräte an welchen Tagen noch verfügbar sind.
Sie haben weitere Ideen? Wir freuen uns auf Ihre Anstösse und setzen Ihre Wünsche gern individuell für Sie um. Kontaktieren Sie uns unter 0551-2006391.

Aber nun - nichts wie selbst ausprobieren unter k1-mietmodul.k1-mediendesign.de...

Dieses Modul folgt in der Entwicklung unserer Usability Tools für Shop-Backends dem Modul "Produktbilder im Shop-Backend per Drag and Drop sortieren".
Auch bei Produktlisten im Backend von xtCommerce und modified ist die Standardmethode zur Sortierung mittels Eingabe von Rangzahlen wenig optimal. Hier müssen bislang bei allen Produkten in der Detailansicht mühsam Zahlen eingegeben werden, die die Sortierung beeinflussen.
Unser Drag and Drop-Modul hingegen macht die Sortierung denkbar einfach. Greifen Sie ein Produkt in der Listenansicht. Schieben Sie es an die richtige Position. Das Modul sorgt im Hintergrund für das Umsetzen der Sortierung in der Datenbank. Fertig.
Haben Sie Interesse? Fragen Sie uns einfach nach einem unverbindlichen Angebot.

Shops wie xt-commerce und modified-shop bieten die Möglichkeit, eine fast unbegrenzte Menge an Bildern zu einem Produkt abzulegen. Ein großer Nachteil bei der Art der Bilderverwaltung ist jedoch, dass die einmal hochgeladenen Bilder nachträglich nicht sortiert werden können. Oder nur dadurch, dass sie erneut in anderer Reihenfolge hochgeladen werden. Mit unserem AJAX-Drag-and-Drop-Modul können Sie die Artikelfotos einfach in die richtige Reihenfolge schieben, ohne lange auf einen Upload zu warten.

1. Fügen Sie dem Admin-Verzeichnis die Datei k1_ajax_port.php sowie dem javascript-Verzeichnis im benutzten Template ein aktuelles jQuery-Framework wie z.B. das mitgelieferte jquery-ui-1.10.4.custom.min.js hinzu (s. auch Struktur des Download-ZIP-Ordners).

2. Suchen Sie in der Datei admin/categories.php das Ende des HEAD-Bereichs "</head>". Fügen Sie davor folgendes ein:

<?php // BOF hk: Bildersortierung per jQuery ?>
<script type="text/javascript" src="../templates/<?= CURRENT_TEMPLATE ?>/javascript/jquery.js"></script>
<script type="text/javascript" src="../templates/<?= CURRENT_TEMPLATE ?>/javascript/jquery-ui-1.10.4.custom.min.js"></script>
<style>
#sortable { list-style-type: none; margin: 0; padding: 0; width: 100%; }
#sortable li { margin: 6px 3px 3px 3px; padding: 0.4em; padding-left: 6px; font-size: 1.4em; width: 90%; height: auto; background-color: #CCCCCC; border-radius: 8px }
#sortable li span { position: absolute; margin-left: 0; }
.drag_handle { background-color: #333333; cursor:move; margin-top:-12px; color:#999999; font-size:10px; border-radius:3px; margin-left:4px; padding:2px }
.drag_handle a:link { color:#999999; cursor:move; text-decoration:none; }
.drag_handle a:hover { color:#CCCCCC; cursor:move; text-decoration:none; }
#result { background-color:#FFFF33; border:1px #333333 solid; border-radius:4px; padding:6px; color:#333333 }
</style>
<?php // EOF hk: Bildersortierung per jQuery ?>

3. Suchen Sie nach folgendem Code in der Datei admin/includes/modules/products_images.php:

  
  // display MO PICS
  if (MO_PICS > 0) {
    $mo_images = xtc_get_products_mo_images($pInfo->products_id);
    for ($i = 0; $i < MO_PICS; $i ++) {
      echo '<tr><td colspan="4">'.xtc_draw_separator('pixel_black.gif', '100%', '1').'</td></tr>';
      echo '<tr><td colspan="4">'.xtc_draw_separator('pixel_trans.gif', '1', '10').'</td></tr>';
      if ($mo_images[$i]["image_name"]) {
        echo '<tr><td colspan="4"><table><tr><td align="center" class="main" width="'. (PRODUCT_IMAGE_THUMBNAIL_WIDTH + 15).'">'.xtc_image(DIR_WS_CATALOG_THUMBNAIL_IMAGES.$mo_images[$i]["image_name"], 'Image '. ($i +1)).'</td>';
      } else {
        echo '<tr>';
      }
      echo '<td class="main">'.TEXT_PRODUCTS_IMAGE.' '. ($i +1).'<br />'.xtc_draw_file_field('mo_pics_'.$i).'<br />'.xtc_draw_separator('pixel_trans.gif', '24', '15').'&nbsp;'.$mo_images[$i]["image_name"].xtc_draw_hidden_field('products_previous_image_'. ($i +1), $mo_images[$i]["image_name"]);
      if (isset ($mo_images[$i]["image_name"])) {
        echo '</tr><tr><td align="center" class="main" valign="middle">'.xtc_draw_selection_field('del_mo_pic[]', 'checkbox', $mo_images[$i]["image_name"]).' '.TEXT_DELETE.'</td></tr></table>';
      } else {
        echo '</td></tr>';
      }
    }
  }

Bitte durch folgendes ersetzen:

  // display MO PICS
  if (MO_PICS > 0) {
    // BOF hk #967: Bildersortierung per jQuery
    echo '<tr><td>';
    echo '<div id="result" style="display:none">&nbsp;</div>';
    echo '<ul id="sortable">';
    // EOF hk #967: Bildersortierung per jQuery
    $mo_images = xtc_get_products_mo_images($pInfo->products_id);
    for ($i = 0; $i < MO_PICS; $i ++) {
        // BOF hk #967: Bildersortierung per jQuery
        echo '<li id="'.$mo_images[$i]["image_id"].'">';
        echo '<table>';
        echo '<tr><td class="drag_handle" colspan="4"><a href="">Klicken und Ziehen zum Sortieren</a></td></tr>';
        // EOF hk #967: Bildersortierung per jQuery
      //echo '<tr><td colspan="4">'.xtc_draw_separator('pixel_black.gif', '100%', '1').'</td></tr>';
      echo '<tr><td colspan="4">'.xtc_draw_separator('pixel_trans.gif', '1', '10').'</td></tr>';
      if ($mo_images[$i]["image_name"]) {
        echo '<tr><td colspan="4"><table><tr><td align="center" class="main" width="'. (PRODUCT_IMAGE_THUMBNAIL_WIDTH + 15).'">'.xtc_image(DIR_WS_CATALOG_THUMBNAIL_IMAGES.$mo_images[$i]["image_name"], 'Image '. ($i +1)).'</td>';
      } else {
        echo '<tr>';
      }
      echo '<td class="main">'.TEXT_PRODUCTS_IMAGE.' '. ($i +1).'<br />'.xtc_draw_file_field('mo_pics_'.$i).'<br />'.xtc_draw_separator('pixel_trans.gif', '24', '15').'&nbsp;'.$mo_images[$i]["image_name"].xtc_draw_hidden_field('products_previous_image_'. ($i +1), $mo_images[$i]["image_name"]);
      if (isset ($mo_images[$i]["image_name"])) {
        echo '</tr><tr><td align="center" class="main" valign="middle">'.xtc_draw_selection_field('del_mo_pic[]', 'checkbox', $mo_images[$i]["image_name"]).' '.TEXT_DELETE.'</td></tr></table>';
      } else {
        echo '</td></tr>';
      }
        // BOF hk #967: Bildersortierung per jQuery
        echo '</table>';
        echo '</li>';
        // EOF hk #967: Bildersortierung per jQuery
    }
    // BOF hk #967: Bildersortierung per jQuery
    echo '</ul>';
    echo '</td>'; ?>
        <script type="text/javascript">
              var timeOut;
              
              function k1_hide_container(container) {
                  //alert(container);
                  $(container).fadeOut('slow');
                  window.clearTimeout(timeOut);
              }

            //alert('sortable area initialized..');
            $( "#sortable" ).sortable({
                scroll: true,
                handle: ".drag_handle",
                update: function( event, ui ) {
                    var sortedIDs = $( "#sortable" ).sortable( "toArray" ); // kommagetrennter String
                    var file = "k1_ajax_port.php?action=sort_mo_images&sortedIDs=" + sortedIDs;
                    $( "#result" ).load( file, function() {
                        $("#result").fadeIn('slow');
                        var container = "#result";
                          var call = 'k1_hide_container("' + container + '")';
                          timeOut = window.setTimeout(call, 3000);
                    });
                }
            });
        </script>
    <?php
    // EOF hk #967: Bildersortierung per jQuery
  }

4. Jetzt noch mittels phpMyAdmin die Datenbanktabelle 'admin_access' erweitern und den Admin-Benutzern dieses Recht zuweisen (hier exemplarisch beim Benutzer mit der ID 1), damit die AJAX-Anfragen ausgeführt werden können:

ALTER TABLE `admin_access` ADD `k1_ajax_port` INT( 1 ) NOT NULL DEFAULT '0';
UPDATE `admin_access` SET `k1_ajax_port` = '1' WHERE `customers_id` = '1';

Nun können Sie mit der Bildersortierung beginnen. Viel Erfolg..

Download: k1-ajax-bildersortierung.zip

k1 lang compare ist ein Tool, das Ihnen die Arbeit beim Erstellen von Übersetzungen der im Shop enthaltenen Textelemente erleichtert. Viele Sprachpakete von Shopsystem und anderen Programmen sind veraltet oder wegen Erweiterungen im Laufe der Zeit unvollständig geworden.
k1 lang compare
Das Hilfsprogramm k1 lang compare prüft im ersten Schritt bei seiner Analyse alle Unterschiede zwischen einer Referenzsprache und der Zielsprache, die Sie ergänzen oder komplett neu anlegen möchten. Dabei erstellt es aus der Vielzahl von Sprach-Dateien eine einzige Übersetzungsdatei für jeden Vergleich von Referenz- und Zielsprache, die Sie oder ein Übersetzungsbüro bearbeiten können. Nebenbei werden die Anzahl Zeilen und Zeichen der erforderlichen Übersetzungen ausgegeben, so dass Übersetzer einfacher Kostenvoranschläge liefern können.
Im nächsten Schritt nach der Übersetzung importiert das Tool die übersetzten Daten und ordnet sie in die jeweilige Sprachdatei ein. Fertig ist ihr Shop in einer neuen Sprache.

Erweiterungsmöglichkeiten: Auswahl, ob in die Übersetzungsdatei Textbausteine des Backends (Adminbereichs) einbezogen werden sollen.