Uživatelská pole pro modul CartMadeSimple

Česká/Slovenská podpora pro CMS Made Simple
Post Reply
osxfil
Forum Members
Forum Members
Posts: 186
Joined: Wed Apr 01, 2009 6:03 pm

Uživatelská pole pro modul CartMadeSimple

Post by osxfil »

Pro ty z vás, kteří používají pro e-commerce řešení moduly ShopMadeSimple a CartMadeSimple jsem připravil tutoriál, ve kterém se naučíte přidávat uživatelská pole právě do modulu CartMadeSimple. CartMadeSimple ve své výchozí podobě umožňuje nákup pouze fyzickým osobám a tak pokud chcete svůj e-shop využít např. i pro firmy, budete muset údaje o firmě nějak získat. K tomu právě slouží uživateslká pole. V tomto tutoriálu se naučíme přidat pole pro název firmy. Ostatní pole (IČ a DIČ, popř. i jiná podle vašich potřeb) si pak budete schopni přidat sami.
Tutoriál se vztahuje k modulu CartMadeSimple ve verzi 0.2.8 - tedy v současnosti aktuální.

1. Nainstalujte modul FrontEndUsers, neprovádějte zatím žádná nastavení

2. Nainstalujte modul ShopMadeSimple a upravte si předvolby podle svého. Můžete rovněž do obchodu doplnit zboží.

3. Nainstalujte modul CartMadeSimple. Ve složce /modules/CartMadeSimple/lang/ si vytvořte novou složku ext. Do této složky si nakopírujte přiložený soubor cs_CZ.php. V tomto souboru jsou již vytvořeny nové jazykové řetězce pro pole Název firmy, IČ a DIČ. Další volitelná pole si můžete přidat.
Volitelná pole musí být definována jak pro fakturační, tak pro doručovací adresu, např. pole s názvem firmy je definováno takto:

Code: Select all

$lang['addresscompany_label'] = 'Firma';
a

Code: Select all

$lang['billaddresscompany_label'] = 'Firma';
4. Nyní si přidáme definici volitelných polí do modulu FrontEndUsers. V panelu Vlastnosti uživatele (User properties) si přidáme např. pole pro název firmy. Opět musí být definováno 2x - pro fakturační i dodací adresu. Název pole pro dodací adresu bude "addresscompany" a pro fakturační adresu "billaddresscompany". Obě pole budou textová, s délkou např. 50 znaků.
Nyní přejdeme do panelu Skupiny (Groups) a vybereme skupinu CartMadeSimple. Zde jsou již všechna pole, vygenerovaná při instalaci modulu CartMadeSImple a rovněž i naše dvě nová pole. Nejdříve si musíme odškrtnout všechna pole, u kterých je nastaveno "Zeptat se v případě zapomenutí uživatelského jména". Dále musíme nastavit pole, která budou vyžadována při vyplňování objednávky. Zpravidla se jedná o jméno a přijmení, adresu, PSČ, město, stát a e-mail. Naše dvě nová pole addresscompany a billaddresscompany nastavíme na hodnotu Volitelná (Optional).

5. Nyní přikročíme k úpravě samotného modulu CartMadeSimple. Budeme upravovat celkem 3 soubory: orders.api.php, action.ordershwdetail.php a action.orderaddress.php.
Začneme souborem orders.api.php, který se nachází ve složce /library/. Zde musíme nejdříve doplnit kód, který modulu CartMadeSimple umožní načítat data z našich nových polí v modulu FrontEndUsers. Např. v příadě volitelného názvu firmy vložíme za řádek 406 nový řádek s tímto kódem:

Code: Select all

			$shipto['addresscompany'] = $feusers->GetUserPropertyFull( 'addresscompany', $customer_id );
a pak za řádek 417 tento:

Code: Select all

			$shipto['billaddresscompany'] = $feusers->GetUserPropertyFull( 'billaddresscompany', $customer_id );
