Shop Hosting
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: Produktliste "Auf den Merkzettel" wie?

    nicson

    • Fördermitglied
    • Beiträge: 132
    Produktliste "Auf den Merkzettel" wie?
    am: 25. Februar 2017, 13:14:01
    Hallo also irgendwie hänge ich gerade, ich möchte z.B. Produktliste oder Box beim Artikel einen Link "auf den Merkzettel".

    Soweit ich das anhand der product_info nachvollziehen kann geht das über (korrigiert mich falls ich falsch liege :) ):
    Code: XML  [Auswählen]
    <form id="cart_quantity" action="http://xxx.de/product_info.php?products_id=3&action=add_product" method="post">

    So, eigentlich ganz einfach ;)

    Also in der Produktliste zu jedem Produkt ein entsprechendes Form ausspucken lassen:
    Code: XML  [Auswählen]
    <form action="http://xxx.de/product_info.php?products_id=4&action=add_product" method="post">

    Eigentlich fehlt entgegen dem Form auf der Product-Info Seite nur die id (gaht ja nicht, multiple Id).

    Das absenden, also klick auf "Produkt Merken" bringt leider dann ein "ERR_TOO_MANY_REDIRECTS", bevor ich nun weiter grabe...

    Gibt es da eine bereits bekannte Möglichkeit die ich evtl. noch nicht gefunden habe?

    Linkback: https://www.modified-shop.org/forum/index.php?topic=36767.0

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Produktliste "Auf den Merkzettel" wie?
    Antwort #1 am: 25. Februar 2017, 14:06:45
    Hallo also irgendwie hänge ich gerade, ich möchte z.B. Produktliste oder Box beim Artikel einen Link "auf den Merkzettel".
    [...]

    In 'includes/classes/product.php' fidest Du folgende Funktion

    Code: PHP  [Auswählen]
      /**
       * getCartToWishlistLink
       *
       * @param integer $id
       * @param string $name
       * @return string
       */

      function getCartToWishlistLink($id, $name) {
        global $PHP_SELF;
       
        if (defined('MODULE_WISHLIST_SYSTEM_STATUS') && MODULE_WISHLIST_SYSTEM_STATUS == 'true') {
          return '<a href="'.xtc_href_link(basename($PHP_SELF), xtc_get_all_get_params(array('action','BUYproducts_id')).'action=cart_wishlist&BUYproducts_id='.$id, 'NONSSL').'">'.TEXT_TO_WISHLIST.'</a>';
        }
      }
     

    und in 'includes/modules/order_details_cart.php' bzw. in 'templates/tpl_modified/module/order_details.html' findest Du dieses Anwendungsbeispiel.

    Code: PHP  [Auswählen]
    'BUTTON_WISHLIST' => $product->getCartToWishlistLink($products[$i]['id'], $products[$i]['name']
    Code: XML  [Auswählen]
    {if $module_data.BUTTON_WISHLIST != ''}<span class="ord_wishlist">&laquo; {$module_data.BUTTON_WISHLIST}</span>{/if}

    Hoffe das Hilft.

    Gruss
    Hanspeter

    nicson

    • Fördermitglied
    • Beiträge: 132
    Re: Produktliste "Auf den Merkzettel" wie?
    Antwort #2 am: 25. Februar 2017, 17:42:29
    Hi, also das hat schon etwas geholfen.

    Allerdings setzt die Funktion vorraus dass sich der Artikel im Warenkorb befindet, wie der Name schon sagt "CartToWishlistLink" bringt also z.B. in der Produktliste leider nichts.

    Hab einen Versuch mit:

    Code: PHP  [Auswählen]
    {$smarty.const.FILENAME_SHOPPING_CART|xtc_href_link:'action=cart_wishlist&BUYproducts_id='}{$module_data.PRODUCTS_ID}{literal}{{/literal}{$module_data.PRODUCTS_ID}{literal}}{/literal}{$module_data.PRODUCTS_ID}
     
    gemacht. Der Link würde passen, aber leider nix Warenkorb > Merkliste WEIL nix im Warenkorb :)
    Hieran ändert auch FILENAME_DEFAULT o.ä. nichts, da einfach nichts im Warenkorb ist das in die Merkliste verschoben werden kann.

    Gibt es irgendwo ein wenig Doku zu den extra/modules ? Wie muss hier der Aufbau sein?
    Habe zwar das gefunden: https://www.modified-shop.org/wiki/Tutorial:_Zus%C3%A4tzliche_Datenfelder_Artikel_ab_Shopversion_2.x aber um sowas zu bauen müsste man erstmal wissen dass
    Code: PHP  [Auswählen]
    $add_select_product[]
    der Abfrage was hinzufügt.

    Wie wäre das z.B. bei includes/extra/modules/product_listing_begin , wenn es hier was ähnliches gäbe wie $add_list_product[] = getWishlistLink($product_id) natürlich müsste man sich die Funktion selber schreiben aber daran soll es nicht scheitern.

    Da es ein Allgemeines Template wird das (wenn fertig) auch Verkauft werden soll wäre es schon wichtig nichts am Core ändern zu müssen. Ich bin eigentlich ziemlich weit und konnte bisher alles ohne Änderungen am Core umsetzen, so soll das auch bleiben :)

    nicson

    • Fördermitglied
    • Beiträge: 132
    Re: Produktliste "Auf den Merkzettel" wie?
    Antwort #3 am: 25. Februar 2017, 21:14:01
    Ok, also es geht mit ein wenig suchen im Codeablauf... ;)
    Angepassten Link erstellen lassen und parallel dazu ein passendes Script in /includes/extra/cart_actions/add_product_prepare_post/ ablegen.

    Wie immer prima Arbeit vom modified Team, wenn man weis wie ganz easy :)

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Produktliste "Auf den Merkzettel" wie?
    Antwort #4 am: 25. Februar 2017, 23:15:23
    Hi, also das hat schon etwas geholfen.

    Allerdings setzt die Funktion vorraus dass sich der Artikel im Warenkorb befindet, wie der Name schon sagt "CartToWishlistLink" bringt also z.B. in der Produktliste leider nichts.
    [...]

    Sorry, stimmt habe ich mich verlugt!

    Gruss
    Hanspeter

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Produktliste "Auf den Merkzettel" wie?
    Antwort #5 am: 26. Februar 2017, 00:21:31
    Hier ein rein templatebasierter Lösungsvorschlag für Produktlisten:

    In '/templates/tpl_modified/module/includes/product_listing_include.html' an geeigneten Stellen folgenden Code einfügen.

    Code: PHP  [Auswählen]
    {if defined($smarty.const.MODULE_WISHLIST_SYSTEM_STATUS) && $smarty.const.MODULE_WISHLIST_SYSTEM_STATUS == 'true'}
      {assign var="get_all_get_params" value=array('action','BUYproducts_id','wishlist')|xtc_get_all_get_params}
      <a href="{basename($smarty.server.PHP_SELF)|xtc_href_link:"`$get_all_get_params`action=buy_now&wishlist=1&BUYproducts_id=`$module_data.PRODUCTS_ID`"}">{$smarty.const.TEXT_TO_WISHLIST}</a>
    {/if}

    PS:
    Solchen Code würde ich nach Möglichkeit vermeiden {literal}{{/literal} und statdessen  diesen Code {ldelim} verwenden.

    Ausserdem kann der folgende von dir gepostete Code

    Code: PHP  [Auswählen]
    {$smarty.const.FILENAME_SHOPPING_CART|xtc_href_link:'action=cart_wishlist&BUYproducts_id='}{$module_data.PRODUCTS_ID}{literal}{{/literal}{$module_data.PRODUCTS_ID}{literal}}{/literal}{$module_data.PRODUCTS_ID}

    zu solch einem Ergebnis führen

    Code: PHP  [Auswählen]
    http://domain.tld/shopping_cart.php?action=cart_wishlist&BUYproducts_id=&MODsid=234cd708589c9a8adcf66089948b17404{4}4

    Gruss
    Hanspeter

    web28

    • modified Team
    • Beiträge: 9.404
    Re: Produktliste "Auf den Merkzettel" wie?
    Antwort #6 am: 26. Februar 2017, 11:01:49
    Ein {debug} in einer Template html zeigt einem alle verfügbaren Smarty  Variablen an.

    Und mit $module_data.PRODUCTS_BUTTON_WISHLIST_NOW und $module_data.PRODUCTS_BUTTON_WISHLIST_NOW hat man sogar 2 Möglichkeiten

    Gruss Web28

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Produktliste "Auf den Merkzettel" wie?
    Antwort #7 am: 26. Februar 2017, 11:14:21
    Eine Dokumentation der verfügbaren Smarty Variablen wäre ausserordentlich nützlich :!:

    Gruss
    Hanspeter

    web28

    • modified Team
    • Beiträge: 9.404
    Re: Produktliste "Auf den Merkzettel" wie?
    Antwort #8 am: 26. Februar 2017, 11:30:36
    Hallo Hanspeter,

    da gebe ich dir Recht.

    Allerdings wäre das a) ein großer Arbeits und Zeitaufwand und b) bekommt man die gewünschte Info mit {debug}

    {debug} hat auch den Vorteil das es auch neu eingbaute Zusatzmodule mit abdeckt.

    Gruss Web28

    karsta.de

    • Experte
    • Beiträge: 3.159
    Re: Produktliste "Auf den Merkzettel" wie?
    Antwort #9 am: 26. Februar 2017, 11:39:37
    Man sollte vielleicht erwähnen, wenn man den Button
    Code: PHP  [Auswählen]
    {if $module_data.PRODUCTS_BUTTON_WISHLIST_NOW}{$module_data.PRODUCTS_BUTTON_WISHLIST_NOW}{/if}
    im Productlisting verwendet, Artikel mit Artikeloptionen (z.B. Größe M,L, XL) nicht auf der Merkliste landen, sondern dass man dann erst einmal zum Artikel direkt geleitet wird und dort nochmal nach Auswahl der Artikeloptionen den Artikel auf die Merkliste setzen muß.

    BG kgd

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Produktliste "Auf den Merkzettel" wie?
    Antwort #10 am: 26. Februar 2017, 14:23:22
    [...]
    Und mit $module_data.PRODUCTS_BUTTON_WISHLIST_NOW und $module_data.PRODUCTS_BUTTON_WISHLIST_NOW hat man sogar 2 Möglichkeiten

    Gruss Web28

    Sollte obiges nicht so lauten?

    Zitat
    Und mit $module_data.PRODUCTS_BUTTON_WISHLIST_NOW und $module_data.PRODUCTS_LINK_WISHLIST_NOW hat man sogar 2 Möglichkeiten

    Muss dieses Feature im Admin noch zusätzlich zur Aktivierung des Merkzettels in Module -> System Module aktiviert werden, bei mir im Smarty-Debug in der '/templates/tpl_modified/module/includes/product_listing_include.html' sind die Variablen nämlich leer,

        PRODUCTS_BUTTON_WISHLIST_NOW => ""
        PRODUCTS_LINK_WISHLIST_NOW => ""

    auf folgendem System.

    modified eCommerce Shopssoftware v2.0.2.1 rev 10607 dated: 2017-01-25
    PHP Version 7.1.0

    Gruss
    Hanspeter

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Produktliste "Auf den Merkzettel" wie?
    Antwort #11 am: 26. Februar 2017, 15:22:34
    [...]
    Muss dieses Feature im Admin noch zusätzlich zur Aktivierung des Merkzettels in Module -> System Module aktiviert werden, bei mir im Smarty-Debug in der '/templates/tpl_modified/module/includes/product_listing_include.html' sind die Variablen nämlich leer,

        PRODUCTS_BUTTON_WISHLIST_NOW => ""
        PRODUCTS_LINK_WISHLIST_NOW => ""
    [...]

    Habs gefunden, Der Merkzettel Button steht einem in Produktlisten nur zur Verfügung wenn auch in Konfiguration -> Artikel Listen Optionen -> Zeige "Warenkorb"-Button in den Produktlisten auf Ja steht.

    Eigentlich schade, wäre schön wenn man den Merkzettel in Produktlisten separat, also auch hohen Warenkorb Button anzeigen könnte.

    Gruss
    Hanspeter

    Roberto75

    • Viel Schreiber
    • Beiträge: 836
    Re: Produktliste "Auf den Merkzettel" wie?
    Antwort #12 am: 26. Februar 2017, 19:00:25
    Das kann ich nicht nachvollziehen, der Merklisten-Button erscheint auch bei einem fremden Template, wenn der Warenkorb-Button in der Produktübersicht nicht angezeigt wird. So sollte es auch sein.

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Produktliste "Auf den Merkzettel" wie?
    Antwort #13 am: 26. Februar 2017, 20:29:01
    Das kann ich nicht nachvollziehen, der Merklisten-Button erscheint auch bei einem fremden Template, wenn der Warenkorb-Button in der Produktübersicht nicht angezeigt wird. So sollte es auch sein.

    Bei der Shopssoftware v2.0.2.1 rev 10607 dated: 2017-01-25 werden in der '/includes/classes/product.php' mit folgendem Code die Bedingungen festgelegt, unter welchen der Button für den Merkzettel bzw. der Link dort hin erzeugt wird

    Code: PHP  [Auswählen]

        //create buy now button
        $buy_now = '';
        $wishlist_now = '';
        $wishlist_now_link = '';
        if ($_SESSION['customers_status']['customers_status_show_price'] != '0' && defined('SHOW_BUTTON_BUY_NOW') && SHOW_BUTTON_BUY_NOW != 'false'
            && ($_SESSION['customers_status']['customers_fsk18'] != '1' || (isset($array['products_fsk18']) && $array['products_fsk18'] == '0')) ) {
          $buy_now = $this->getBuyNowButton($array['products_id'], $array['products_name']);
          if (defined('MODULE_WISHLIST_SYSTEM_STATUS') && MODULE_WISHLIST_SYSTEM_STATUS == 'true') {
            $wishlist_now = $this->getWishlistNowButton($array['products_id'], $array['products_name']);
            $wishlist_now_link = $this->getWishlistNowButton($array['products_id'], $array['products_name'], true);
          }
        }

    und mit folgendem Code in der '/includes/classes/product.php' werden Sie Smarty übergebebn.

    Code: PHP  [Auswählen]
          'PRODUCTS_BUTTON_WISHLIST_NOW' => $wishlist_now,
          'PRODUCTS_LINK_WISHLIST_NOW' => $wishlist_now_link,

    Aus obigem Code ist klar ersichtlich, das folgendes gilt "Der Merkzettel Button steht einem in Produktlisten nur zur Verfügung wenn auch in Konfiguration -> Artikel Listen Optionen -> Zeige "Warenkorb"-Button in den Produktlisten auf Ja steht." wenn in einer konkreten Shopinstallation dies anders funktioniert, dann wurde bei dieser Shopinstallation gegenüber dem Standard am Code etwas geändert oder etwas hinzugefügt, wenn auch vielleicht nur am Template.

    Gruss
    Hanspeter

    nicson

    • Fördermitglied
    • Beiträge: 132
    Re: Produktliste "Auf den Merkzettel" wie?
    Antwort #14 am: 26. Februar 2017, 23:49:51
    Also die einfachste Methode ist wie oben genannt einfach einen Link im Template erstellen lassen:

    Code: XML  [Auswählen]
    http://xxx.de/index.php?wishlist=true&action=add_product&products_id="PRODUCT_ID"

    und dann der Funktion "add_product" mittels Hook "cart_actions/add_product_prepare_post/" $_GET beibringen, das wars. Keine Änderungen am Core & kein aufwendiges Templategefummel :)

    Durch die eingebauten Hooks kann man sich Programmiertechnisch auch Mal etwas von Smarty entfernen, auch mir fiel das anfangs nicht ganz leicht... aber nun so in der Praxis muss ich sagen super gelöst, das System wird dadurch "einfach" noch flexibler.
    6 Antworten
    5045 Aufrufe
    12. März 2018, 14:32:49 von andy.kegel
    10 Antworten
    11145 Aufrufe
    06. Juli 2011, 15:49:42 von Tomcraft
    3 Antworten
    5312 Aufrufe
    13. Mai 2011, 09:00:31 von Tomcraft
               
    anything