Тема: Как подложить вместо квитанции ПД-4 свой документ
Собственно вопрос в заголовке. При клике на "квитанцию" выводится форма ПД-4, могу ли я вместо нее сделать ссылку на pdf документ например?
Форум ReadyScript Вопросы по работе с системой Как подложить вместо квитанции ПД-4 свой документ
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Собственно вопрос в заголовке. При клике на "квитанцию" выводится форма ПД-4, могу ли я вместо нее сделать ссылку на pdf документ например?
Можно, это же простой шаблон, но вопрос в другом. А вы как PDF документ делать будете? Сами сканировать?
У нас просто информация об оплате постоянная и изложена на 1 страничке pdf. Его не нужно сканировать. Не могу найти место в шаблоне где по клику на "квитанцию" вставить ссылку на pdf.
Всё просто. Судя по всему у Вас молодёжная тема оформления и это шаблон со списком заказов. Если да, то тогда смотрим в файл:
/templates/fashion ну или Ваша тема/moduleview/shop/myorders.tpl
Ищем в коде строку:
{if $order->getPayment()->hasDocs()}
{assign var=type_object value=$order->getPayment()->getTypeObject()}
{foreach $type_object->getDocsName() as $key=>$doc}
<a href="{$type_object->getDocUrl($key)}" target="_blank">{$doc.title}</a><br>
{/foreach}
{/if}
Здесь перебираются документы, которые служат для вывода на печать.
Поэтому ставим проверку на имя документа и вставляем свой код:
{foreach $type_object->getDocsName() as $key=>$doc}
<pre>
{var_dump($doc)}
</pre>
{if $doc.title!="квитанция"}
<a href="{$type_object->getDocUrl($key)}" target="_blank">{$doc.title}</a><br>
{else}
Сюда вставляем свой код
{/if}
{/foreach}
Тема у меня классическая, но как я понимаю, все по аналогии. Попробую, отпишусь. Спасибо!
Воевал, воевал и что-то не выходит никак, на странице со списком заказов следующая ошибка.
Fatal error: Call to a member function getDocsName() on a non-object in C:\OpenServer\domains\testingtesting2.test\core\smarty\sysplugins\smarty_internal_templatebase.php(165) : eval()'d code on line 168
брал вот этот кусок:
{if $order->getPayment()->hasDocs()}
{assign var=type_object value=$order->getPayment()->getTypeObject()}
{foreach from=$type_object->getDocsName() key=key item=doc}
<a href="{$type_object->getDocUrl($key)}" target="_blank">{$doc.title}</a><br>
{/foreach}
{/if}
и заменял его на этот:
{foreach $type_object->getDocsName() as $key=>$doc}
<pre>
{var_dump($doc)}
</pre>
{if $doc.title!="квитанция"}
<a href="{$type_object->getDocUrl($key)}" target="_blank">{$doc.title}</a><br>
{else}
Сюда вставляем свой код
{/if}
{/foreach}
но что-то пошло не так, или я просто не знаю синтаксис. Нужно при выборе определенного способа оплаты, например "мобильный банк", выводить кнопку "оплатить" со ссылкой на pdf документ. Не могу осилить.
Вы взяли весь кусок, но забыли о проверках:
{if $order->getPayment()->hasDocs()} //Проверяет наличие прикреплённых к заказу документов
{/if}
Ваша ошибка говорит о том, что для данного документа не было прикреплено ни одного документа и вы пытаетесь перебрать обратиться к переменной как к объекту коим он не является.
Т.е. забыли:
//Строка присваивает переменной объект класса типа оплаты
{assign var=type_object value=$order->getPayment()->getTypeObject()}
Поэтому ругалось, что типа переменная не объект, а просто null (Посмотреть можно с помощью {var_dump($type_object)}).
Полный код будет выглядеть так:
{if $order->getPayment()->hasDocs()} //Проверяем, есть ли прикреплённые документы у заказа. В нашем случае это ПД-4
{assign var=type_object value=$order->getPayment()->getTypeObject()} //Подгружам объект типа оплаты (ПД-4 в нашем случае или другой тип оплаты, в зависимости от того что выбрал пользователь)
{foreach $type_object->getDocsName() as $key=>$doc} //Получаем с помощью метода ->getDocsName() документы и перебираем массив
<pre>
{var_dump($doc)}
</pre>
{if $doc.title!="квитанция"}
<a href="{$type_object->getDocUrl($key)}" target="_blank">{$doc.title}</a><br>
{else}
Сюда вставляем свой код
{/if}
{/foreach}
{/if}
Ввел Вас немного в заблуждением отсутствием в коде данных строк.
Если хотите лучше разбираться в синтаксисе Smarty, то вот документация
Большое спасибо за развернутый ответ!
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форум ReadyScript Вопросы по работе с системой Как подложить вместо квитанции ПД-4 свой документ