Dále za řádek 763 vložíme nový řádek s kódem:

Code: Select all

		if ($shipto['addresscompany'] != '' ) $this->module->smarty->assign('shiptocompany', $shipto['addresscompany']);
a za řádek 771 tento:

Code: Select all

		if ($shipto['billaddresscompany'] != '' ) $this->module->smarty->assign('billtocompany', $shipto['billaddresscompany']);
Pokračujeme dále, za řádek 1075 vložíme nový s kódem:

Code: Select all

				$result = $feusers->SetUserPropertyFull( 'addresscompany', $params['addresscompany'], $user_id );
a pak za řádek 1085 tento:

Code: Select all

				$result = $feusers->SetUserPropertyFull( 'billaddresscompany', $params['billaddresscompany'], $user_id );
Obdobným způsobem si můžeme doplnit potřebné definice i pro další uživatelská pole.

Nyní můžeme změny uložit a soubor orders.api.php zavřít

Přejdeme k úpravě souboru action.ordershowdetail.php.
Za řádek 64 vložíme nový řádek s kódem:

Code: Select all

$this->smarty->assign('shiptocompany', $shipto['addresscompany']);
a za řádek 73 tento:

Code: Select all

$this->smarty->assign('billtocompany', $shipto['billaddresscompany']);
Pokud používáme další uživatelská pole, postupujeme podobným způsobem i u zbývajících.

Nyní můžeme uložit změny a zavřít i tento soubor.

Nakonec nám zbývá úprava souboru action.orderaddress.php
Za řádek 196 vložíme tento kód:

Code: Select all

		// Validate company of visitor
		if (isset($params['addresscompany']))
		{
			$addresscompany = $params['addresscompany'];
		}
Pokračujeme dále, za řádek 216 vložíme tento kód:

Code: Select all

		if (isset($params['billaddresscompany']) && $params['billaddresscompany'] == '')
		{
			$billaddresscompany = $params['addresscompany'];
		} else {
			$billaddresscompany = $params['billaddresscompany'];
		}
Dále pokračujeme vložením nového kódu za řádek 265:

Code: Select all

	$addresscompany = $feusers->GetUserPropertyFull( 'addresscompany', $user_id, false );
	$feusers->SetUserPropertyFull( 'addresscompany', $addresscompany, $user_id );
a tímto kódem za řádkem 297:

Code: Select all

$billaddresscompany = $feusers->GetUserPropertyFull( 'billaddresscompany', $user_id, false );
		if ($billaddresscompany == '') {
		$billaddresscompany = $addresscompany;
		$feusers->SetUserPropertyFull( 'billaddresscompany', $billaddresscompany, $user_id );
	}
Zbývá posledních několik úprav, za řádek 350 vložíme tento kód:

Code: Select all

$this->smarty->assign('addresscompany_label', $this->Lang('addresscompany_label'));
$this->smarty->assign('addresscompany_input', $this->CreateInputText($id, 'addresscompany', $addresscompany, 40, 40));
a za řádek 374 tento:

Code: Select all

$this->smarty->assign('billaddresscompany_label', $this->Lang('billaddresscompany_label'));
$this->smarty->assign('billaddresscompany_input', $this->CreateInputText($id, 'billaddresscompany', $billaddresscompany, 40, 40));
Obdobně postupujeme i u ostatních uživatelských polí. Pak změny uložíme a soubor zavřeme. Nyní máme všechny úpravy v programovém kódu modulu CartMadeSimple hotové a můžeme přikročit k úpravám šablon košíku, aby se nám nová uživatelská pole zobrazovala také ve FrontEndu.

6. Úpravy šablon
Pokud používáte potrvzující e-mail, můžete použít tuto šablonu:

Code: Select all

