Ссылка на платежную квитанцию в личном кабинете — различия между версиями
VITL' (обсуждение | вклад) (Новая страница: «В некоторых проектах, при просмотре списка совершенных покупок, возникает необходимость …») |
Stexe (обсуждение | вклад) |
||
(не показаны 4 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
− | В некоторых проектах, при просмотре списка совершенных покупок, возникает необходимость вывести ссылку на платежную квитанцию, если при оформлении заказа был выбран данный способ оплаты. | + | [[Категория:Верстка в TPL]][[Категория: Верстка в XSLT]][[Категория:Модуль Интернет магазин]] |
+ | '''Актуально для версии 2.9.6'''<br/><br/> | ||
+ | '''Задача:''' В некоторых проектах, при просмотре списка совершенных покупок, возникает необходимость вывести ссылку на платежную квитанцию, если при оформлении заказа был выбран данный способ оплаты.<br/><br/> | ||
+ | '''Реализация:''' <br/> | ||
+ | |||
+ | |||
Можно использовать так называемый личный кабинет: | Можно использовать так называемый личный кабинет: | ||
<pre> | <pre> | ||
Строка 6: | Строка 11: | ||
для просмотра списка заказов. | для просмотра списка заказов. | ||
− | В | + | В файл '''/classes/modules/custom.php''' добавим следующий код: |
+ | <source lang="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 ""; | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | <h2>TPL-шаблонизатор</h2> | ||
+ | Системная страница /emarket/personal/ использует шаблон: | ||
<pre> | <pre> | ||
tpls/emarket/default.tpl | tpls/emarket/default.tpl | ||
Строка 35: | Строка 68: | ||
</pre> | </pre> | ||
+ | <h2>XSLT-шаблонизатор</h2> | ||
+ | В демонстрационном дизайне "Современный интернет-магазин" ("demodizzy") в файле \templates\demodizzy\xslt\modules\emarket\orders-list.xsl в шаблон xsl:template match="udata[@module = 'emarket'][@method = 'order']"> для вывода ссылки на платежную квитанцию можно воспользоваться следующей конструкцией: | ||
+ | <source lang="xml"> | ||
+ | <xsl:value-of select="document(concat('udata://custom/receipt_link/', @id))/udata" /> | ||
+ | </source> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
В итоге, при просмотре списка совершенный заказов на системной странице: | В итоге, при просмотре списка совершенный заказов на системной странице: |
Текущая версия на 07:51, 1 июня 2014
Актуально для версии 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/', @id))/udata" />
В итоге, при просмотре списка совершенный заказов на системной странице:
http://ваш_сайт/emarket/personal/
рядом с теми заказами, при формировании которых был выбран способ оплаты "Платежная квитанция", будет ссылка на просмотр квитанции.