我试图用Kickstarter进行扩展,覆盖页面的正常渲染,并呈现PDF文件。为此我使用FPDF。但我不知道该怎么做。我试过这样做,但它没有用:
<?php
// require_once(PATH_tslib . 'class.tslib_pibase.php');
class tx_ishurkunde_pi1 extends tslib_pibase {
public $prefixId = 'tx_ishurkunde_pi1';
public $scriptRelPath = 'pi1/class.tx_ishurkunde_pi1.php';
public $extKey = 'ish_urkunde';
public $pi_checkCHash = TRUE;
public function main($content, array $conf) {
if (!t3lib_extMgm::isLoaded('fpdf')) return "Error!";
$pdf = new FPDF();
$pdf->AddPage();
$content = $pdf->Output('', 'S');
return $content;
}
}
?>
它仍然保持渲染普通的网页模板。我错过了什么?
仅供参考,我不是要将HTML呈现为PDF。我试图从头开始生成PDF,使用URL参数是文本变量。
答案 0 :(得分:0)
据我了解,您的目标是呈现PDF而不是页面元素。
您当前的方法将无效,因为您要在页面上插入插件。然后将插件的返回值返回给TYPO3内容解析器,如果页面已完成解析,则显示该插件。它没有任何部分可以抛弃整个页面渲染;至少它不打算这样做,你也不应该这样做(虽然有扩展可以做到这一点)。
eID方法将创建一个eID脚本(看看dd_googlesitemap),该脚本通过GET参数调用并仅呈现您需要的内容。你基本上可以做你想做的一切。
在您的扩展程序ext_localconf.php
中,您注册了eID脚本,如下所示:
$GLOBALS['TYPO3_CONF_VARS']['FE']['eID_include'][$_EXTKEY] = "EXT:{$_EXTKEY}/path/to/my/EIDHandler.php";
示例eID处理程序结构:
class Tx_MyExt_EIDHandler
{
public function main()
{
// Your code here
}
}
$output = t3lib_div::makeInstance('Tx_MyExt_EIDHandler');
$output->main();
要在前端调用您的eID脚本,您可以附加相应的GET参数,例如http://example.com/index.php?eID=tx_myext。这是您在ext_localconf.php
中定义的数组键(在我的示例中,它是$_EXTKEY
,但它基本上可以是任何字符串)。
插件/拼写检测方法就像是TemplaVoila这样做:你创建一个PAGE类型并调用user_func
来完成你的工作。这是最快的方法,因为你已经有了一个插件。重要的是,您只需使用插件即可呈现自己的页面类型。
TypoScript示例:
specialPage = PAGE
specialPage {
type = 2
10 = USER
10.userFunc = tx_myextension_pi1->myFunc
}
之后,您可以使用http://example.com/index.php?type=2调用新页面。但是,仍然会呈现标题等,您可能需要删除它们。