Page 1 of 1

Simpele webshop?

Posted: Mon Mar 19, 2018 9:19 pm
by Adheera
Ha mensen
Is er nog een mogelijkheid om een simpele webshop te maken in CMSMS.
Er hoeft geen betaalsysteem in. Wel zo'n 50 producten.

Shop Made Simple zou stale zijn.
Werkt ie met CMS Versie 2.2.7

Iemand ervaring?

Re: Simpele webshop?

Posted: Mon Mar 19, 2018 10:27 pm
by Rolf
Products, Cart2 en Formbuilder. Heb voornemen om er een tutorial voor te maken, maar zover is het nog niet...

Re: Simpele webshop?

Posted: Tue Mar 20, 2018 8:43 am
by HarmO
Heb net een gelijkaardige vraag gepost.

In mijn geval zijn de producten broodjes zijn, vind ik products module al niet passen bij mijn noden. mijn shop is zonder sku-codes, taksberekeningen, shipping of online betalingen...

Daarnaast hebben mijn producten enkele modifiers zoals type brood, saus, groentjes, enz. In de huidige product cataloog zou ik voor elke combinatie een skucode moeten aanmaken wat onbegonnen werk is.

Rolf, ik wil hier wel bij helpen daar ik toch een oplossing zal moeten vinden.

Re: Simpele webshop?

Posted: Tue Mar 20, 2018 11:43 am
by deactivated010521
Ik heb in het verleden gekozen voor: Products + Cart2 + Orders

Mijn opdrachtgever had ook geen SKU's (productnummers) bij het ingegeven kan je gewoon een pseudo nummer (1,2,3,4) of afkorting van de product titel ingeven: broodje waldkorn kaas / tijger broodje ham (broodje-wk-k / broodje-tg-hm) oid.

Voor de prijs heb ik de prijs inclusief BTW ingevoerd.

Voor variaties op een product (bijvoorbeeld broodje met kaas en ham of t-shirt groen of t-shirt blauw) kan je werken met product properties hiermee kan je de prijs verhogen/aanpassen.

50 producten kan je met de hand invoeren. Als het er heel veel meer worden kan je ook gebruik maken van het import script van de Products module of zelf een import script schrijven.

Wanneer je verwacht dat een zelfde persoon meerdere orders gaat doen kan je FEU / SelfReg overwegen.

Een eenvoudige shop kan makkelijk gemaakt worden. Echter breng wensen en eisen goed in kaart.

- verzendkosten (carriers) + gewicht
- verschillende btw tarieven
- meerdere munteenheden (dollar / euro)
- facturatie
- order gescheidenis
- betaalmogelijkheden (op rekening / vooraf)
- registratie
- zakelijke versus private klanten

Kunnen het geheel een stuk lastiger maken en dienen vooraf goed onderzocht of uitgesloten te worden.

Products, Cart2 en Formbuilder of misschien wel Products, Cart2 en CGBetterForms / CGBFCrud lijken me ook een goede oplossing.

Re: Simpele webshop?

Posted: Tue Mar 20, 2018 12:46 pm
by Adheera
Ik heb de modules geïnstalleerd en het resultaat is http://dewitteeenheid.com/Products/1/35/producten.html
Zonder goede uitleg gaat me dat niet lukken
Er waren sites met uitleg maar die zijn uit de lucht.
Jammer
Sowieso dank voor het meedenken

Re: Simpele webshop?

Posted: Tue Apr 10, 2018 8:25 am
by HarmO
Momenteel ben ik bezig met een heel simpele cart dat gemakkelijk te combineren is met eender welke module dan ook.

Voorbeeld Werking hoe ik het gebruik.
instaleer LISE en steek hier je producten in. de template van je lise ziet er dan ongeveer zo uit:

Code: Select all

