Как сделать Печатный вид счета в Joomla VirtueMart общедоступным? - PullRequest
1 голос
/ 10 октября 2011

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

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

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

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

administrator/index.php?page=order.order_printdetails&order_id=######&no_menu=1&pop=1&tmpl=component&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_printdetails&order_id=######&no_menu=1&pop=1&tmpl=component&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 Ответ

2 голосов
/ 10 октября 2011

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

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

$ch = curl_init("http://www.example.com/administrator/index.php?page=order.order_printdetails&order_id=######&no_menu=1&pop=1&tmpl=component&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, иначе он не сможет получить доступ к странице.

...