Ссылка на платежную квитанцию в личном кабинете — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
Строка 1: Строка 1:
 
[[Категория:Верстка в TPL]][[Категория: Верстка в XSLT]][[Категория:Модуль Интернет магазин]]
 
[[Категория:Верстка в TPL]][[Категория: Верстка в XSLT]][[Категория:Модуль Интернет магазин]]
 
'''Актуально для версии 2.9.6'''<br/><br/>
 
'''Актуально для версии 2.9.6'''<br/><br/>
'''Задача:''' <br/><br/>
+
'''Задача:''' В некоторых проектах, при просмотре списка совершенных покупок, возникает необходимость вывести ссылку на платежную квитанцию, если при оформлении заказа был выбран данный способ оплаты.<br/><br/>
'''Реализация:'''  
+
'''Реализация:''' <br/>
<h2>TPL-шаблонизатор</h2>
 
  
<h2>XSLT-шаблонизатор</h2>
 
  
В некоторых проектах, при просмотре списка совершенных покупок, возникает необходимость вывести ссылку на платежную квитанцию, если при оформлении заказа был выбран данный способ оплаты.
 
 
Можно использовать так называемый личный кабинет:
 
Можно использовать так называемый личный кабинет:
 
<pre>
 
<pre>
Строка 14: Строка 11:
 
для просмотра списка заказов.
 
для просмотра списка заказов.
  
В tpl шаблонах, данная системная страница использует шаблон:
+
В файл '''/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
Строка 43: Строка 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/', $document-page-id))/udata"/>
 +
</source>
  
После чего, в файл classes/modules/custom.php, после слов //TODO добавим дополнительный метод:
 
<source lang="php">
 
public function receipt_link($order_id){
 
 
      $objects = umiObjectsCollection::getInstance();
 
      $object_order = $objects->getObject($order_id); 
 
      $payment_id = $object_order->payment_id;
 
      $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->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>
 
  
 
В итоге, при просмотре списка совершенный заказов на системной странице:
 
В итоге, при просмотре списка совершенный заказов на системной странице:

Версия 07:50, 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/', $document-page-id))/udata"/>


В итоге, при просмотре списка совершенный заказов на системной странице:

http://ваш_сайт/emarket/personal/

рядом с теми заказами, при формировании которых был выбран способ оплаты "Платежная квитанция", будет ссылка на просмотр квитанции.