{if $items|@count > 0}

	{if $pagecount > 1}
	<!-- pagination -->
	<p>
		{if $pagenumber > 1}
			{$firstpage}&nbsp;{$prevpage}&nbsp;
		{/if}
			{foreach from=$pagelinks item=page}
				{$page->link}
			{/foreach}
		{if $pagenumber < $pagecount}
			&nbsp;{$nextpage}&nbsp;{$lastpage}
		{/if}
	</p>
	<!-- pagination // -->
	{/if}
	
	<!-- items --><div class="products">
	{foreach from=$items item=item}
	<div class="item"><!-- item -->
		<form method="post" action="{cgsimple::self_url()}" class="add_to_cart">
		<p class="title"><strong>{$item->title}</strong>
			{if !empty($item->desc)}<br>{$item->desc}{/if}</p>
			<div class="prijs">€ {$item->price}</div>
			<input type="hidden" name="cartaction" value="add">
			<input type="hidden" name="itemID" value="{$item->alias}-{$cats|implode:'-'}">
			<input type="hidden" name="name" value="{$cats|implode:'-'} {$item->title}">
			<input type="hidden" name="price" value="{$item->price}">
			<input type="hidden" name="quantity" value="1">
			<button type="submit" name="add_to_cart"><i class="fa fa-cart-plus fa-2x"></i></button>
		</form>
	</div><!-- item //-->
	{/foreach}
	</div> <!-- products // -->

{/if}
Zie je hoe ik formulieren gebruik die waarden kunnen verzenden naar je pagina. hiervoor heb je wel CGSimpleSmarty nodig voor de url van het formuliertje.

Om de verzonden waarden op te vangen en in je sessie variabelen te steken heb ik volgende udt gemaakt die je moet oproepen in je template. deze udt bevat de basis van de shoppingcart:

Code: Select all

if(isset($_POST["cartaction"]) and !empty($_POST["cartaction"]))
{
	switch($_POST["cartaction"]){
		case "add":
			if(isset($_SESSION["shopping_cart"]))
			{  
				$item_array_id = array_column($_SESSION["shopping_cart"], "item_id");
				if(!in_array($_POST["itemID"], $item_array_id))
				{  
					$count = count($_SESSION["shopping_cart"]);  
					$item_array = array(   
						'item_id'			=>     $_POST["itemID"],  
						'item_name'			=>     $_POST["name"],
						'item_price'		=>     $_POST["price"],  
						'item_quantity'		=>     $_POST["quantity"] 
					);  
					$_SESSION["shopping_cart"][$count] = $item_array;  
				}  
				elseif(in_array($_POST["itemID"], $item_array_id))
				{  
					$cart_item = array_search($_POST["itemID"], $item_array_id);
					$_SESSION["shopping_cart"][$cart_item]['item_quantity']= $_SESSION["shopping_cart"][$cart_item][item_quantity]+$_POST["quantity"];
				}  
			}  
			else
			{  
				   $item_array = array(  
						'item_id'			=>     $_POST["itemID"],  
						'item_name'			=>     $_POST["name"],  
						'item_price'		=>     $_POST["price"],  
						'item_quantity'		=>     $_POST["quantity"]  
				   );  
				   $_SESSION["shopping_cart"][0] = $item_array;  
			}
			break;
		case "eddit":
			$_SESSION["shopping_cart"][$_POST["cart_item"]]['item_quantity'] = $_POST["quantity"];
			break;
		case "remove":
			unset($_SESSION["shopping_cart"][$_POST["cart_item"]]);
			$_SESSION["shopping_cart"]=array_values($_SESSION["shopping_cart"]);
			break;
	}
}
Waar je je shopping cart wenst te zien zet je deze code:

Code: Select all

<tr><th>product</th><th>prijs</th><th colspan="2">aantal</th><th>totaal</th><th>Remove</th>
	{foreach $smarty.session.shopping_cart $line}
	<tr>
		<td>{$line.item_name}{if $line.options}<br>({$line.options}){/if}</td>
		<td>{$line.item_price}</td>
		<td>{$line.item_quantity}</td>
		<td>
			<form action="{cgsimple::self_url()}" method="post" class="add1">
				<input type="hidden" name="cartaction" value="eddit">
				<input type="hidden" name="cart_item" value="{$line@key}">
				<input type="hidden" name="quantity" value="{$line.item_quantity +1}">
				<button type="submit" name="eddit"><i class="fa fa-plus"></i></button>
			</form>
			{if $line.item_quantity gte 2}<form action="{cgsimple::self_url()}" method="post" class="minus1">
				<input type="hidden" name="cartaction" value="eddit">
				<input type="hidden" name="cart_item" value="{$line@key}">
				<input type="hidden" name="quantity" value="{$line.item_quantity -1}">
				<button type="submit" name="eddit"><i class="fa fa-minus"></i></button>
			</form>{/if}
		</td>
		<td>{$line.item_price*$line.item_quantity}</td>
		<td>
			<form action="{cgsimple::self_url()}" method="post" class="remove">
				<input type="hidden" name="cartaction" value="remove">
				<input type="hidden" name="cart_item" value="{$line@key}">
				<button type="submit" name="remove"><i class="fa fa-trash"></i></button>
			</form>
		</td>
	</tr>
	{$grandTotal=$grandTotal+($line.item_price*$line.item_quantity)}
	{/foreach}
	</table></div>
	<p{if ($grandTotal lte 15)} style="color:red"{/if}><b>Grand total: {$grandTotal|string_format:"%.2f"}</b></p>
