Simpele webshop?

Nederlandse ondersteuning voor CMS Made Simple

Moderator: velden

Locked
Adheera
Forum Members
Forum Members
Posts: 212
Joined: Sat Dec 10, 2011 12:19 pm

Simpele webshop?

Post 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?
User avatar
Rolf
Dev Team Member
Dev Team Member
Posts: 7825
Joined: Wed Apr 23, 2008 7:53 am
Location: The Netherlands
Contact:

Re: Simpele webshop?

Post by Rolf »

Products, Cart2 en Formbuilder. Heb voornemen om er een tutorial voor te maken, maar zover is het nog niet...
- + - + - + - + - + - + -
LATEST TUTORIAL AT CMS CAN BE SIMPLE:
Migrating Company Directory module to LISE
- + - + - + - + - + - + -
Image
HarmO
Power Poster
Power Poster
Posts: 251
Joined: Thu Jan 26, 2012 3:22 pm
Location: Belgium

Re: Simpele webshop?

Post 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.
Kind regards,
HarmO
deactivated010521

Re: Simpele webshop?

Post 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.
Adheera
Forum Members
Forum Members
Posts: 212
Joined: Sat Dec 10, 2011 12:19 pm

Re: Simpele webshop?

Post 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
HarmO
Power Poster
Power Poster
Posts: 251
Joined: Thu Jan 26, 2012 3:22 pm
Location: Belgium

Re: Simpele webshop?

Post 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...
Kind regards,
HarmO
User avatar
velden
Dev Team Member
Dev Team Member
Posts: 3483
Joined: Mon Nov 28, 2011 9:29 am
Location: The Netherlands

Re: Simpele webshop?

Post 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]
}
?>
deactivated010521

Re: Simpele webshop?

Post 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
HarmO
Power Poster
Power Poster
Posts: 251
Joined: Thu Jan 26, 2012 3:22 pm
Location: Belgium

Re: Simpele webshop?

Post by HarmO »

Bedankt voor de plugin tip Velden,
dat werk inderdaad heel goed.
Kind regards,
HarmO
User avatar
Rolf
Dev Team Member
Dev Team Member
Posts: 7825
Joined: Wed Apr 23, 2008 7:53 am
Location: The Netherlands
Contact:

Re: Simpele webshop?

Post 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
- + - + - + - + - + - + -
LATEST TUTORIAL AT CMS CAN BE SIMPLE:
Migrating Company Directory module to LISE
- + - + - + - + - + - + -
Image
User avatar
Rolf
Dev Team Member
Dev Team Member
Posts: 7825
Joined: Wed Apr 23, 2008 7:53 am
Location: The Netherlands
Contact:

Re: Simpele webshop?

Post by Rolf »

Ik ben al begonnen met de webshop tutorial, je kunt het volgen op http://cms.ms/pK57
Alvast bedankt voor de koffie ;)
- + - + - + - + - + - + -
LATEST TUTORIAL AT CMS CAN BE SIMPLE:
Migrating Company Directory module to LISE
- + - + - + - + - + - + -
Image
HarmO
Power Poster
Power Poster
Posts: 251
Joined: Thu Jan 26, 2012 3:22 pm
Location: Belgium

Re: Simpele webshop?

Post 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
Kind regards,
HarmO
Locked

Return to “Dutch - Nederlands”