Ссылка на платежную квитанцию в личном кабинете
Актуально для версии 2.9.6
Задача: В некоторых проектах, при просмотре списка совершенных покупок, возникает необходимость вывести ссылку на платежную квитанцию, если при оформлении заказа был выбран данный способ оплаты.
Реализация:
Можно использовать так называемый личный кабинет:
http://ваш_сайт/emarket/personal/
для просмотра списка заказов.
В файл /classes/modules/custom.php добавим следующий код:
public function receipt_link($order_id){
if ( !$order_id ) {
$order_id = getRequest('param0');
}
$objects = umiObjectsCollection::getInstance();
$object_order = $objects->getObject($order_id);
$payment_id = $object_order->getValue('payment_id');
if ( !$payment_id ) {
return "";
}
$payment_type_id = $objects->getObject($payment_id)->getValue('payment_type_id');
$class_name = $objects->getObject($payment_type_id)->getValue('class_name');
if($class_name == 'receipt'){
$customer_id = $object_order->getValue('customer_id');
$customer_mail = $objects->getObject($customer_id)->getValue('email');
$date = $object_order->order_date;
$getcode = sha1("{$customer_id}:{$customer_mail}:{$date}");
$url = "/emarket/receipt/{$order_id}/{$getcode}/";
return "<a href=\"{$url}\">Платежная квитанция</a>";
}else{
return "";
}
}
TPL-шаблонизатор
Системная страница /emarket/personal/ использует шаблон:
tpls/emarket/default.tpl
в котором должен быть блок personal:
$FORMS['personal'] = <<<END %emarket ordersList()% END;
также, в этом же самом шаблоне необходимо прописать данные блоки если их еще нет:
$FORMS['orders_block'] = <<<END <p>Список ваших заказов:</p> <ul> %items% </ul> END; $FORMS['orders_block_empty'] = <<<END <p>Заказов нет</p> END; $FORMS['orders_item'] = <<<END <li>%name% (%id%) %custom receipt_link(%id%)%</li> END;
XSLT-шаблонизатор
В демонстрационном дизайне "Современный интернет-магазин" ("demodizzy") в файле \templates\demodizzy\xslt\modules\emarket\orders-list.xsl в шаблон xsl:template match="udata[@module = 'emarket'][@method = 'order']"> для вывода ссылки на платежную квитанцию можно воспользоваться следующей конструкцией:
<xsl:value-of select="document(concat('udata://custom/receipt_link/', $document-page-id))/udata"/>
В итоге, при просмотре списка совершенный заказов на системной странице:
http://ваш_сайт/emarket/personal/
рядом с теми заказами, при формировании которых был выбран способ оплаты "Платежная квитанция", будет ссылка на просмотр квитанции.