Zum Inhalt springen

Warenkorbinhalt wird nicht angezeigt

Erstellt am 3. August 2006 · 14 Antworten · letzte Antwort am 11. August 2006

Tags: Frage

Puschel ·

Hi@all,
ich habe in meinem Shop Artikel angelegt, diese kann ich auch in den Warenkorb legen. Sie werden auch im Miniwarenkorb angezeigt, wenn mir den Warenkorb anzeigen lasse bekomme ich eine leere Warenkorb Seite. Ich habe testweise auf meiner Warenkorbseite den Miniwarenkorb anzeigen lassen, das funktioniert.

Hat jemand eine Idee wieso meine Artikel im Warenkorb nicht angezeigt werden? #angry#
Ich hab das TPL kontrolliert: ###FIELD_NAME_BASKET###

Mein System:
Typo3 4.0
tt_products 2.5
sr_static_info 2.0
static_info_tables 2.0
table 0.1.5
sr_feuser_registr 2.5

vielen Dank, und viele Grüße
Puschel

RChristian ·

welche Template verwendest du?
Hast die Pid´s richtig gesetzt?

plugin.tt_products.PIDstoreRoot = 123 (ID der Shop-Root-Seite)
...

Hast die fh_library - Extensions installiert?

mfg,
RChristian

Puschel ·

Hallo RChristian,
fh_library 0.0.10 ist installiert.
Pid's hab ich nochmal überprüft, 31 ist die Seite des Warenkorbs. Diese Seite wird auch aufgerufen.

Constants der Seite sind:

plugin.tt_products.file.templateFile = fileadmin/tpl/products.tmpl
plugin.tt_products.basketPic = fileadmin/img/basket.gif
plugin.tt_products.color1 = #FF9D2E
plugin.tt_products.PIDbasket = 31
plugin.tt_products.PIDstoreRoot = 30

Ausszug aus ShopTPL (auf der Grundlage vom Tutorial Beispiel TPL)

<h1>PRODUCT TEMPLATES</h1>
<h2>EXAMPLE</h2>
<!-- ###BASKET_OVERVIEW_TEMPLATE### begin -->
  <div class="shop_minibasket">
     <div class="shop_minibasket_image"> <!-- ###LINK_BASKET### --> ###IMAGE_BASKET### <!-- ###LINK_BASKET### --></div>
    <p>###NUMBER_GOODSTOTAL### Produkte  ###PRICE_GOODSTOTAL_TAX### EURO</p>
<!-- ###BASKET_OVERVIEW_TEMPLATE### end -->

<!-- ###BASKET_OVERVIEW_EMPTY### begin -->
  <p>Keine Produkte im Warenkorb.</p>
<!-- ###BASKET_OVERVIEW_EMPTY### end -->
   </div>
<hr />
<h3>ITEM_LIST_TEMPLATE</h3>
<em>This subpart is used to display the regular list of products. It's also used by search-results.</em>

<!-- ###ITEM_LIST_TEMPLATE### begin
Dieser Subpart wird genutzt, um die regul&auml;re Produktliste anzuzeigen. Es wird ebenfalls f&uuml;r die Suchergebnisse benutzt.
-->

<table border="0" cellspacing="0" cellpadding="1" width="1">
  <tr>
    <td><!--###LINK_PREV###-->###GW2B###<div align="left">
        <b>Vorige Seite</b></div>###GW2E###<!--###LINK_PREV###--></td>
    <td></td>
    <td></td>
    <td><!--###LINK_NEXT###-->###GW2B###<div align="right"><b>Nächste    
        Seite</b></div>###GW2E###<!--###LINK_NEXT###--></td>
  </tr>
  <tr>
    <td><img src="clear.gif" width="100" height="1" alt="" /></td>
    <td><img src="clear.gif" width="5" height="1" alt="" /></td>
    
<!--Hier ist die Tabelle kleiner, als im Default Template. 
Dort ist die Breite 300
-->

    <td><img src="clear.gif" width="200" height="1" alt="" /></td>
    <td><img src="clear.gif" width="100" height="1" alt="" /></td>
  </tr>
  
