• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[GELÖST] Warenkorb-Script (Simplecart) funktioniert nicht ganz.

bbnetwork

New member
Hallo, ich habe hier ein modifiziertes "simplecart.js" Script, welches jedoch nicht richtig funktioniert und ich weiß einfach nicht weiter.

Das ganze funktioniert soweit, das ich erstmal ein Produkt zum Warenkorb hinzufügen kann, zumindest wird nach einem Klick auf "Add to cart" angezeigt, das 1 Produkt im Warenkorb ist.
Will ich nun aber ein zweites, drittes... Produkt hinzufügen, oder den Warenkorb anzeigen lassen, ist der Warenkorb komplett leer, zumindest wird nichts angezeigt.

Ich sehe irgendwie nicht durch, wo es hängt!

Kann jemand bitte mal drüber schauen und mir helfen udn sagen, wo ich was ändern müsste, damit es funktioniert!?

Hier ist der Code vom Script:

Muss ihn anhängen, da zu lang!
 

Anhänge

  • simpleCart.zip
    14,3 KB · Aufrufe: 0
  • simpleCart.txt
    54,9 KB · Aufrufe: 3
Zuletzt bearbeitet von einem Moderator:
Ich selbst habe dort nichts weiter modifiziert, ausser die links angepasst, aber das oben angehängte Script ist nicht die Originale von simplecart.org sondern wurde modifiziert (der Process-Bar und das sending formated links wurden wohl hinzugefügt). Mit der Fehlerkonsole muss ich nochmal nachsehen.
Das Problem ist wie gesagt, das der Cart immer leer ist, wenn man ihn anzeigen lassen tut, obwohl man zuvor was in den Cart geadded hat. Ich verstehe nur zuwenig von dem Code und weiß nicht warum bei mir im Cart die Links die man zuvor in den Cart geadded hat nicht angezeigt werden und der Balken im Warenkorb anzeigen leer ist, obwohl er sich erst beim adden gefüllt hat.
 
Zuletzt bearbeitet:
In der Fehlerkonsole wird nichts angezeigt
Meiner Meinung Nach ist der Fehler (das Problem) an einer dieser Positionen im Script:

1.
Code:
	me.updateCartView = function () {
		var newRows = [],
			y, newRow, current, header, newCell, info, outputValue, option, headerInfo;

		/* create headers row */
		newRow = document.createElement('div');
		for (var y = 0, ylen = me.cartHeaders.length; y < ylen; y++) {
			newCell = document.createElement('div');

			headerInfo = me.cartHeaders[y].split("_");


			newCell.innerHTML = me.print(headerInfo[0]);
			newCell.className = "item" + headerInfo[0];



			for (var z = 1, zlen = headerInfo.length; z < zlen; z++) {
				if (headerInfo[z].toLowerCase() == "noheader") {
					newCell.style.display = "none";
				}
			}
			newRow.appendChild(newCell);

		}
		newRow.className = "cartHeaders";
		newRows[0] = newRow;

		/* create a row for each item in the cart */
		me.each(function (item, x) {//alert('createrows');
			newRow = document.createElement('div');
//alert('newRow: ' + newRow);
			for (var y = 0, ylen = me.cartHeaders.length; y < ylen; y++) {
				newCell = document.createElement('div');
				info = me.cartHeaders[y].split("_");

				outputValue = me.createCartRow(info, item, outputValue);



				newCell.innerHTML = outputValue;
				newCell.className = "item" + info[0];

				newRow.appendChild(newCell);
			}
			newRow.className = "itemContainer clearfix";
			newRows[x + 1] = newRow;
		});

die headerInfo ist hier immer 0.

2.
Code:
function readCookie(name) {;
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');

	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) === 0){
			var value = unescape(c.substring(nameEQ.length, c.length));
			alert('value in readCookie: ' + value);
                        var test = value.replace(/\~/g, '=');
                        alert('value in readCookie replaced: ' + test);
			return value.replace(/\~/g, '=');
		} 
	}
	return null;
}

hier wird immer nur der cockie "simplecart_chunks" gelesen, nicht aber der cockie "simplecart_1"
der wert von simplecart_chunks ist auf der Seite die den Warenkorb anzeigt, immer leer!


ich denkte, entweder wird der cokie in

Code:
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	value = value.replace(/\=/g, '~');


document.cookie = name + "=" + escape(value) + expires + "; path=''";