<p><font face="Arial">
Vážený {$shiptoname}<br />
Níže najdete podrobnosti o objednávce, kterou jste právě učinil v našem obchodě.<br />
Objednávka: {$order_id}<br />
Zákaznické číslo: {$customer_id}<br />
{if $newcustomer}{$title_name}: {$username}<br>{$title_password}: {$password}<br>{/if}
Zboží bude odesláno na adresu:<br />
{if $shiptocompany != ''}{$shiptocompany}<br/>{/if}
{$shiptostreet}
{$shiptocity}
{if $shiptostate != ''}{$shiptostate}{/if}
{if $shiptozip != ''}{$shiptozip}{/if}
{$shiptocountry}<br /><br />
Faktura bude odeslána na adresu:<br />
{if $billtocompany != ''}{$biltocompany}<br/>{/if}
{$billtostreet}
{$billtocity}
{if $billtostate != ''}{$billtostate}{/if}
{if $billtozip != ''}{$billtozip}{/if}
{$billtocountry}<br /><br />
<table border="0">
    <thead>
        <tr>
            <td>Počet</td>
            <td>Název</td>
            <td>Jedn. cena</td>
            <td>Celkem</td>
        </tr>
    </thead>
    <tbody>
     {foreach  from=$products item=entry}
        <tr>
            <td>{$entry->qty}</td>
            <td>{$entry->name|truncate:25}</td>
            <td>{$entry->price}</td>
            <td>{$entry->lineamount}</td>
        </tr>
     {/foreach}
      {if $productcount > 1}
        <tr>
            <td> </td>
            <td>Celkem za zboží</td>
            <td> </td>
            <td>{$totalproduct}</td>
        </tr>
      {/if}
      {if $totalshipping > 0}
        <tr>
            <td> </td>
            <td>Dopravné</td>
            <td> </td>
            <td>{$totalshipping}</td>
        </tr>
      {/if}
      {if $totalvatamount > 0}
        <tr>
            <td> </td>
            <td>DPH</td>
            <td> </td>
            <td>{$totalvatamount}</td>
        </tr>
      {/if}
      {if $totaladmincost > 0}
        <tr>
            <td> </td>
            <td>Balné</td>
            <td> </td>
            <td>{$totaladmincost}</td>
        </tr>
      {/if}
    </tbody>
</table>
<br />
<br />
{if $paymethod == 'PAYUF'}Prosím uhraďte celkovou částku ({$total_amount}) na účet č. XXXXXXXXXXXX/XXXX co nejdříve.{/if} <br />
<br />
{$remark}
<br />
Datum připsání platby na náš účet může mít vliv na prodloužení termínu dodávky, předpokládané datum dodávky je: {$deliverydate|date_format:$defaultdateformat}.
<br />
<br />
Děkujeme za vaší objednávku!<br />
<br />
<br />
Jestliže jste obdržel/a tento e-mail a neobjednával/a jste u nás žádné zboží, přijměte naší omluvu. Pravděpodobně někdo zneužil vaší e-mailovou adresu. V tomto případě pište na me@me.com nebo volejte na tel. č. XXX XXX XXX.
</font></p>
Šablona fe_orderconfirm:

Code: Select all

{* Confirmation of the order *}
{$startform}
{$welcometitle}<br>
{if $message}
	<br>{$message}<br>
{/if}
<br>
<div>{$shipto_label}<br>
{$shiptoname}
{if $shiptocompany != ''}{$shiptocompany}{/if}
{$shiptostreet}
{$shiptocity}
{$shiptostate}
{$shiptozip}
{$shiptocountry}
{$shiptotelephone}
</div>
<br>
<div>{$billto_label}<br>
{$billtoname}
{if $billtocompany != ''}{$billtocompany}{/if}
{$billtostreet}
{$billtocity}
{$billtostate}
{$billtozip}
{$billtocountry}
</div><br>
<div class="totalnetweight">
	{$label_total_weight}
