Contao-Camp 2024
Ergebnis 1 bis 24 von 24

Thema: Produkt automatisch dem Warenkorb hinzufügen

  1. #1
    Contao-Fan Avatar von webster
    Registriert seit
    15.09.2010.
    Ort
    Kiel
    Beiträge
    460

    Frage Produkt automatisch dem Warenkorb hinzufügen

    Hallo zusammen,
    folgendes Problem:
    ich möchte beim Aufrufen des Warenkorbs selbigen ein Produkt automatisch hinzufügen. Dafür gibt es wohl die Funktion addToCart() bzw. addProduct(), diese erwarten als Parameter aber ein Objekt - eben das Produkt, das ich hinzufügen möchte. Dieses Objekt muss ich nun irgendwie erzeugen. Wie? Ich habe es hiermit versucht:
    PHP-Code:
    $produkt=$this->Isotope->getProduct(id-des-Produkts); 
    bekomme dabei aber immer eine Fehlermeldung
    Call to undefined method Isotope::getProduct()
    Wie rufe ich diese Funktion auf?

    Und wenn das dann endlich funktioniert stehe ich wahrscheinlich gleich vor dem nächsten Problem. Wie füge ich dieses Objekt nun dem Warenkorb hinzu, sprich wie rufe ich die Funktion addToCart() oder auch addProduct() auf?

    Viele Fragen - hoffentlich kann jemand einem Isotope-Anfänger helfen...

  2. #2
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Die Frage ist, was für eine Klasse du verwendest, um die entsprechende Funktion auszuführen.

    Ein kleines Beispiel:

    PHP-Code:
    class ModuleAddProduct extends ModuleIsotope
    {

        public function 
    generate()
        {
            if (
    TL_MODE == 'FE')
            {
                
    $this->Isotope->addProduct($this->getProduct(*product_id*, 1));
            }
        }

    Die Funktion getProduct() funktioniert aber nur, wenn deine Klasse ein Kind von ModuleIsotope oder ContentIsotope ist. Die Funktion addProduct() erwartet ausserdem eine Anzahl (siehe Klasse IsotopeProductCollection), und natürlich wird das Produkt im Beispielfall bei jedem Aufrufen der Seite nochmals hinzugefügt...
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  3. #3
    Contao-Fan Avatar von webster
    Registriert seit
    15.09.2010.
    Ort
    Kiel
    Beiträge
    460

    Standard

    Vielen Dank für Deine ständige Hilfe. Mittlerweile habe ich das Problem gelöst und ich bin froh darüber, dass mein Lösungsweg dem entspricht, was Du mir vorgeschlagen hast. Dass das Produkt bei jedem Seitenaufruf neu hinzugefügt wird habe ich dann auch bemerkt; das ließ sich aber natürlich relativ leicht umgehen indem ich überprüft habe, ob das Produkt bereits im Warenkorb liegt.
    Und nun hoffe ich, dass ich mein Projekt ohne weitere Probleme beenden kann.

  4. #4
    Contao-Nutzer
    Registriert seit
    10.01.2011.
    Beiträge
    10

    Standard

    Hallo,

    habe ein Problem mit diesem Thema =)

    Ich habe die Threads dazu durchgelesen und das auch gleich ausprobiert.
    Dazu habe ich ein Element erstellt mit eigenem HTML Code.
    Von dort aus rufe ich dann mein Template auf.
    In dem selben Artikel befindet sich ein Element welches meine Produktliste beinhaltet.

    Nun möchte ich auf Knopfdruck alle diese Produkte in den Warenkorb legen.
    Dazu dachte ich mir, ich mach das mit "Produkt automatisch dem Warenkorb hinzufügen".

    Mein Template enthält folgenden Source:
    PHP-Code:
        <?php
                
    class ModuleAddProduct extends ModuleIsotope
            
    {

                public function 
    generate()
                {
                    if (
    TL_MODE == 'FE')
                    {
                        
    $this->Isotope->addProduct($this->getProduct("iso_product_70"1));
                    }
                }
            }  
            
        
    ?>
    genau das, was ihr schon vorgeschlagen habt.

    Ich bekomme folgende Fehlermeldung:
    "Fatal error: Class ModuleAddProduct contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Module::compile) in /mnt/webc/20/05/5139605/htdocs/demoshop/templates/anmeldung_absenden.tpl on line 13"

    Klingt ja danach, als könnte ich nicht einfach so auf die Klasse drauf zu greifen!? Wie implementiere ich diese?

    Oder gibt es vllt eine Möglichkeit die aktuelle "Produktliste" auf einmal in den Warenkorb zu legen?

    Lieben Gruß
    Pusteblume

  5. #5
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Mach noch folgendes in deine Klasse nach der generate()-Funktion:

    PHP-Code:
    protected function compile() {} 
    Geändert von andreas.schempp (10.01.2011 um 13:51 Uhr)
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  6. #6
    Contao-Nutzer
    Registriert seit
    10.01.2011.
    Beiträge
    10

    Standard

    danach oder darein?

    PHP-Code:
            class ModuleAddProduct extends ModuleIsotope
            
    {

                public function 
    generate()
                {
                    if (
    TL_MODE == 'FE')
                    {
                        
    $this->Isotope->addProduct($this->getProduct("iso_product_70"1));
                    }
                }
                
                protected function 
    complile() {} 
            } 

    geht nicht, selbe fehlermeldung. Danke für die fixe Antwort =)

  7. #7
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Meeh... Tippfehler.


    compile() nicht complile()
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  8. #8
    Contao-Nutzer
    Registriert seit
    10.01.2011.
    Beiträge
    10

    Standard

    hm schade, er schmeißt zwar keine fehlermeldung mehr, aber es tut sich nichts.

    haste ne idee?

  9. #9
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Müsste es nicht $this->Isotope->Cart->addProduct(...) sein?
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  10. #10
    Contao-Nutzer
    Registriert seit
    10.01.2011.
    Beiträge
    10

    Standard

    ^^ komisch bei meinem Vorgänger scheints ja zu funktionieren.

    Ne hab ausprobiert geht gar nicht..... also tut sich genau so wenig.

  11. #11
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    getProduct() erwartet die Produkt-ID. Entweder ID benutzen oder getProductByAlias() oder sowas ähnliches (siehe Modul).
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  12. #12
    Contao-Nutzer
    Registriert seit
    10.01.2011.
    Beiträge
    10

    Standard

    ich habe schon versucht die ID zu übergeben. Wenns denn die ID war^^
    also hier siehst du meine produktliste... ist dann nicht die ID von meinem Produkt: "iso_product_79"


    HTML-Code:
    <div class="product_list">
    
    	<div class="product product_odd product_first row_0 row_odd row_first row_last">
    		<form action="index.php/..." id="iso_product_79" name="2074245121" method="post" enctype="application/x-www-form-urlencoded">
    		<div class="formbody">
    			<input type="hidden" name="FORM_SUBMIT" value="iso_product_79" />
    
    			<h3><a href=""></a></h3>
    
    			<span id="images_79_thumbnailsize"> </span>
    
    			<div class="price"></div>
    
    			<div class="details"></div>
    
    			<div class="submit_container">
    				<div class="options">
    				  <label> </label> 
    				  <select> </select><br />
    
    				</div>
    				<input type="submit" class="submit add_to_cart" name="add_to_cart" value="In den Warenkorb" />
    			</div>
    
    		</div>
    		</form>
    	</div>
    
    </div>

    wenn ja... liegt es vllt an meinen anführungszeichen?
    macht man sternchen oder einfache oder doppelte...?
    oder was ganz anderes, oder gar keine? hab bis her da es ja eine string parameter übergabe mit funktionsaufruf ist es in "" und '' versucht

  13. #13
    Contao-Fan Avatar von webster
    Registriert seit
    15.09.2010.
    Ort
    Kiel
    Beiträge
    460

    Standard

    Die ID Deines Produktes ist eine reine Zahl. Diese kannst Du über das Backend in der Produktübersicht herausfinden. Einfach mit der Maus über den Bearbeiten-Stift des gewünschten Produktes fahren und schon wird Dir die ID angezeigt.
    Wenn Du die ID dynamisch auslesen musst, dann empfehle ich Dir folgenden Methodenaufruf in Deinem Template:
    PHP-Code:
    $this->showTemplateVars(); 
    Im Quelltext kannst Du Dir dann alle Eigenschaften ansehen, die Du in Deinem Template abrufen und verarbeiten kannst. Da müssten dann auch irgendwo die IDs Deiner Produkte auftauchen.
    Ich hoffe, das hilft Dir weiter.

  14. #14
    Contao-Nutzer
    Registriert seit
    10.01.2011.
    Beiträge
    10

    Standard

    hey danke für den Tip.
    aber es passiert gar nichts, hab jetzt ein produkt angelegt von einem produkttyp welches keine "Defined by Customer" Attribute enthält.
    Die Seite bleibt weiß. Die richtige ID von dem neuen Produkt hab ich natürlich übergeben.

    ----------------
    und mir fällt auf, der Array enthält keine Produkte....!?!?!? Kein einziges

  15. #15
    Contao-Fan Avatar von webster
    Registriert seit
    15.09.2010.
    Ort
    Kiel
    Beiträge
    460

    Standard

    In welchem Template rufst Du denn die showTemplateVars() auf, bzw. möchtest Du denn Produkte hinzufügen? Wenn keine Produkte auftauchen, so wird wahrscheinlich das Cart-Objekt nicht an das Template übergeben. Versuch es mal so:
    PHP-Code:
    $this->import('Isotope'); 
    $arrProducts=$this->Isotope->Cart->getProducts();
    print_r($arrProducts); 

  16. #16
    Contao-Nutzer
    Registriert seit
    10.01.2011.
    Beiträge
    10

    Standard

    Ich habe im Artikel zwei Module.
    Ein Modul Produktliste und ein Modul welches eigenen HTML Code enthält und mit
    {{file::*.tpl}}
    mein Template aufruft.

    nun steht in diesem Template nur
    PHP-Code:
    $this->import('Isotope'); 
    $arrProducts=$this->Isotope->Cart->getProducts();
    print_r($arrProducts); 
    und im FE wird nur
    Array ( )
    ausgegeben.
    Und darunter wird meine Produktliste angezeigt.

  17. #17
    Contao-Nutzer
    Registriert seit
    10.01.2011.
    Beiträge
    10

    Standard

    Hallo nochmal.

    Also folgendes. Ich habe neue Erkenntnisse.
    Grund dafür dass es eine Fehlermeldung gab war, dass es so heißen muss:
    PHP-Code:
    $this->Isotope->Cart->addProduct($this->getProduct(119), 1); 
    man will ja "addProdukt" die Anzahl übergeben.
    PHP-Code:
    $this->Isotope->addProduct($this->getProduct(*119*, 1)); 
    so, jetzt wird auch keine Fehlermeldung bzw "keine weiße Seite" mehr angezeigt. Aber Produkt landet nicht trotzdem nicht im Warenkorb.

    und bei dem hier:
    PHP-Code:
    $arrProducts=$this->Isotope->Cart->getProducts(); 
    bekomme ich nach richtiger Anwendung "eine 0" ausgegeben, logisch:Im Warenkorb liegt ja auch nichts drinne




    Lieben Gruß, vielleicht kommen wir endlich weiter?!

  18. #18
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    was gibt dir denn die Funktion addProducts() zurück?
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  19. #19
    Contao-Nutzer
    Registriert seit
    10.01.2011.
    Beiträge
    10

    Standard

    das :

    PHP-Code:
    $this->import('Isotope'); 
    $arrProducts=$this->Isotope->Cart->addProducts();
    print_r($arrProducts); 
    gibt mir das zurück:
    Fatal error: Call to undefined method IsotopeCart::addProducts() in /mnt/webc/20/05/5139605/htdocs/*/templates/*.tpl on line 5

  20. #20
    Contao-Nutzer
    Registriert seit
    10.01.2011.
    Beiträge
    10

    Standard

    Wir haben evtl. einen anderen Weg gefunden, um die Produkte möglichst dynamisch und automatisch dem Warenkorb hinzufügen.

    Wir haben in der Datei ModuleIsotopeProductList.php die compile Funktion erweitert, so dass nicht nur clear, class und html zurückgegeben werden, sondern auch die jeweilige Produkt ID ('pid' => $objProduct->__get('id'),). Evtl. könntest das auch in das nächste Release mit eingebaut werden.

    In dem Template der Ausgabe 'mod_iso_productlist.tpl' können wir nun dynamisch auf die Produkt ID zugreifen. In dem Template haben wir zusätzlich folgendes mit eingebunden: $this->import('Isotope'); -> damit können wir auf den Cart Object zugreifen.

    Der Aufruf der Funktion $this->Isotope->Cart->addProduct($this->getProduct(##product ID##),1) führt nun zu einem Fehler, da die Methode getProduct nicht gefunden wird. Anscheinend kann die Funktion über das einbinden von $this->import('IsotopeProduct'); erreichbar gemacht werden (jedenfalls gibt es dort die entsprechende Funktion). Das Einbinden der Datei scheitert allerdings, da dort ein Argument für den Constructor benötigt wird.

    Gibt es evtl. noch einen anderen Weg für die addProduct Methode ein entsprechendes Product Object zu erhalten bzw. wie man aus dem Template mod_iso_productlist.tpl sonst die Funktionalität von IsotopeProduct nutzen?

  21. #21
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich denke das Template ist nicht der richtige Ort um sowas zu machen... Die Funktion getProducts() befindet sich übrigens in der ModuleIsotope.
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  22. #22
    Contao-Nutzer
    Registriert seit
    22.12.2010.
    Beiträge
    8

    Standard ich greife das Thema nochmal auf Artikel in Warenkorb

    Hallo Ihr Lieben,

    in welcher Datei darf ich den Quellcode aus Beitrag 2 von Martin Schempp ergänzen um einen Artikel in den Warenkorb einmal einzustellen.
    Ich finde leider den Pfad nicht zu der Datei die im Betritag 21 angegeben wurde. ModuleIsotope.php

    Wir nutzen aktuell die Version 3.5.2 mit Isotope Version 2.4.1

    Liebe Dank Pekka

  23. #23
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich weiss zwar nicht wie du auf Martin kommst…
    Das Beispiel ist von 2010 und bezieht sich vermutlich auf Version 1 von Isotope. Das wird mit der aktuellen Version nicht mehr funktionieren.
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  24. #24
    Alter Contao-Hase Avatar von haendersonfox
    Registriert seit
    22.05.2012.
    Beiträge
    1.025

    Standard

    einen schönen guten nachmittag in die runde,

    ist es denn in der aktuellen version auch möglich?
    gern auch über das template.

    lg.

    alex

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Drucken von Artikeln, Warenkorb, etc
    Von itgration im Forum isotope
    Antworten: 9
    Letzter Beitrag: 28.04.2015, 20:19
  2. V2.9: Fehler bei Produkt in Warenkorb
    Von SvenReinhardt im Forum isotope
    Antworten: 8
    Letzter Beitrag: 16.03.2011, 19:51
  3. Produkt-Konfigurator
    Von zozo im Forum Was kann Contao?
    Antworten: 1
    Letzter Beitrag: 26.01.2011, 12:12
  4. [webShop] & Warenkorb
    Von frank.huettner im Forum Sonstige Erweiterungen
    Antworten: 0
    Letzter Beitrag: 10.11.2009, 09:54

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •