Beiträge

[Magento] Pflichtfelder bei der Registrierung ändern

Da sind wir mal wieder beim Magento-Shopsystem. Ich kann nicht sagen das ich von dem System sehr begeistert bin. Um da durchzusteigen muss man Magento studiert haben. Aber egal.

Das Problem heute: Wie ändere ich Pflichtfelder bei der Registrierung.

Aktueller Fall ist das nur der Vorname, Nachname, E-Mail und Passwort.

Magento Version: 1.4.1.1

Als erstes nehmen wir uns die Registrierungsform vor. Die ist unter „/app/design/frontend/base/default/template/checkout/onepage/billing.phtml„.
Hier suchen wir alle Felder die wir nicht als Pflichtfelder haben wollen und entfernen in der entsprechenden Zeile erst einmal die „<em>*</em>„. Dann noch im Formularfeld selbst den CSS-Code in ändern.
Wenn man Pflichtfelder hinzufügen möchte, dann natürlich andersrum.
Das war es in der Datei auch schon.
Bei der Postleitzahl ist noch eine änderung ganz unten vorzunehmen. Aus der Zeile:

var billingRegionUpdater = new RegionUpdater('billing:country_id', 'billing:region', 'billing:region_id', countryRegions, undefined, ''billing: postcode');

machen wir

var billingRegionUpdater = new RegionUpdater('billing:country_id', 'billing:region', 'billing:region_id', countryRegions, undefined, '');

Das gleiche muss auch in der Datei „/app/design/frontend/base/default/template/checkout/onepage/shipping.phtml“ gemacht werden.

Jetzt müssen wir die Prüfung durch PHP deaktivieren, für die Nicht-Pflichtfelder. Das passiert in der „/app/code/core/Mage/Customer/Model/Address/Abstract.php“. Ganz unten die Prüfungen auskommentieren die nicht erfolgen sollen.

Das sollte es gewesen sein. Bei mir funktioniert es :-)

[PrestaShop] Rechnungs-PDF in Bestell-E-Mail

Hallo zusammen,

heute gab es mal wieder ein problem zu lösen das evtl. auch andere interessieren könnte. Zumindest jeden der einen PrestaShop im einsatz hat.

Das problem: Wenn ein kunde etwas im shop bestellt dann erhält er natürlich eine bestellbestätigung per email. Nur wird hier die rechnung nicht mitgeschickt.

Die lösung: Recht einfach, nur nicht einfach zu finden. :-)

Schritt 1) In den administrationsbereich des shops gehen und hier auf „orders“ -> „statuses“ klicken (sorry, ist bei mir die englische version). Dann in der tabelle bei „invoice“ alles anklicken außer „Chanceled“ und „Payment error“. – Das müssen wir machen da sonst die rechnung nicht direkt bei der bestellung generiert wird.

Schritt 2) Jetzt müssen wir ein bisschen in den quellcode. Suche die datei „/classes/paymentmodule.php“ und suchen sie die folgende passage (ungefähr bei zeile 350):


// Join PDF invoice
if (intval(Configuration::get('PS_INVOICE')) AND Validate::isLoadedObject($orderStatus) AND $orderStatus->invoice AND $order->invoice_number)
{
	$fileAttachment['content'] = PDF::invoice($order, 'S');
	$fileAttachment['name'] = Configuration::get('PS_INVOICE_PREFIX', intval($order->id_lang)).sprintf('%06d', $order->invoice_number).'.pdf';
	$fileAttachment['mime'] = 'application/pdf';
}
else
	$fileAttachment = NULL;

und mache daraus:


// Join PDF invoice
//if (intval(Configuration::get('PS_INVOICE')) AND Validate::isLoadedObject($orderStatus) AND $orderStatus->invoice AND $order->invoice_number)
//{
	$fileAttachment['content'] = PDF::invoice($order, 'S');
	$fileAttachment['name'] = Configuration::get('PS_INVOICE_PREFIX', intval($order->id_lang)).sprintf('%06d', $order->invoice_number).'.pdf';
	$fileAttachment['mime'] = 'application/pdf';
//}
//else
//	$fileAttachment = NULL;

Jetzt wird immer eine Rechnung an die mail angehängt. Es gibt aber noch einen kleinen schönheitsfehler. Den bügeln wir so aus… ca. zeile 300 suchen… sieht in etwa so aus.


...
	// Send an e-mail to customer
	if ($id_order_state != _PS_OS_ERROR_ AND $id_order_state != _PS_OS_CANCELED_ AND $customer->id)
	{
		$invoice = new Address(intval($order->id_address_invoice));
		$delivery = new Address(intval($order->id_address_delivery));
		$carrier = new Carrier(intval($order->id_carrier));
		$delivery_state = $delivery->id_state ? new State(intval($delivery->id_state)) : false;
		$invoice_state = $invoice->id_state ? new State(intval($invoice->id_state)) : false;
...

und hängen da einfach die folgende (letzte) zeile dran


...
	// Send an e-mail to customer
	if ($id_order_state != _PS_OS_ERROR_ AND $id_order_state != _PS_OS_CANCELED_ AND $customer->id)
	{
		$invoice = new Address(intval($order->id_address_invoice));
		$delivery = new Address(intval($order->id_address_delivery));
		$carrier = new Carrier(intval($order->id_carrier));
		$delivery_state = $delivery->id_state ? new State(intval($delivery->id_state)) : false;
		$invoice_state = $invoice->id_state ? new State(intval($invoice->id_state)) : false;
		$order = new Order(intval($order->id));
...

Damit sollte es funktionieren und schön aussehen :-)

Wer nun, wie ich, noch änderungen an der rechnung selbst vornehmen möchte der muss leider auch in den code. Die datei ist „/classes/PDF.php“. Aber bitte nur für änderungen die sonst nicht vorgenommen werden können. Adresse und footer und so kann alles im admin eingestellt werden ;)

Soweit erst einmal dazu. Bei fragen, bitte gleich fragen… bevor ich wieder vergessen hab wie das war :-)

Achso… prestashop 1.3.0.10