Как сделать вид печати счета-фактуры в Joomla VirtueMart общедоступным для просмотра?

#php #joomla #joomla1.5 #virtuemart

#php #joomla #joomla1.5 #virtuemart

Вопрос:

Я хотел функцию для виртуальной машины 1.1.8 в Joomla 1.5.22, чтобы разрешить отправку счетов в формате pdf по электронной почте клиентам, которые подтвердили свои покупки. Я пробовал различные плагины, не работает так, как я хотел. Таким образом, я кодирую его сам.

Чтобы уменьшить зависимость, я решил использовать pdfcrowd.com чтобы выполнить преобразование html в pdf, как рекомендовано некоторыми stackoverflowers здесь. Однако сейчас я сталкиваюсь с одной проблемой, когда страница, подлежащая преобразованию, должна быть доступна для публичного просмотра, чтобы pdfcrowd мог видеть выходные данные, иначе PDF-файл будет содержать только страницу входа администратора. Я искал в Google, но ничего не нашел, возможно, я использую неправильные условия поиска.

Я также пытался создать независимую страницу php для отображения общедоступного счета-фактуры, но было слишком сложно настроить все, чтобы заставить его работать, не вникая во внутренние компоненты joomla.

Страница, которую я пытаюсь воспроизвести,

 administrator/index.php?page=order.order_printdetailsamp;order_id=######amp;no_menu=1amp;pop=1amp;tmpl=componentamp;option=com_virtuemart
  

что такое /administrator/components/com_virtuemart/html/order.order_printdetails.php

Кстати, я буду реализовывать одноразовую проверку токена для страницы просмотра счета-фактуры, чтобы ее можно было использовать только в течение короткого периода времени для конвертации. Преобразованный счет-фактура будет сохранен и повторно использован позже, если это необходимо.

Пожалуйста, посоветуйте. Спасибо.

РЕДАКТИРОВАТЬ: Спасибо LAS_VEGAS за указание на cURL. Его код работает для общедоступной страницы. Чтобы получить доступ к странице входа в систему, мне просто нужно добавить код для передачи cookie.

 <?php
// no direct access
defined('_JEXEC') or die;

//Store cookie in format compatible with cURL
$cookie = "";
foreach($_COOKIE as $key => $value) {
    $cookie .= $key . "=" . $value . "; ";
}
$ch = curl_init();
$fp = fopen("example_page.html", "w");

curl_setopt($ch, CURLOPT_URL, "http://www.example.com/administrator/index.php?page=order.order_printdetailsamp;order_id=######amp;no_menu=1amp;pop=1amp;tmpl=componentamp;option=com_virtuemart");
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);
curl_close($ch);
fclose($fp);
?>
  

Ответ №1:

Вы можете использовать библиотеку PHP curl для сохранения веб-страницы в определенном месте на вашем сервере.

 <?php
// no direct access
defined('_JEXEC') or die;

$ch = curl_init("http://www.example.com/administrator/index.php?page=order.order_printdetailsamp;order_id=######amp;no_menu=1amp;pop=1amp;tmpl=componentamp;option=com_virtuemart");
$fp = fopen("example_page.html", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);
curl_close($ch);
fclose($fp);
?>
  

Затем вы можете переслать URL этого сохраненного файла на pdfcrowd.com .

Однако вам необходимо запустить этот скрипт из фреймворка Joomla, иначе он не сможет получить доступ к странице.

Комментарии:

1. Спасибо, но он также сохранил страницу входа в систему, так как требуется вход в систему. Я думаю, что для этого необходимо отправить файл cookie или аутентификацию удаленного пользователя

2. Именно то, что вы мне дали. Однако я нашел решения. Я отредактирую и поставлю ниже вопрос