Versturen kan dan via CGbetterforms, gewoon de choppingcart oproepen in een textarea veld en versturen.

Het is vrij basic, maar is eigenlijk wat je nodig hebt.
Als je wil kan je ook FEU gebruiken zodat ze pas kunnen bestellen als ze ingeloged zijn...

Re: Simpele webshop?

Posted: Tue Apr 10, 2018 9:03 am
by velden
Tip: als je met de laatste versie van CMSMS werkt kun je in plaats van een UDT (beter) een plugin gebruiken.

Dat maakt het debuggen veel eenvoudiger (bv duidelijke php foutmelding met kloppende regelnummers) en makkelijk te bewerken in je favoriete editor (handig met ftp/sftp).

De code uit je UDT is één op één over te nemen.

De plugin plaats je in /assets/plugins/

Filename: function.<naam van de plugin>.php (let op dat als je die hetzelfde maakt als de UDT, je de UDT wel moet verwijderen/hernoemen)

Inhoud:

Code: Select all

<?php
function smarty_cms_function_<naam van de plugin>($params, &$smarty)
{
 [CODE UIT JE UDT]
}
?>

Re: Simpele webshop?

Posted: Tue Apr 10, 2018 10:06 am
by deactivated010521
Ik meen gelezen te hebben dat de aankomende (in ontwikkeling zijnde) CMSMS 2.3 versie de mogelijkheid gaat bieden om UDT's te exporteren naar de assets map.

Weet niet of dit voornemen ook uitvoering krijgt? Ik ben alvast overgestapt op filebased udt's:

(admin -> UDT) : "customudt"

Code: Select all

$config = cmsms()->GetConfig();
$root_path =  $config['root_path'];
$include_file = "$root_path/assets/udt/customudt.php";

include($include_file);
customudt.php

Code: Select all

<?php

if(!is_object(cmsms())) exit;

// code here

?>
Alleen voor modifiers {$value|uppper} of block functions {format}{/format} maak ik heel af en toe gebruik van eigen plugin code... in de /assets/plugin map.

Plugins hebben de mogelijkheid om documentatie ook in de admin te laten verschijnen. In oudere cmsms versies werden plugins ook beter gecached, zal in de huidige CMS versie waarschijnlijk ook het geval zijn.... dit is een pre.

Goede documentatie in de header van customudt.php en performance van filebased udtś zijn ook prima. UDT's kunnen ook gekoppeld worden aan de Event Manager wat ook mooie mogelijkheden brengt.

Kwam een oude presentatie uit 2011 tegen waar ik de mogelijheden en het verschil tussen UDT's en Tags aan CMSMS publiek heb uitgelegd: https://www.slideshare.net/UpService/cm ... tagsenudts

Re: Simpele webshop?

Posted: Wed Apr 18, 2018 1:27 pm
by HarmO
Bedankt voor de plugin tip Velden,
dat werk inderdaad heel goed.

Re: Simpele webshop?

Posted: Sun Apr 22, 2018 7:39 am
by Rolf
Komende week start ik met het maken van de tutorial over het maken van een webshop met Products, Cart2 en FormBuilder.
Hiermee is zelfs de implementatie van Mollie betalingen eenvoudig. Feitelijk maar 1 regel Smarty code.

Voorbeeld op https://www.music4allharen.nl/webwinkel

Re: Simpele webshop?

Posted: Sun Apr 22, 2018 4:56 pm
by Rolf
Ik ben al begonnen met de webshop tutorial, je kunt het volgen op http://cms.ms/pK57
Alvast bedankt voor de koffie ;)

Re: Simpele webshop?

Posted: Wed May 09, 2018 1:31 pm
by HarmO
Ik heb net mijn simplecart functie gedeeld en uitgelegd hoe ik een online bestel formulier heb gemaakt: viewtopic.php?f=28&t=78080&p=337887#p337887