Condizionale di Contenuti per l'e-Mail di servizio Modelli
-
13-12-2019 - |
Domanda
Voglio fornire informazioni più rilevanti per il cliente, in "Ordine Nuovo" modello e-mail dipende dal metodo di pagamento è stata selezionata al momento dell'ordine.
Ho implementato questo metodo da ʍǝɥʇɐɯ qui https://stackoverflow.com/a/6628433 e creato /app/design/frontend/default/default/template/paymentstatus/orderemail.phtml
<?php if($this->getData('order')->getStatus()=='pending_payment_tt'): ?>
<p style="font-size:12px; line-height:16px; margin:0;">
<?php echo $this->__('Your Order Status is pending_payment_tt and you paid by Bank Transfer Payment') ?>
</p>
<?php elseif($this->getData('order')->getStatus()=='awaiting_check'): ?>
<p style="font-size:12px; line-height:16px; margin:0;">
<?php echo $this->__('Your Order Status is awaiting_check and you paid by Electronic Check') ?>
</p>
<?php else: ?>
<p style="font-size:12px; line-height:16px; margin:0;">
<?php echo $this->__('Your Order Status is pending and you probably paid by CC') ?>
</p>
<?php endif; ?>
quindi modificato l'Ordine Nuovo modello di email di inserimento
{{block type='core/template' area='frontend' template='paymentstatus/orderemail.phtml' order=$order}}
Tutto questo funziona abbastanza bene, ma il contenuto del messaggio condizionale risiede in un file di template e ora voglio estrarre il contenuto di una Variabile Personalizzata per consentire un facile accesso per la modifica del messaggio.
Se creo una Variabile Personalizzata 'payment_comment', come devo inserire nel mio orderemail.phtml modello?
Ho trovato questo codice ma non so come integrarlo
$comment = Mage::getModel('core/variable')
->setStoreId(Mage::app()->getStore()->getId())
->loadByCode('payment_comment')
->getValue('html');
Soluzione
Metodo semplice per aggiungere testo condizionale in una e-mail di servizio modello, ma ancora essere in grado di modificare il contenuto nel backend.
Questo esempio permette di utilizzare diversi di testo in una e-mail a seconda del Metodo di Pagamento utilizzato quando l'ordine è stato effettuato.È possibile adattare la logica per soddisfare le vostre esigenze se non è il metodo di pagamento che si desidera controllare.
Nella vostra e-mail di servizio modello di aggiungere la seguente riga in cui si desidera che il testo condizionale per apparire.
{{block type='core/template' area='frontend' template='myemail/orderemail.phtml' order=$order}}
Creare un PHTML (php) file /app/design/frontend/base/default/template/myemail/orderemail.phtml
<?php
$order = $this->getData('order');
if(is_object($order)) {
$payment_method_code = $order->getPayment()->getMethodInstance()->getCode();
} else {
$payment_method_code = "standard";
}
$checkUniqueBlock = Mage::getModel('cms/block')->load('new_order_email_'.$payment_method_code)->getIsActive();
$checkStandardBlock = Mage::getModel('cms/block')->load('new_order_email_standard')->getIsActive();
$block = false;
if($checkUniqueBlock) {
$block = $this->getLayout()->createBlock('cms/block')->setBlockId('new_order_email_'.$payment_method_code);
} elseif($checkStandardBlock) {
$block = $this->getLayout()->createBlock('cms/block')->setBlockId('new_order_email_standard');
}
if($block) {
echo $block->toHtml();
}
Con questo codice nel file PHTML, è ora possibile creare blocchi statici tramite il backend di Magento che verrà utilizzato a seconda del metodo di pagamento selezionato!
- Blocco statico
new_order_email_standard
verrà utilizzato ogni volta che un metodo di pagamento specifico blocco non trovato/attivo. - Blocco statico
new_order_email_banktransfer
verrà utilizzato il bonifico Bancario è il metodo di pagamento selezionato. - Blocco statico
new_order_email_checkmo
quando Check/Money - È possibile continuare a creare come molti diversi i blocchi unici, come richiesto.
Altri suggerimenti
Se si desidera includere dati personalizzati in un modello di posta elettronica dell'ordine è necessario creare un modulo che si estende
Mage_Sales_Model_Order
.
Qui puoi creare i dati che desideri includere nell'e-mail I.e.
public function getCustomData(){
$_myData="foobar";
return $_myData;
}
.
E nel modello di posta elettronica dell'ordine è possibile accedere a questi dati con
{{if order.getCustomData()}}
<p><span class="no-link highlighted-text">{{var order.getCustomData()}}</span></p>
{{/if}}
.