Добавление ссылки на версию для печати заказа в личном кабинете — различия между версиями
Whoa (обсуждение | вклад) |
|||
(не показано 6 промежуточных версий 1 участника) | |||
Строка 1: | Строка 1: | ||
+ | '''Актуально для версии 2.9.5''' | ||
+ | |||
== Задача == | == Задача == | ||
Вывести в личном кабинете для заказа ссылку на версию для печати. | Вывести в личном кабинете для заказа ссылку на версию для печати. | ||
Строка 4: | Строка 6: | ||
== Решение == | == Решение == | ||
− | Первоначально необходимо создать кастомный макрос для вывода версии для печати, на основе уже существующего макроса ''order_printable'', для этого в файл ''' | + | Первоначально необходимо создать кастомный макрос для вывода версии для печати, на основе уже существующего макроса ''order_printable'', для этого в файл '''/classes/modules/emarket/__custom.php''' скопируем текст макроса и назовем этот макрос например ''order_printable_custom''. |
Так же в данном макросе необходимо будет изменить условие получения ID заказа. В конечном итоге код в файле должен выглядеть примерно так как показано ниже: | Так же в данном макросе необходимо будет изменить условие получения ID заказа. В конечном итоге код в файле должен выглядеть примерно так как показано ниже: | ||
Строка 38: | Строка 40: | ||
В переменной ''$uri'' у нас указана ссылка на шаблон по которому будет выводиться версия для печати, мы указали файл '''emarket-order-printable_custom.xsl''' и в папке '''/templates/demodizzy/xslt/sys-tpls/''' нам необходимо создать файл с таким же названием (можно скопировать уже имеющийся шаблон '''emarket-order-printable.xsl'''). | В переменной ''$uri'' у нас указана ссылка на шаблон по которому будет выводиться версия для печати, мы указали файл '''emarket-order-printable_custom.xsl''' и в папке '''/templates/demodizzy/xslt/sys-tpls/''' нам необходимо создать файл с таким же названием (можно скопировать уже имеющийся шаблон '''emarket-order-printable.xsl'''). | ||
− | + | Далее нам необходимо добавить пользователям права на использование данного макроса, для этого в папке '''/classes/modules/emarket/''' необходимо создать файл ''permission.custom.php'' и в нем разместить код: | |
+ | |||
+ | <source lang="php"> | ||
+ | <?php | ||
+ | $permissions = array( | ||
+ | 'personal' => array( | ||
+ | 'order_printable_custom' | ||
+ | ) | ||
+ | ); | ||
+ | ?> | ||
+ | </source> | ||
+ | == Вывод ссылки на печатную версию == | ||
+ | Для отображения заказов в личном кабинете, на примере xslt шаблона demodizzy, используется шаблон в файле '''/templates/demodizzy/xslt/modules/emarket/orders-list.xsl''' | ||
+ | Мы можем добавить туда вызов ссылки ''<a href="/emarket/order_printable_custom/{@id}">Печатная версия заказа</a>'' по которой будет открываться печатная версия заказа. | ||
− | + | [[category:Написание кастомных макросов]] [[Категория:Модуль Интернет магазин]] |
Текущая версия на 15:02, 21 ноября 2018
Актуально для версии 2.9.5
Задача
Вывести в личном кабинете для заказа ссылку на версию для печати.
Решение
Первоначально необходимо создать кастомный макрос для вывода версии для печати, на основе уже существующего макроса 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).
Далее нам необходимо добавить пользователям права на использование данного макроса, для этого в папке /classes/modules/emarket/ необходимо создать файл permission.custom.php и в нем разместить код:
<?php
$permissions = array(
'personal' => array(
'order_printable_custom'
)
);
?>
Вывод ссылки на печатную версию
Для отображения заказов в личном кабинете, на примере xslt шаблона demodizzy, используется шаблон в файле /templates/demodizzy/xslt/modules/emarket/orders-list.xsl Мы можем добавить туда вызов ссылки <a href="/emarket/order_printable_custom/{@id}">Печатная версия заказа</a> по которой будет открываться печатная версия заказа.