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';
Code: Select all
$lang['billaddresscompany_label'] = 'Firma';
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 );
Code: Select all
$shipto['billaddresscompany'] = $feusers->GetUserPropertyFull( 'billaddresscompany', $customer_id );
Code: Select all
if ($shipto['addresscompany'] != '' ) $this->module->smarty->assign('shiptocompany', $shipto['addresscompany']);
Code: Select all
if ($shipto['billaddresscompany'] != '' ) $this->module->smarty->assign('billtocompany', $shipto['billaddresscompany']);
Code: Select all
$result = $feusers->SetUserPropertyFull( 'addresscompany', $params['addresscompany'], $user_id );
Code: Select all
$result = $feusers->SetUserPropertyFull( 'billaddresscompany', $params['billaddresscompany'], $user_id );
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']);
Code: Select all
$this->smarty->assign('billtocompany', $shipto['billaddresscompany']);
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'];
}
Code: Select all
if (isset($params['billaddresscompany']) && $params['billaddresscompany'] == '')
{
$billaddresscompany = $params['addresscompany'];
} else {
$billaddresscompany = $params['billaddresscompany'];
}
Code: Select all
$addresscompany = $feusers->GetUserPropertyFull( 'addresscompany', $user_id, false );
$feusers->SetUserPropertyFull( 'addresscompany', $addresscompany, $user_id );
Code: Select all
$billaddresscompany = $feusers->GetUserPropertyFull( 'billaddresscompany', $user_id, false );
if ($billaddresscompany == '') {
$billaddresscompany = $addresscompany;
$feusers->SetUserPropertyFull( 'billaddresscompany', $billaddresscompany, $user_id );
}
Code: Select all
$this->smarty->assign('addresscompany_label', $this->Lang('addresscompany_label'));
$this->smarty->assign('addresscompany_input', $this->CreateInputText($id, 'addresscompany', $addresscompany, 40, 40));
Code: Select all
$this->smarty->assign('billaddresscompany_label', $this->Lang('billaddresscompany_label'));
$this->smarty->assign('billaddresscompany_input', $this->CreateInputText($id, 'billaddresscompany', $billaddresscompany, 40, 40));
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>
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}
Š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ý.