<!-- ###ITEM_CATEGORY_AND_ITEMS### begin -->
<!-- ###ITEM_CATEGORY### begin -->
		

   
  <tr>
    <td colspan="4">###GW1B###<font size="3">
    <strong>###CATEGORY_TITLE###</strong></font> ###GW1E###</td>
  </tr>
      
<!-- ###ITEM_CATEGORY### end -->
<!-- ###ITEM_LIST### begin -->

<!--  <tr>
    <td colspan="3" bgcolor="###GC2###">###GW2B###<b>Produkte:</b>###GW2E###</td>
    <td bgcolor="###GC2###">###GW2B###<b>Anzahl:</b>###GW2E###</td>
  </tr> -->
  <tr>
    <td colspan="4"><img src="clear.gif" width="1" height="6" alt="" /></td>
  </tr>

<!-- ###ITEM_SINGLE### begin-->

  <tr>
    <td colspan="4">
    <form method="post" action="###FORM_URL###" name="###FORM_NAME###">
      <table border="0" cellspacing="0" cellpadding="1" width="1">
        <tr>
          <td><img src="clear.gif" width="100" height="1" alt="" /></td>
          <td><img src="clear.gif" width="5" height="1" alt="" /></td>

<!--Hier ist die Tabelle kleiner, als im Default Template. Dort ist die Breite 300
-->

          <td><img src="clear.gif" width="200" height="1" alt="" /></td>
          <td><img src="clear.gif" width="100" height="1" alt="" /></td>
        </tr>
        <tr>
	<td colspan="4"><img src="clear.gif" width="1" height="6" alt="" /></td>
        </tr>
        <tr>
          <td colspan="4" bgcolor="###GC1###">
          <!--###LINK_ITEM###-->###GW1B###<b>###PRODUCT_TITLE###</b>
          <!--###LINK_ITEM###--><br />###PRODUCT_SUBTITLE######GW1E###</td>
        </tr>
        <tr>
          <td valign="top">###PRODUCT_IMAGE###</td>
          <td></td>
          <td valign="top">###GW2B######PRODUCT_NOTE######GW2E###<br />
  				###GW1B###<b>Preis:</b><strong>###PRICE_TAX### Euro</strong>###GW1E###<br />
				<!--	###GW2B###(Netto: ###PRICE_NO_TAX###)###GW2E### -->
          </td>
          		<!--<td valign="top" nowrap="" align="right">###GW2B### Anzahl: ###GW2E###
          		<input size="3" maxlength="4" type="text" name="###FIELD_NAME###" value="###FIELD_QTY###" /><br />
          		<input type="Submit" name="order" value="In den Warenkorb" onclick="if  
          		(!document.forms['###FORM_NAME###']['###FIELD_NAME###'].value!='')
          		{document.forms['###FORM_NAME###']['###FIELD_NAME###'].value=1;};" />
          		</td>-->
          <td valign="top" nowrap="" align="right">
<!-- ###display_variant1### -->
  			###GW2B### Bagelsorte: ###GW2E### <select style="font-size: 10px" name="###FIELD_COLOR_NAME###" rows="1">###PRODUCT_COLOR###</select><br />
<!-- ###display_variant1### --><br />
		  	###GW2B### Anzahl: ###GW2E###
          	<input size="3" maxlength="4" type="text" name="###FIELD_NAME###" value="###FIELD_QTY###" /><br />
          	<input type="Submit" name="order" value="In den Warenkorb" onclick="self.location.href='index.php?id=###PID_BASKET###'" /></td>
          </td>
        </tr>
       </form>
        <tr>
          <td> </td>
        </tr>
        <tr>
<!-- für den IE ist hier die Breite angegeben, hilft aber auch nicht-->
          <td width="100">
          <form>
          <input type="button" name="warenkorb" value="Warenkorbinhalt ansehen" onclick="self.location.href='index.php?id=###PID_BASKET###'" /></td>
        </tr>
      </table>
         </form>
         </td>
       </tr>