//	document.cookie = name + "=" + escape(value) + expires + "; path=;"+"";
//        document.cookie = name+"="+value+expires+"; path=;"+"";

falsch geschrieben (ich habe keinen Secure Server, der Cockie müsste global gelesen werden können)

oder es liegt am format einer der variablen, wahrscheinlich der variablen "jobUrl", die hier gesetzt wird:

Code:
	me.setDescriptionPageLink = function () {
		$(".item_url").text(window.location.pathname);
	}

	// set the onclick functions for the Add Item links/buttons
	me.setAddItemActions = function () {
		$(".item_add").click(function () {
			var jobName = $(".item_name").text(); jobHrecId = $(".item_hrecid").text(); jobUrl = $(".item_url").text()
			var newItem = simpleCart.add('name=' + jobName, 'hrecid=' + jobHrecId, 'url=' + jobUrl, 'price=0', 'quantity=1');
		});

Die HTML-Files sind ja recht schlicht.
Zum Einlegen in Warenkorb relevant ist nur
Code:
<h1>Publikations-Titel</h1>
  <div id="content-core">
   <div class="" id="parent-fieldname-text-16d6b0fd7a17317ca1b67804d8efcd47"> 
    <div class="add-to-job-cart-placeholder"><a href="">External JobCart</a>
    </div>
    <p class="hidden" id="job_hrecid">775</p> <!-- jobid //-->
    <table border="0">
    <tbody>
    <tr>
     <th align="left">Typ:</th>
     <td class="lftpad"> </td>
    </tr>
    <tr>
     <th align="left">Thema:</th>
     <td class="lftpad"> </td>
    </tr><tr>
     <th align="left">Autor:</th>
     <td class="lftpad"> </td>
    </tr>
    </tbody>
    </table>
    <p><b>Hinweise zu dieser Publikation:</b>   </p>
    <p>Produktbeschreibung</p>
    <hr class="jobln">
    <p> </p>

<p class="subhead"><b>Wichtige Informationen: </b> </p>


<div class="add-to-job-cart-placeholder-2">
<a href="">External JobCart</a>
</div>
</div>

und beim anzeigen des warenkorbs

Code:
<h1>Cart (Warenkorb anwenden)</h1>
<div id="content-core">
 <div class="" id="parent-fieldname-text-9135c04c7b2f22e4bbf494e7a0785a04">
  <div class="clearfix"></div>
<p class="job-cart-instructions hidden"><span class="emph">Hinweise:</span> Diese Positionen werden im 						Warenkorb gespeichert, sobald sie diese von Lebenslust.tk in unser System bewegen. Sie müssen 						diese nicht erneut suchen, nachdem Sie sich in unser System angemeldet haben. Ihre Warenkorb 						Auswahl wird nur für die Dauer Ihres Besuches auf <b>dieser</b> Seite gespeichert, stellen Sie daher sicher, auf die Schaltfläche 						“Anwenden” zu klicken, bevor Sie dieses Fenster schließen.</p>
<div class="hidden" id="cart-container">
<div id="cart-container-header">
<div id="cart-container-header-heading">
<h2>Warenkorb</h2>
<span class="job-cart-shopping-cart-icon"> </span></div>
<p class="hide">Block to display how many jobs are in cart</p>
<div class="quantity-indicator-progressblock"><span> </span></div>

<div class="clearfix"></div>
</div>

<div id="cart-container-main">
<div class="simpleCart_items"></div>
 								<a class="continue-job-search continue-job-search-button" title="Suche fortsetzen">Suche fortsetzen</a> <a class="simpleCart_checkout apply-now apply-now-button" title="Anwenden">Anwenden</a>
<div class="clearfix"></div>
</div>
</div>

<div class="no-js-message">
<h4>erweiterte Funktionen verfügbar</h4>
</div>
<div class="no-js-message">Für weitere Funktionen benutzen Sie bitte einen JavaScript fähigen Browser.</div>
<div class="no-js-message"></div>

in letzterem wird einfach kein Inhalt angezeigt, was meiner Meinung nach, daran liegt, das der Cockie "simpleCart_chunks" hier leer ist und folglich der Cockie "simpleCart_1" nicht gelesen wird.
Ich weiß aber nicht, warum das so ist!
 
Zuletzt bearbeitet:
Kannst du deinen Testlink machen, wo wir uns das live ansehen können?

PS: in deinem HTML gibt es gar kein Element mit der Klasse "item_url"...
 
habe die simplecart.js nochmal etwas im Bereich "createCookie" verändert.
sieht jetzt so aus:

Code:
function createCookie(name,value,days) {


	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	value = value.replace(/\=/g, '~');


var myCockie1 = document.cookie = name + "=" + escape(value) + expires;
var myCockie2 = document.cookie = name + "=" + escape(value) + expires + ";domain=;path=/";

document.cookie = myCockie1;
document.cookie = myCockie2;

//document.cookie = name + "=" + escape(value) + expires + ";domain=;path=/";
//document.cookie = name + "=" + escape(value) + expires + "; path=/;";

//	document.cookie = name + "=" + escape(value) + expires + "; path=/;";

//        document.cookie = name+"="+value+expires+"; path=/;"+" secure";

// document.cookie = cookieName +"=" + cookieValue + ";expires=" + myDate + ";domain=.example.com;path=/";
}

im Anhang auch nochmal die (neue) Datei komplett.

Einen Live-Test gibt es auf:

http://www.bbnetwork.tk/veroeffentlichungen/publikationen_m3/add_pub_1.html

dort ist die html, die den warenkorb füllt.

wenn man dann auf "view cart" klickt kommt man zur html ,die den warenkorb anzeigt.

falls das nicht funktionert, hier die url:

http://www.bbnetwork.tk/veroeffentlichungen/publikationen_m3/apply-now.html

mittlerweile bin ich aber der Meinung, das es auch an Google-Chrom liegen könnte, wenn es nicht funktioniert.
Im Firefox hat es einmal funktioniert (zwar später aber wieder nicht, und dann noch etwas später wieder mal)

Irgendwas scheint mit den Cookies nicht hinzuhauen, so das der Cockie "simpleCart_chunks" entweder leer ist oder 0 hat, obwohl ein Produkt im Warenkorb ist, was zur Folge hat das der Cockie "simpleCart_1" (wäre beim zweiten Produkt "simpleCart_2") nicht gelesen wird.

Für Ratschläge bin ich offen!
 

Anhänge

  • simpleCart.txt
    56,2 KB · Aufrufe: 0
Add Test

legt die produkte in den warenkorb

Cart

zeigt den warenkorb

ps: ich habe das script nochmal im bereich createCookie etwas geändert. wie folgt:

Code:
function createCookie(name,value,days) {

	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	value = value.replace(/\=/g, '~');


var myCockie1 = document.cookie = name + "=" + escape(value) + expires;
var myCockie2 = document.cookie = name + "=" + escape(value) + expires + ";domain=.bbnetwork.tk;path=/";

document.cookie = myCockie1;
document.cookie = myCockie2;

//document.cookie = name + "=" + escape(value) + expires + ";domain=;path=/";
//document.cookie = name + "=" + escape(value) + expires + "; path=/;";

//	document.cookie = name + "=" + escape(value) + expires + "; path=/;";

//        document.cookie = name+"="+value+expires+"; path=/;"+" secure";

// document.cookie = cookieName +"=" + cookieValue + ";expires=" + myDate + ";domain=.example.com;path=/";

kann sein, das das ganze im firefox zeitweise funktioniert, aber mit chrome gibts probleme.

irgendwie werden die cockies nicht richtig gespeichert, weshalb der cockie "simpleCart_chunks" leer ist oder 0 als wert hat und folglich der Cockie "simpleCart_1" (oder "simpleCart_2" für das zweite produkt) nicht gelesen wird.


Ich weiß aber nicht, warum das so ist!
 
Zuletzt bearbeitet:
Ich kann dein Problem nicht reproduzieren. Sowohl im FF als auch im Chrome wird in der Warenkorbanzeige das Produkt angezeigt.

Hast du irgendwelche AddOns installiert?
 
Da war wohl bei mir noch eine ältere Version des Scripts im Temp, die gelesen wurde. Mit den geänderten Einträgen im Cockie-Bereich funktioniert es online. Nur bei offline testen gehts nicht, aber das ist wohl so.
Danke für eure Hilfe!
 
Ah - wenn du da über das file-Protokoll arbeitest, kann es natürlich schon sein, dass die Cookies da nicht funktionieren (kommt dann aber auch auf den Browser an). Deswegen sollte man sich am Besten einen lokalen Webserver aufsetzen (ist jetzt auch nicht besonders schwer) und darüber testen.
 
Zurück
Oben