Beiträge von signatur

    Hallo,

    ich hoffe das ist das richtige Forum für diese Frage.
    Ich bin aktuell dabei den JTL-Connector anzupassen, so dass auch stronierte Bestellungen aus der WaWi in den Shop übertragen werden.

    Dazu habe ich eine Frage:

    Weiß jemand von euch wie sich POST Actions aufschlüsseln bzw. was sich hinter den Integerwerten verbirgt.

    Beispiel:

    Code
    intval($_POST['action']) == 6

    Dieses Stück Code ist aus den Adapterklassen, hier speziell in der SetBestellung.php
    Davon gibt's auch noch die Action mit der Nummerierung, 5, 3, und 4, in dieser und anderen Klassen.

    Danke für eure Hilfe,

    Gruß Heinz

    Hallo Hookup,

    mehrere Tags kannst du einfach mit Kommas separieren. Im Adapter werden diese in einer Schleife ausgewertet.

    Zu den SEO Urls habe ich mir noch keine Gedanken gemacht. Die reine Übertragung dürfte kein Problem sein, müsste über ähnliche Funktionen machbar sein.
    Jedoch denke ich dass die URLs selbst dann etwas tiefer im Shop integriert werden müssen, was aus meiner Sicht nicht ganz trivial zu sein scheint.
    Ich kann nicht direkt abschätzen wieviel Aufwand das sein wird.

    Gruß Heinz

    Hallo,

    ich bin fast am verzweifeln...
    Ich verkaufe in meinem Shop hochwertige Schreibgeräte und möchte dazu auch Tintenpatronen anbieten, es macht jedoch für mich keinen Sinn Tintenpatronen einzeln anzubieten.
    Daher möchte ich einen Mechanismus integrieren der vorgibt, dass Tinte nur in den Warenkorb aufgenommen werden kann, wenn dort bereit bspw. ein Füller ist.

    Dazu habe ich mir schon das Bundle-Modul angesehen, das ist aber nicht so ganz das was ich benötige, deshalb habe ich mich auf den Weg gemacht und versucht selbst etwas zu Programmieren, bin mir aber nicht so wirklich sicher wo ich diesen Code am besten reinhänge. Ich hatte mir gedacht die beste Stelle wäre:

    Code
    cart_actions.php

    und dort die Methode:

    Code
    switch ($_GET['action'])

    und dort wiederum den Case:

    Code
    Case 'add_prodcut'

    Um das zu testen wollte ich mit

    Code
    var_dump()

    direkt als erster auszuführender Code im Case, eine Variable ausgeben lassen. Mir ist dabei aufgefallen, das im Switch auf GET referenziert wird, im verwendeten Case 'add_product' aber POST verwendet wird, weshalb ich auch die Variable POST in meinem Code nehme. Mein Code dazu sieht wie folgt aus:

    Code
    $categorie = xtc_db_fetch_array(xtc_db_query("SELECT categorie_id FROM products_to_categories WHERE products_id = '" . $_POST['products_id'] . "'"));
    var_dump($categorie ['categorie_id'];

    Test-Cases waren sowohl, neues Produkt hinzufügen, im Cart Produktmenge modifizieren und direkt bestellen aus der Kategorie, in keinem der Fäälle kam mein var_dump() im Browser an.

    Habe ich hier was falsch gemacht oder bin ich mit dieser Datei und/oder dem Code ganz am falschen Ende.

    Wo (im Code) würdet ihr so eine Änderung einfügen?

    Danke für eure Hilfe

    Gruß Heinz

    Hallo Heinz,

    ich danke dir ganz herzlich für die umfassende und detaillierte Antwort. Ich habe fast alle Änderungen umsetzen können. Da ich noch mit V2 arbeite, konnte ich den letzten Schritt noch nicht umsetzen, da checkout.php Datei nicht im Ordner /module/ liegt. Ich werde mich in den kommenden Tagen noch einmal ransetzen und die Umstellung abschließen.

    Besten Gruß
    bama

    Hallo bama,

    die Fehlerkorrektur (sieh oben im Skript) müsste evtl. weiterhelfen, wahrscheinlich sind dann auch alle benötigten Dateien in deiner Shopversion auffindbar.

    Gruß Heinz

    Hallo zusammen,

    Ich habe den Text eben nochmal überarbeitet, mir ist ein Fehler im letzten Unterpunkt zu Abschnitt 3 unterlaufen, ich habe die Korrektur mit Rot markiert.
    Zudem muss in Abschnitt 4 nicht die Datei /module/checkout.php sondern /templates/{templateName}/module/checkout.html bearbeitet werden.
    Die Änderungen sind alle im Skript oben eingepflegt, so dass dieses wieder konsistent ist.

    Ich habe das Tutorial heute morgen geschrieben, war wohl doch noch etwas zu früh für so was :rolleyes:

    Habe eben nochmal einen Testshop damit modifiziert, der Rest müsste soweit in Ordnung sein.

    Gruß Heinz

    Ich habe mal folgendes Tutorial zur Umstellung des Shops auf die ab dem 01.08.2012 geltende Buttonlösung zusammengefasst:

    Vorliegendes Tutorial beschreibt nur die technische notwendigen Änderungen im Shop Code und ersetzt bzw. ist keine Rechtsberatung!

    In der aktuellen Version des Shops 2.1 (Die anderen Versionen kenne ich nicht) ist der Button zum endgültigen Abschluß einer Bestellung mit dem Namen "Bestellen" beschriftet.
    Dies ist ab 01. August 2012 nicht mehr zulässig.


    Zitat:
    [INDENT]
    Eindeutige Bezeichnung des Bestell-Buttons

    Gemäß § 312g Abs. 3 BGB n.F. sind die Unternehmer künftig im elektronischen Geschäftsverkehr beim Abschluss entgeltlicher Verträge mit Verbrauchern verpflichtet,
    den Bestellablauf so zu gestalten, dass der Verbraucher mit seiner Bestellung ausdrücklich bestätigt, dass er sich zu einer Zahlung verpflichtet.
    Der Unternehmer muss also eine ausdrückliche Bestätigung des Verbrauchers abfragen und er sollte diesen Vorgang in seinem eigenen Interesse auch dokumentieren.

    Sofern der Verbraucher zur Abgabe der Bestätigung einen Button bzw. eine Schaltfläche betätigen muss, ist dieser Button auf eine bestimmte Weise zu bezeichnen
    - das ist die eigentliche „Button“-Regelung.

    Der Entwurf des Änderungsgesetzes gibt klare Formulierungen, wie der Bestellbutton umbenannt werden darf.

    Zulässig sind danach die folgenden Formulierungen zur Bezeichnung des Bestell-Buttons:

    „zahlungspflichtig bestellen“
    „kostenpflichtig bestellen“
    „zahlungspflichtigen Vertrag schließen“
    „kaufen“

    Laut dem Entwurf des Änderungsgesetzes sind künftig nicht geeignet z.B. die folgenden Bezeichnungen des Bestell-Buttons:
    „Anmeldung“
    „weiter“
    „bestellen“
    „Bestellung abgeben“
    „Bestellung abschließen“

    Auch die Schaltflächenbeschriftung muss gut lesbar sein und es dürfen hier keine weiteren Zusätze hinzugefügt werden.
    Die Ausführungen gelten entsprechend bei der Verwendung von Check-Boxen oder Hyperlinks zur Abfrage der Bestätigung der Kaufentscheidung.


    [/INDENT]Ende Zitat (Quelle: http://www.onlinehaendler-news.de/2012/03/07/ach…-button-losung/)


    Um den abschliessenden Bestell-Button auf "Kaufen" umzustellen sind nachfolgende Aktionen auszuführen.

    • Ersatz der Buttonbeschriftung

      In der Datei:
      lang/german/german.php
      So ungefähr in Zeile 230.

      Suche

      Code
      define('IMAGE_BUTTON_CONFIRM_ORDER', 'Bestellung bestätigen und abschicken');

      und ersetze diesen mit

      Code
      define('IMAGE_BUTTON_CONFIRM_ORDER', 'Kaufen');

      In der Datei:
      lang/english/english.php
      So ungefähr in Zeile 230.

      Suche

      Code
      define('IMAGE_BUTTON_CONFIRM_ORDER', 'Confirm order');

      und ersetze diesen mit

      Code
      define('IMAGE_BUTTON_CONFIRM_ORDER', 'Buy');
    • Änderung des Informationstextes:
      In Datei
      lang/german/lang_german.conf
      Den Abschnitt [checkout_confirmation] suchen.
      So ungefähr in Zeile 344.

      Suche

      Code
      text_information = 'Vor dem Absenden Ihrer Bestellung sehen Sie nochmals die von Ihnen eingegebenen Daten und Produkte, mithilfe der <em><span style="color:#009933">(Bearbeiten)</span></em> Links neben den einzelnen Daten haben Sie nochmals die M&ouml;glichkeit diese zu korrigieren.<br />Den Bestellvorgang k&ouml;nnen Sie jederzeit durch Schliessen des Browser-Fensters beenden, oder durch dr&uuml;cken des <strong>Bestellen</strong>-Buttons abschliessen.'

      Ändern in:

      Code
      text_information = 'Vor dem Absenden Ihrer Bestellung sehen Sie nochmals die von Ihnen eingegebenen Daten und Produkte, mithilfe der <em><span style="color:#009933">(Bearbeiten)</span></em> Links neben den einzelnen Daten haben Sie nochmals die M&ouml;glichkeit diese zu korrigieren.<br />Den Bestellvorgang k&ouml;nnen Sie jederzeit durch Schliessen des Browser-Fensters beenden, oder durch dr&uuml;cken des <strong>Kaufen</strong>-Buttons abschliessen.'



      Genau das Selbe in in englisch:
      Datei lang/english/lang_english.conf
      Abschnitt [checkout_confirmation] suchen.
      So ungefähr in Zeile 330.

      Suche

      Code
      text_information = 'Bevore you confirm your order on this site, you can change your address and products by editing them. Click on <em><font color="#009933">(Edit)</font></em> links to your data).<br />You can cancel your order by closing your browser, or confirm your order by pressing the <b>Confirm Order</b> Button at the end of your product list. '

      Ändern in

      Code
      text_information = 'Bevore you confirm your order on this site, you can change your address and products by editing them. Click on <em><font color="#009933">(Edit)</font></em> links to your data).<br />You can cancel your order by closing your browser, or confirm your order by pressing the <strong>Buy</strong> Button at the end of your product list.'

      Eventuelle Hinweise in der AGB auf den Betsellvorgang ebenfalls abändern, so das im Hinweis auf die Buttonbeschriftung der Name 'Kaufen' verwendet wird.


    • Um eine Artikelbeschreibung bzw. die Kurzbeschreibung in die Checkoutseite aufzunehmen, was ja auch Bestandteil des Gesetzestext ist sind folgende Änderungen nötig:
      • In Datei:
        /includes/classes/order.php
        Ungefähr in Zeile 390

        Suche

        Code
        $this->products[$index] = array('qty' => $products[$i]['quantity'],					    'name' => $products[$i]['name'],	 				    'model' => $products[$i]['model'],

        danach folgenden Code eingeben:

        Code
        'description' => $products[$i]['description'],'short_description' => $products[$i]['short_description'],
      • In Datei:
        /includes/classes/shopping_cart.php in der Funktion get_products()
        Ungefähr in Zeile 320
        Suche
        Code
        $products_query = xtc_db_query("select p.products_id, pd.products_name, p.products_shippingtime, p.products_image, 	p.products_model, p.products_price, p.products_discount_allowed, p.products_weight, p.products_tax_class_id from ".TABLE_PRODUCTS." p, 	".TABLE_PRODUCTS_DESCRIPTION." pd where p.products_id='".xtc_get_prid($products_id)."' and pd.products_id = p.products_id 	and pd.language_id = '".$_SESSION['languages_id']."'");

        ersetze mit diesem Code:

        Code
        $products_query = xtc_db_query("select p.products_id, pd.products_name, pd.products_description, pd.products_short_description, 	p.products_shippingtime, p.products_image, p.products_model, p.products_price, p.products_discount_allowed, p.products_weight, 	p.products_tax_class_id from ".TABLE_PRODUCTS." p, ".TABLE_PRODUCTS_DESCRIPTION." pd where p.products_id='".xtc_get_prid($products_id)."' 	and pd.products_id = p.products_id and pd.language_id = '".$_SESSION['languages_id']."'");

        weiter unten, in der gleichen Datei und Funktion, ungefähr in Zeile 330

        Suche

        Code
        $products_array[] = array ('id' => $products_id, 							   'name' => $products['products_name'],

        danach, direkt in den Code die beiden neuen Werte wie folgt mit aufnehmen:

        Code
        'description' => $products['products_description'],	'short_description' => $products['products_short_description'],

        So dass die der Code nun so aussieht:

        Code
        $products_array[] = array ('id' => $products_id, 							   'name' => $products['products_name'], 							   'description' => $products['products_description'],							   'short_description' => $products['products_short_description'],
      • In Datei:
        /checkout.php Achtung, hier ist mir ein Fehler unterlaufen, richtig ist die Datei /includes/classes/checkout.php !
        Ungefähr in Zeile 240,
        Suche
        Code
        (ACTIVATE_SHIPPING_STATUS=='true'?'<span class="fs85"><nobr><em>' . SHIPPING_TIME . $order->products[$i]['shipping_time'] . '</em><nobr></span>':'').'<br /><br />'.

        davor eingeben

        Code
        (!empty($order->products[$i]['short_description'])?$order->products[$i]['short_description']:$order->products[$i]['description']). '</strong><br />' .

        Mit dieser Funktion wird die Kurzbeschreibung angezeigt, fehlt diese wird die Beschreibung des Artikels angezeigt - es sollte jedoch bedacht werden, das die Beschreibung kurz gehalten wird
        damit zwischen der Artikelliste und dem Kaufen-Button, während des Checkouts möglichst nicht gescrollt werden muss, es sei denn die Artikelliste ist zu lang.

    • Verschieben des Kaufen Button, direkt unter die Produktliste.
      In Datei:
      /templates/{templateName}/module/checkout.html
      Ungefähr in Zeile 246,
      Suche
      Code
      <div class="checkout_total" id="checkout_total">{$ORDER_TOTAL}</div><br /><div class="left">{$BUTTON_ORDER_BACK}</div><div class="checkout_button">{$HIDDEN_XAJAX}{$BUTTON_ORDER}</div>


      und verschiebe diesen innerhalb dieser Datei weiter nach oben, wie folgt.
      Suche

      Code
      {$FORM_ACTION}


      und füge direkt danach den von weiter unten ausgeschnittenen Code ein.

      Füge gleich im Anschluss zusätzlich zwei Zeilen ein mit Code:

      Code
      <div class="checkout_spacer">&nbsp;</div>


      Das ist nicht Lebensnotwendig, damit wird aber die Seite etwas übersichtlicher und die Sektionen kleben nicht so aufeinander.

      So dass der Code nun so aussieht:

      Code
      {$FORM_ACTION}
      <div class="checkout_total" id="checkout_total">{$ORDER_TOTAL}</div><br />
      <div class="left">{$BUTTON_ORDER_BACK}</div>
      <div class="checkout_button">{$HIDDEN_XAJAX}{$BUTTON_ORDER}</div>
      <div class="checkout_spacer">&nbsp;</div>
      <div class="checkout_spacer">&nbsp;</div>



    Mit der Bitte um Feedback, solltet ihr irgendwelche Fehler finden oder Ergänzungen zum Text haben.

    Grüße Heinz
    Signatur-E

    Hallo zusammen,

    im Zuge eines Problems habe ich gleich meine Verlinkung aus den Bewertungen angepasst.
    Das Standardverhalten ist, dass die Produkt-Abbildung in der Bewertung auf ein popup der Abbildung verlinkt.
    Das hat mir nicht gefallen, ich wollte vielmehr, dass durch einen Klick auf die Abbildung ebenso direkt auf den Artikel verlinkt wird.

    Das habe ich so gelöst:
    In Datei:
    /product_reviews_info.php

    diesen Code suchen:

    Code
    $smarty->assign('IMAGE', '<a href="javascript:popupImageWindow(\''.xtc_href_link(FILENAME_POPUP_IMAGE, 'pID='.$reviews['products_id']).'\')">'.xtc_image(DIR_WS_THUMBNAIL_IMAGES.$reviews['products_image'], $reviews['products_name'], '', '', 'align="center" hspace="5" vspace="5"').'<br /></a>');

    und mit diesem ersetzen:

    Code
    $smarty->assign('IMAGE', xtc_image(DIR_WS_THUMBNAIL_IMAGES.$reviews['products_image'], $reviews['products_name'], '', '', 'align="center" hspace="5" vspace="5"').'<br />');

    anschliessend in Datei:
    /templates/{dein-template}/module/product_reviews_info.html

    diesen Code suchen:

    Code
    <div>{$IMAGE}<br />

    und mit diesem ersetzen:

    Code
    <div><a href="{$PRODUCTS_LINK}">{$IMAGE}</a><br />

    in diesem Sinne, happy Coding
    Gruß Heinz

    Ich habe die Lösung gefunden,

    in der Datei:

    Code
    /templates/{Dein-Template}/source/boxes/reviews.php

    diese Code suchen:

    Code
    <a href="review-'.$random_product['reviews_id'].'/'.cseo_get_url_friendly_text($random_product['products_name']).'">

    Achtung, die Codesequenz kommt zwei mal vor, einmal für die Abbildung und noch einmal für den Text. Beide müssen angepasst werden.

    gegen diesen Code tauschen.

    Code
    <a href="review-'.$random_product['reviews_id'].'/'.cseo_get_url_friendly_text($random_product['products_name']).'.html">

    Der Unterschied ist das ".html" zwischen den Anführungszeichen hinten.

    Gruß Heinz

    Hallo zusammen,

    das selbe habe ich eben auch in meinem Shop festgestellt. in der URL die hinter dem Produkt oder der Beschreibung hinterlegt ist, fehlt das abschliessende ".html" und erzeugt dadurch bei einem Klick eine 404.
    Kopiere ich den Link in ein anderes Browserfenster und schreibe ".html" hinten an die URL funktioniert es soweit.

    Nun die Frage, wo muss ich hinfassen um die URL in Bewertungen anzupassen?

    Danke für eure Hilfe,
    Grüße Heinz

    Analog zu meinem vorigen Beitrag zu Artikeln verhält es sich mit den Kategorien, auch diese werden bei Deaktivierung oder Löschung in der JTL-WaWi im Shop nur deaktiviert und bei erneutem hinzufügen neu erstellt, so dass sich hier über die Zeit eine Menge an Kategorie-Leichen bilden die zudem keinen Namen mehr tragen. Um dies zu umgehen, habe ich den JTL-WaWi Connector entsprechend angepasst und möchte euch heute das Ergebnis vorstellen.

    in der Datei: admin\includes\modules\jtlwawi_connector\dbeS\Kategorie.php

    nach folgendem Code suchen:

    Code
    if ($cat>0)[INDENT]eS_execute_query("update categories set categories_status=0 where categories_id=".$cat);[/INDENT]

    die Zeile startend mit eS_execute_query auskommentieren und folgenden Code dahinter in eine neue Zeile einfügen

    Code
    [INDENT]eS_execute_query("delete from categories where categories_id=".$cat);eS_execute_query("delete from categories_description where categories_id=".$cat); [/INDENT]


    so dass der Code abschliessend so aussieht:

    Code
    if ($cat>0)
    [INDENT]//eS_execute_query("update categories set categories_status=0 where categories_id=".$cat);
    eS_execute_query("delete from categories where categories_id=".$cat);
    eS_execute_query("delete from categories_description where categories_id=".$cat);[/INDENT]

    happy coding,
    Gruß Heinz

    Werden Artikel in der JTL-WaWi gelöscht, werden diese im Shop lediglich deaktiviert. Da eine Best Practise aber vorsieht die Artikel nur an einer Stelle, in diesem Fall der WaWi zu pflegen macht es keinen Sinn diese im Shop nur zu deaktivieren. zumal diese bei Neueinstellung oder Reaktivierung in der WaWi im Shop nicht reaktiviert sondern neu eingestellt werden. Mit der Zeit sammelt sich so eine ganze Menge an deaktivierten Artikeln im Shop.

    Ich habe dies bei mir so geregelt, indem ich direkt in der Datenbank des Shops die entsprechenden Artikel lösche.

    in der Datei: admin\includes\modules\jtlwawi_connector\dbeS\Artikel.php

    Suche nach:

    Code
    [INDENT]if ($products_id>0)[INDENT]eS_execute_query("update products set products_status=0 where products_id=".$products_id);[/INDENT]$return = 0;[/INDENT]


    die vorige Zeile auskommentieren (so gibt's immer noch einen Weg zurück) und den folgenden Code einsetzen:

    Code
    [INDENT]eS_execute_query("delete from products where products_id=".$products_id);eS_execute_query("delete from products_attributes where products_id=".$products_id);eS_execute_query("delete from products_description where products_id=".$products_id);eS_execute_query("delete from products_images where products_id=".$products_id);eS_execute_query("delete from products_to_categories where products_id=".$products_id);eS_execute_query("delete from products_xsell where products_id=".$products_id);eS_execute_query("delete from eazysales_martikel where products_id=".$products_id);[/INDENT]


    so dass die finale Code-Passage wie folgt aussieht:

    happy coding,
    Gruß Heinz

    Hallo,

    da ich meine Artikel vollständig in der JTL-WaWi pflege habe ich die Übertragung der Artikel Tags vermisst, also habe ich mich dieses Wochenende hingesetzt und habe den Connector etwas aufgebohrt.
    Jetzt ist es möglich in der WaWi ein Funktionsattribu mit dem Namen "Cloud" anzulegen und diesem eine Komma-Separierte Liste mit Tags zu übergeben.

    in Datei: admin\includes\modules\jtlwawi_connector\dbeS\Attribute.php

    Suche nach:

    Code
    [INDENT]switch (strtolower($Attribut->name))[/INDENT]


    und füge folgenden Case in die Liste ein. Die Implementierung löscht zunächst alle bestehenden Tags des aktuellen Artikels und fügt die neuen, in der WaWi definierten, Tags zum aktuellen Artikel hinzu.

    dies ist mein erstes PHP-Projekt, deshalb kann es sein, dass manches sicher besser gemacht werden kann, deshalb bin ich auch für Feedback dankbar.

    Grüße, Heinz

    Hallo zusammen,

    ich bin kurz vor dem Verzweifeln. Da dies mein erster Eintrag im Forum ist, hoffe ich das ich ihn in die richtige Gruppe gestellt habe. Meine Recherchen haben leider nichts ergeben.

    Ich habe meine Sitemap.xml in die Google Webmaster eingespielt und bekomme jede Menge 404 Fehler wenn Google meine Seite crawlt und zwar stößt sich Google an einem Script Segment zu dem er den Link nicht finden kann.
    Ein Beispiel hierfür ist folgende URL die im Code einer Produktdetailseite innerhalb eines Script Tags steckt: document.cart_quantity.action ="http://www.signatur-eshop.de/Diplomat-Edelh…ion=add_product". die Fehlermeldung von Google ist URL: http://www.signatur-eshop.de/Diplomat-Edelh…ion=add_product , Antwortcode: 404.
    Dass ist so auch korrekt, denn diese Url gibt es nicht. sondern nur den Teil vor action=add_product.
    Ich nehme an dies ist eine Funktion um das Produkt in den Warenkorb aufzunehmen ist, was aber ohne Probleme funktioniert.

    Ach ja, ich verwende SEO-URLs und habe eigentlich keine funktionellen Fehler festgestellt, nur dass Google mich nicht indexieren will bzw. bei jeder Seite einen Fehler anzeigt.

    Habe ich da irgendwo eine Option falsch gesetzt oder muss das so sein?

    Hier mal ein Link direkt zu einer Produktseite in deren Quelltext genau das Beispiel von oben auftritt: http://www.signatur-eshop.de/Diplomat-Edelh…-Tintenglas.htm

    Vorab schonmal vielen Dank für eure Hilfe.

    Grüße, Heinz