<!-- ###ITEM_SINGLE### end -->
<!-- ###ITEM_LIST### end -->
<!-- ###ITEM_CATEGORY_AND_ITEMS### end -->

       <tr>
         <td><!--###LINK_PREV###-->###GW2B###<div align="left"><b>Vorige 
         Seite</b></div>###GW2E###<!--###LINK_PREV###--></td>
         <td></td>
         <td></td>
         <td><!--###LINK_NEXT###-->###GW2B###<div align="right"><b>Nächste 
         Seite</b></div>###GW2E###<!--###LINK_NEXT###--></td>
       </tr>
     </table>

<!-- ###ITEM_LIST_TEMPLATE### end -->....

Auszug aus dem Bastket-TPL:

....<hr />
<h3>BASKET_TEMPLATE</h3>
<em>
Subpart used to display the content of the shopping basket.
The product list part has the exact same features as the regular LIST_ITEM_TEMPLATE subpart.
In addition there's a number of fields used for delivery and payment information.
</em>

<!-- ###BASKET_TEMPLATE### begin
Subpart, zur Anzeige des Inhalts des Warenkorbes.
Der Bereiche Produkt Liste hat exakt die gleichen Features wie das regul&auml;re Subpart LIST_ITEM_TEMPLATE.
Au&szlig;erdem sind hier eine Anzahl von Feldern f&uuml;r die Liefer- und Zahlungsinformationen.
-->

###EXTERNAL_COBJECT###
<form method="post" action="###FORM_URL###">
 <table border="0" cellspacing="0" cellpadding="1" width="1">
  <tr>
   <td><img src="clear.gif" width="150" height="1" alt="" /></td>
   <td><img src="clear.gif" width="5" height="1" alt="" /></td>
<!--Hier ist die Tabelle kleiner, als im Default Template. Dort ist die Breite 200-->
   <td><img src="clear.gif" width="50" height="1" alt="" /></td>
<!--Hier ist die Tabelle kleiner, als im Default Template. Dort ist die Breite 200: Colspan ist 3!!! also die width=3x-->
   <td colspan="3"><img src="clear.gif" width="10" height="1" alt="" /></td>
  </tr>
  <tr>
   <td colspan="3" bgcolor="###GC2###">###GW2B###<b>Produkt:</b>###GW2E###</td>
   <td bgcolor="###GC2###">###GW2B###<b>Preis:</b>###GW2E###</td>
   <td bgcolor="###GC2###">###GW2B###<b>Menge:</b>###GW2E###</td>
   <td align="right" bgcolor="###GC2###">###GW2B###<b>Total:</b>###GW2E###</td>
  </tr>
  
<!-- ###ITEM_CATEGORY_AND_ITEMS### begin -->
<!-- ###ITEM_CATEGORY### begin -->	

  <tr>
   <td colspan="6">###CATEGORY_TITLE###
   </td>
  </tr>

<!-- ###ITEM_CATEGORY### end -->
<!-- ###ITEM_LIST### begin -->
<!-- ###ITEM_SINGLE### begin-->
  
  <tr>
   <td colspan="6"><img src="clear.gif" width="1" height="6" alt="" /></td>
  </tr>
  <tr>
   <td valign="top">###PRODUCT_IMAGE###</td>
   <td></td>
   <td valign="top">

<!--###LINK_ITEM###-->###GW1B###<b>###PRODUCT_TITLE###</b>###GW1E###<!--###LINK_ITEM###
-->
						
   </td>
   <td valign="top">###GW1B### ###PRICE_TAX### ###GW1E###</td>
   <td valign="top"><input size="3" maxlength="4" type="text" name="###FIELD_NAME_BASKET###" value="###FIELD_QTY###" /> </td>
   <td valign="top" align="right">###GW1B### <b>###PRICE_TOTAL_TAX###</b> 
   ###GW1E###</td>
  </tr>
        
