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

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «== Задача == Вывести в личном кабинете для заказа ссылку на версию для печати. == Решение == П…»)
 
Строка 4: Строка 4:
 
== Решение ==
 
== Решение ==
  
Первоначально необходимо создать кастомный макрос для вывода версии для печати, на основе уже существующего макроса ''order_printable'', для этого в файл '''\classes\modules\emarket\__custom.php''' скопируем текст макроса и назовем этот макрос например ''custom_order_printable''. Так же в данном макросе необходимо будет изменить условие получения ID заказа. В конечном итоге файл должен выглядеть примерно так как показано в коде ниже:
+
Первоначально необходимо создать кастомный макрос для вывода версии для печати, на основе уже существующего макроса ''order_printable'', для этого в файл '''\classes\modules\emarket\__custom.php''' скопируем текст макроса и назовем этот макрос например ''order_printable_custom''.
 +
Так же в данном макросе необходимо будет изменить условие получения ID заказа. В конечном итоге код в файле должен выглядеть примерно так как показано ниже:
  
 
<source lang="php">
 
<source lang="php">
Строка 10: Строка 11:
 
abstract class __emarket_custom  {
 
abstract class __emarket_custom  {
 
//TODO: Write here your own macroses
 
//TODO: Write here your own macroses
public function order_printable_custom() {
+
public function order_printable_custom( $orderIdCustom = false ) {
  
$orderId = getRequest('orderId');
+
if(!$orderIdCustom) {
+
$orderIdCustom = getRequest('orderId');
if(!$orderId) {
+
if (!$orderIdCustom) {
$this->redirect("/emarket/personal/");
+
$this->redirect("/emarket/");
 +
}
 
}
 
}
 
 
Строка 34: Строка 36:
 
</source>
 
</source>
  
В переменной ''$uri'' у нас указана ссылка на шаблон по которому будет выводиться версия для печати, мы указали файл '''emarket-order-printable_custom.xsl''',
+
В переменной ''$uri'' у нас указана ссылка на шаблон по которому будет выводиться версия для печати, мы указали файл '''emarket-order-printable_custom.xsl''' и в папке '''/templates/demodizzy/xslt/sys-tpls/''' нам необходимо создать файл с таким же названием (можно скопировать уже имеющийся шаблон '''emarket-order-printable.xsl''').
 +
 
 +
== Вывод ссылки на печатную версию в TPL шаблонизаторе ==
 +
 
 +
 
 +
 
 +
== Вывод ссылки на печатную версию в XSLT шаблонизаторе ==

Версия 13:06, 7 января 2014

Задача

Вывести в личном кабинете для заказа ссылку на версию для печати.

Решение

Первоначально необходимо создать кастомный макрос для вывода версии для печати, на основе уже существующего макроса order_printable, для этого в файл \classes\modules\emarket\__custom.php скопируем текст макроса и назовем этот макрос например order_printable_custom. Так же в данном макросе необходимо будет изменить условие получения ID заказа. В конечном итоге код в файле должен выглядеть примерно так как показано ниже:

<?php
	abstract class __emarket_custom  {
		//TODO: Write here your own macroses
		public function order_printable_custom( $orderIdCustom = false ) {

			if(!$orderIdCustom) {
				$orderIdCustom = getRequest('orderId');
				if (!$orderIdCustom) {
					$this->redirect("/emarket/");
				}
			}
			
			$uri = "uobject://{$orderId}/?transform=sys-tpls/emarket-order-printable_custom.xsl";
			//$uri = "uobject://{$orderId}/";
			$result = file_get_contents($uri);
			$buffer = outputBuffer::current();
			$buffer->charset('utf-8');
			$buffer->contentType('text/html');
			//$buffer->contentType('text/xml');
			$buffer->clear();
			$buffer->push($result);
			$buffer->end();
			return;
		}
	};
?>

В переменной $uri у нас указана ссылка на шаблон по которому будет выводиться версия для печати, мы указали файл emarket-order-printable_custom.xsl и в папке /templates/demodizzy/xslt/sys-tpls/ нам необходимо создать файл с таким же названием (можно скопировать уже имеющийся шаблон emarket-order-printable.xsl).

Вывод ссылки на печатную версию в TPL шаблонизаторе

Вывод ссылки на печатную версию в XSLT шаблонизаторе