</div>
<br>
<div class="productlist">
<table>
	<thead>
		<tr>
			<th>{$productqtytext}</th>
			<th>{$productnametext}</th>
			<th>{$productpricetext}</th>
			<th>{$lineamounttext}</th>
		</tr>
	</thead>
	<tbody>
		{foreach from=$products item=entry}
			<tr >
				<td class="productqty">{$entry->qty}</td>
				<td class="productname">{$entry->name}</td>
				<td class="productprice">{$entry->price}</td>
				<td class="productamount">{$entry->lineamount}</td>
			</tr>
		{/foreach}
		<tr >
			<td > </td>
			<td class="admincostname"><br>{$label_admin_amount}</td>
			<td > </td>
			<td class="productamount"><br>{$admin_amount}</td>
		</tr>
		{if $totalvat0amount}
		<tr >
			<td > </td>
			<td class="vatname"><br>{$label_vat0_amount} %</td>
			<td > </td>
			<td class="productamount"><br>{$totalvat0amount}</td>
		</tr>
		{/if}
		{if $totalvat1amount}
		<tr >
			<td > </td>
			<td class="vatname"><br>{$label_vat1_amount} %</td>
			<td > </td>
			<td class="productamount"><br>{$totalvat1amount}</td>
		</tr>
		{/if}
		{if $totalvat2amount}
		<tr >
			<td > </td>
			<td class="vatname"><br>{$label_vat2_amount} %</td>
			<td > </td>
			<td class="productamount"><br>{$totalvat2amount}</td>
		</tr>
		{/if}
		{if $totalvat3amount}
		<tr >
			<td > </td>
			<td class="vatname"><br>{$label_vat3_amount} %</td>
			<td > </td>
			<td class="productamount"><br>{$totalvat3amount}</td>
		</tr>
		{/if}
		{if $totalvat4amount}
		<tr >
			<td > </td>
			<td class="vatname"><br>{$label_vat4_amount} %</td>
			<td > </td>
			<td class="productamount"><br>{$totalvat4amount}</td>
		</tr>
		{/if}
		{if $deliveryprice <> 0}
		<tr >
			<td > </td>
			<td ><br>{$deliveryvia}</td>
			<td > </td>
			<td class="productamount"><br>{$deliveryprice}</td>
		</tr>
		{/if}
		<tr >
			<td class="productqty"><br> </td>
			<td class="productname">{$label_total_amount}</td>
			<td class="productprice"> </td>
			<td class="productamount">{$total_amount}</td>
		</tr>
	</tbody>
</table>
{if $deliveryprice == 0}
	<div>{$deliveryvia_label}{$deliveryvia}</div>
	<br>
{/if}
<div>{$paymentvia_label}{$paymentvia}</div>
<br>
<div>{$deliverydate_label}{$deliverydate|date_format:$defaultdateformat}</div>
<br />
{$hidden}{$confirm}{$cancel}<br>
{$endform}
Bohužel, tutoriál je příliš dlouhý, takže některé soubory jsem musel umístit do příloh.

Šablona fe_shipping_info je v příloze.

Šablona fe_speedcheckout_info je v příloze.

A nakonec si upravíme šablonu zobrazení objednávky v administraci. K tomu si musíme otevřít soubor adminshoworder.tpl, který se nachází ve složce /modules/CartMadeSimple/templates/ nebo použít šablonu v příloze.


Schválně jsem neposkytl již upravené soubory. Je to proto, abyste si sami vyzkoušeli způsob, jakým se uživatelská pole přidávají a byli tak schopní si přidat i svá vlastní pole. Doufám, že vám bude tenhle tutoriál užitečný.
Attachments

[The extension txt has been deactivated and can no longer be displayed.]

[The extension txt has been deactivated and can no longer be displayed.]

[The extension txt has been deactivated and can no longer be displayed.]

[The extension txt has been deactivated and can no longer be displayed.]

Post Reply

Return to “Czech/Slovak - Česky/Slovensky”