<!-- ###ITEM_SINGLE### end -->
<!-- ###ITEM_LIST### end -->
<!-- ###ITEM_CATEGORY_AND_ITEMS###  end -->
  
  <tr>
   <td colspan="6"><img src="clear.gif" width="1" height="10" alt="" /></td>
  </tr>
  <tr>
   <td colspan="3" bgcolor="###GC2###">###GW2B###<b>Lieferung:</b>###GW2E###</td>
   <td colspan="3"></td>
  </tr>
  <tr>
   <td colspan="6"><img src="clear.gif" width="1" height="6" alt="" /></td>
  </tr>
  <!--<tr>
   <td colspan="5">
   ###GW1B###Art der Lieferung: <b>###SHIPPING_TITLE###</b><br />###GW1E###
   ###SHIPPING_SELECTOR###
   auskommentiert, da kein Bild###SHIPPING_IMAGE###
   </td>
   <td valign="top" align="right">###GW1B### <b>###PRICE_SHIPPING_TAX###</b> 
   (###PRICE_SHIPPING_NO_TAX###) ###GW1E###</td>
  </tr>-->
  <tr>
   <td colspan="5">
   ###GW1B###<b>Art der Lieferung:</b><br />###GW1E###
						
<!--###SHIPPING_SELECTOR###-->
<!-- auskommentiert, da kein Bild###SHIPPING_IMAGE###-->
   </td>
  <tr>	
   <td colspan="3">###GW2B###Post oder Paketdienst</td>
<!--
<td valign="top" align="right">###GW1B### <b>###PRICE_SHIPPING_TAX###</b> (###PRICE_SHIPPING_NO_TAX###) ###GW1E###</td>
  </tr>-->
  <tr>
   <td colspan="6"><img src="clear.gif" width="1" height="10" alt="" /></td>
  </tr>
  <!--<tr>
   <td colspan="3" bgcolor="###GC2###">###GW2B###<b>Art der  
   Bezahlung:</b>###GW2E###</td>
   <td colspan="3"></td>-->
  </tr>
  <tr>
   <td colspan="3" bgcolor="###GC2###">###GW2B###<b>Art der Bezahlung:</b></td>
  </tr>
  <tr>	
   <td colspan="3">###GW2B###Wir liefern ausschließlich gegen Rechnung. Die 
   Preise verstehen sich zuzüglich Porto und Verpackung.</td>
  </tr>
  <tr>
   <td colspan="6"><img src="clear.gif" width="1" height="6" alt="" /></td>
  </tr>
  <tr>
   <td colspan="5">
   ###GW1B###
	
<!--###PAYMENT_SELECTOR###-->

   ###GW1E###
  		
   ###GW2B###

<!-- ###MESSAGE_PAYMENT### begin
This whole subpart, message_payment is substituted with the subpart 'message_payment_[number-of-method-in-typoscript]'
-->

<!-- ###MESSAGE_PAYMENT_10### begin -->
<!--<b>You can use international Mastercards ONLY in our shop!</b>-->
<!-- ###MESSAGE_PAYMENT_10### end -->
<!-- ###MESSAGE_PAYMENT### end -->

   ###GW2E###
   </td>
   <!--<td valign="top" align="right">###GW1B### <b>###PRICE_PAYMENT_TAX###</b>    
   (###PRICE_PAYMENT_NO_TAX###) ###GW1E###</td>-->
  </tr>
  <tr>
   <td colspan="6"><img src="clear.gif" width="1" height="10" alt="" /></td>
  </tr>
  <tr>
   <td colspan="6" bgcolor="###GC2###">###GW2B###<b>Gesamt:</b>###GW2E###</td>
  </tr>
  <tr>
   <td valign="top" colspan="5"></td>
   <td valign="top" align="right" nowrap="">###GW1B### <b>EURO 
   ###PRICE_TOTAL_TAX###</b><br />
   (Netto: ###PRICE_TOTAL_NO_TAX###) ###GW1E###</td>
  </tr>
 </table>

 <input type="hidden" name="mode_update" value="1" />
 <input type="Submit" name="products_update" value="Warenkorb aktualisieren" onclick="document.forms[0].action='###FORM_URL_BASKET###';" />  	

<!--<input type="Submit" name="products_info" value="Zur Bestellung" onclick="document.forms[0].action='###FORM_URL_INFO###';" />-->

 <input type="Submit" name="products_info" value="Zur Bestellung" onclick="document.forms[0].action='###FORM_URL_INFO###';" />
 </form>

<!-- ###BASKET_TEMPLATE### end -->

Muss ich die Pid noch an anderer Stelle einsetzen? Ich glaub ich steh grad auf dem Schlauch... 😢

vielen dank für die Hilfe
Puschel

b.​kraus ·

Oft hängts an der Plugin Konfiguration. Hast du den "Ausgangspunkt" beim Warenkorb-Plugin auf den Sys-Folder mit den Produkten gesetzt?

Puschel ·

Hast du den "Ausgangspunkt" beim Warenkorb-Plugin auf den Sys-Folder mit den Produkten gesetzt?

Hallo b.kraus,
ja hab ich, aber kein erfolg, das ding wird einfach nicht angezeigt... 😢

hat noch jemand ne Idee für mich?

viele Grüße
Puschel

PS: nach weiteren Tagen des rumprobierens (Warenkorb in Listenansicht anzeigen..) hat es plötzlich funktioniert, leider kann ich nciht nachvollziehen woran es genau gelegen hat.
Trotzdem vielen Dank für eure bemühungen

droptix ·

Bei mir ganz ähnlich:

Ich lasse mir in meiner rechten Spalte der Website immer den Minibasket ausgeben. Von der Produktliste aus sehe ich den auch. Lege ich ein Produkt in den Warenkorb, erhöht mir der Minibasket die Anzahl der im Warenkorb liegenden Produkte zwar korrekt auf 1, aber der Preis bleibt immer bei EUR 0,00. Das Produkt hat natürlich einen Preis höher als Null…

Schaue ich mir den „großen” Warenkorb an, ist der leer. Da der Minibasket immernoch rechts angezeigt wird, sehe ich auch den noch: der ist nun aber auch leer. Wechsle ich zurück zur Produktliste, steht im Minibasket wieder Anzahl 1 und Summe 0. Das Spiel beginnt von vorn.

Hier mein TS zum Shop.
Hier mein Template zum Shop.

Hat jemand ne Lösung?

b.​kraus ·

Ist denn das TS-Template für die tt_products-Konfiguration global verfügbar? Es empfiehlt sich - zumindest bei einem "reinen Shop" - die Konfiguration ins Root-Template zu integrieren.

Außerdem ist die Frage, welche tt_products Version verwendet wird. Zu beachten ist hierbei, dass es von den einzelnen Versionen (z. B. 2.4.11) mehrere Releases gab. Die letzte Version von 2.4.11 (http://typo3.org/extensions/repository/search/tt_products/2.4.11/details/) hat eigentlich ganz gut funktioniert.

droptix ·
b.kraus schrieb

Ist denn das TS-Template für die tt_products-Konfiguration global verfügbar?

Ja, ich habe alles im Root-Template.

b.kraus schrieb

Außerdem ist die Frage, welche tt_products Version verwendet wird.

Da ich erst vor vier Tagen angefangen habe, nutze ich die aktuelle Version 2.5.0.

Mir ist übrigens aufgefallen, dass der Warenkorb im Internet Explorer gefüllt wird. Im Firefox bleibt er aber leer. Wenigstens kann ich dadurch schonmal am Basket-Template arbeiten. Im Firefox bekomme ich nur den leeren Warenkorb zu sehen und komme dadurch auch nie zur "Kasse".

Der Warenkorb wird ja nicht durch JavaScript gefüllt, sonst hätte ich auf ein unsauberes JS getippt, was nicht richtig für Firefox geht. Habe das Gefühl, dass im Firefox eine Art Identifikation nicht richtig läuft, also dass entweder ein Cookie oder die Session nicht wieder aufgenommen werden kann. Für den Mini-Basket klappt's ja komischerweise, solange der nicht zusammen mit dem "großen" Warenkorb angezeigt wird.

b.​kraus ·

Also das mit Firefox und IE muss wohl ein HTML-Fehler sein. TYPO3 und tt_products interessieren sich eigentlich recht wenig für den verwendeten Browser -
sofern du im Firefox nicht die Cookies deaktiviert hast.

Validier mal deine Seite (http://validator.w3.org), vielleicht gibt es auch da ein Problem ...

Das mit dem TS-Template ist wirklich strange. Und du bist sicher, dass nicht irgendwo ein anderes Template dazwischen liegt, das die Konfiguration vom Root-Template nicht übernimmt?

Wie bindest du eigentlich den Mini-Basket ein? Über TS?

droptix ·

Hmm, der W3C-Validator spuckt folgendes aus:

This Page Is Valid XHTML 1.0 Strict!
 Below is a list of the warning message(s) produced when validating your document.

   1. Warning Line 94 column 338: character "&" is the first character of a delimiter but occurred as data.

      ...lurLink(this);" class="cur">Produkte & Download</a><ul class="submenu"><li><a

      This message may appear in several cases:
          * You tried to include the "<" character in your page: you should escape it as "<"
          * You used an unescaped ampersand "&": this may be valid in some contexts, but it is recommended to use "&", which is always safe.
          * Another possibility is that you forgot to close quotes in a previous tag.

Auf den Seiten, wo ich den Mini-Basket sehen will, hab ich folgendes ext+ (Extension Template) liegen:

# right column shows shop basket
temp.basket = CONTENT
temp.basket {
    table = tt_content
    select {
        where = colPos = 0
        orderBy = sorting
        pidInList = 40
        languageField = sys_language_uid
    }
}

page.10.marks.RIGHT < temp.basket
b.​kraus ·

Also für den Mini-Basket nutze ich folgendes TS-Skript:

MINI_BASKET < plugin.tt_products
MINI_BASKET {
    templateFile = fileadmin/templates/minibasket_template.tmpl
    code = OVERVIEW 
}

Wenn es nicht am HTML liegt, dann vielleicht doch irgendwie am Cookie/Session-Handling.

Sind bei dem etx+ Häkchen in Clear Constants, Setup oder Rootlevel drin?

Wo werden eigentlich die Produkte gespeichert? In nutze hierfür einen eigenen Sysfolder, den ich bei den Constants mit "plugin.tt_products.PIDstoreRoot = 27" angebe.

droptix ·

Oh, ich dachte

plugin.tt_products.pid_list = 27

sagt aus, wo ich meine Produkte speichere. Hab mal geändert und den Cache geleert, aber der Basket bleibt im Firefox immer noch leer. Beim IE keine Veränderung…

Ich habe mir eine Seite (pid = 40) angelegt und dort "Plugin > Produkte, CODE: Warenkorb (mini)" als Seiteninhalt reingelegt. Diese Seite habe ich mit meinem TS auf den Marker "RIGHT" angewendet.

Das ext+ Template hat kein "clear" oder "root" (wie Standardeinstellung für "ext+" Templates).

Weißt du, wie tt_products sich die Dinge "merkt"? Cookie oder Session?

b.​kraus ·

LOL!

Also im Cookie wird - wie man das eben normalerweise so macht - nur eine ID gespeichert, über welche dann die Session, und damit der FE-User, identifiziert wird.

Ich bin mir nicht mehr ganz sicher, aber ich glaube, tt_products nutzt die interne Session-Verwaltung von TYPO3, welche die Daten serialisiert in der DB speichert. Hierfür übernehme ich aber keine Garantie 😉

Vielleicht kannst du ja mal die Basket-Klasse ein bisschen debuggen. Das hat mir oft schon bei schwierigen Konfigurationen weitergeholfen...

droptix ·

Laut der Referenz steht zu pid_list:

Reference schrieb

The pids from where to fetch categories, products and so on. Default is the current page. Accepts multiple pid's separated by comma.

Und zu PIDstoreRoot:

Reference schrieb

PID for store root. This is the PID of the rootPage of the store. If not set the store will operate over all pages from the root of the site. But if the site has many pages, performance may improve.

Hmpf. Ich erkenne keinen deutlichen Unterschied. Ich geb einfach bei beiden dasselbe an, da ich nur einen SysFolder habe.

Und wegen dem leeren Warenkorb schau ich mir mal die Klasse an. Dummerweise hat dieser Thread bereits das Flag für "gelöst". Mich hätte eine Lösung interessiert. Danke soweit!

droptix ·

Waaaah!

Ich hab grad pid_list und PIDstoreRoot beide auf denselben Wert gesetzt und es geht nun plötzlich auch im Firefox!

😃 JUHUUUUUUUUUUUU!