如何在Joomla VirtueMart中公开查看发票的打印视图?

时间:2011-10-10 03:10:54

标签: php joomla joomla1.5 virtuemart

我想在Joomla 1.5.22中使用VM 1.1.8的功能,以允许向已确认购买的客户发送pdf发票。我尝试了各种插件,不按我想要的方式工作。因此我自己编码。

为了减少依赖性,我选择使用pdfcrowd.com进行html到pdf的转换,正如这里的一些stackoverflowers所推荐的那样。但是,我现在面临一个问题,即要转换的页面必须是公开可见的,以便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 个答案:

答案 0 :(得分:2)

您可以使用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);
?>

然后,您可以将此保存文件的网址转发至pdfcrowd.com。

但是你需要从Joomla框架运行这个脚本,否则它将无法访问该页面。