[TYPO3-german] pdf_generator2 zum laufen bringen - Einstellungen und Bugfixing

David Bruchmann david at bruchmann-web.de
Sun Aug 8 10:57:45 CEST 2010



----- Ursprüngliche Nachricht -----
Von:        Nicole <shizu__ at hotmail.com>
Gesendet:   Samstag, 7. August 2010 17:34:52
An:         typo3-german at lists.typo3.org
CC:
Betreff:    Re: [TYPO3-german] pdf_generator2 zum laufen bringen
> Hallo!
>
> So. RealURL und URLTool laufen und mit dem PDF_Generator2 werden auch
> PDFs ausgegeben (das die nicht schön sind ist ne andere Sache...)
>
> Allerdings werden die PDFs eben in URLs wie
> "http://tmp.tierschutzverein-freiburg.de/index.php?id=19&type=123"
> ausgegeben. Hätte es nun gerne noch, dass das PDF eben nicht als
> "index.php" angezeigt wird, sondern eben als "Hundevermittlung" oder so...
>
> Weiß jemand noch wie das geht? Wenn ich in der Extention "simulateStaticPdf
> [simulateStaticPdf]
> If set PDF-Links are generated as <alias>.pdf" anhake gehts wieder nicht...
>
>
> Gruß
> Nicole


Hallo Nicole,

mittlerweile habe ich in Deine Probleme einen ganzen Tag Arbeit 
gesteckt, allerdings hoffe ich davon auch noch profitieren zu können.

Mein Config-Bereich im TypoScript bezüglich RealURL sieht so aus:

config {
	simulateStaticDocuments = 0
	absRefPrefix =  /
	tx_realurl_enable = 1
}

Ich erzeuge meine URLs mit einem einfachen TypoScript, das natürlich 
angepasst werden kann - die Ausgabe auf der Seite sind "schöne URLs" 
durch RealURL bearbeitet (die bereitgestellten Funktionen der 
Erweiterung erzeugten bei mir 'unschöne URLS'):

lib.pdfLink = COA
lib.pdfLink {
     10  = TEXT
     10 {
     	field = title
     	stdWrap.typolink {
		parameter = {TSFE:id} _blank
     		parameter.insertData = 1
     		additionalParams = &type=123
	}
     }
}

In RealURL habe ich folgende Einstellungen vorgenommen:

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['_DEFAULT']['fileName'] = 
array (
	'defaultToHTMLsuffixOnPrev' => 1,
	'acceptHTMLsuffix' => '',
	'index' => array (
		'.html' => array (
			'keyValues' => array (
				'type' => 0,
			),
		),
		'.pdf' => array (
			'keyValues' => array (
				'type' => 123,
			),
		),
	),
);


Die Datei .htaccess sieht bei mir jetzt so aus:

RewriteEngine On
#RewriteRule ^typo3$ - [L]
#RewriteRule ^typo3/.*$ - [L]
RewriteRule ^uploads/.*$ - [L]
RewriteRule ^fileadmin/.*$ - [L]
RewriteRule ^typo3conf/.*$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
#RewriteRule (.*[^/])$ http://%{HTTP_HOST}/$1/ [L,R]

RewriteCond %{REQUEST_FILENAME}/index.pdf -f
RewriteRule   ^[^/]*\.pdf$  index.php

RewriteCond %{REQUEST_FILENAME}/index.html -f
RewriteRule / %{REQUEST_URI}/index.html [L]

RewriteCond %{REQUEST_FILENAME}/index.htm -f
RewriteRule / %{REQUEST_URI}/index.htm [L]

RewriteCond %{REQUEST_FILENAME}/index.php -f
RewriteRule / %{REQUEST_URI}/index.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule /.* /index.php


In der Datei 'class.tx_pdfgenerator2.php' von der Erweiterung 
pdf_generator2 habe ich die Funktion 
'tslib_fe_checkAlternativeIdMethods' wegen eines Bugs geändert (Wenn man 
in der 2. Zeile $debug aktiviert werden URL-Parameter in die Datei 
'typo3temp/html2ps_UrlParameters.html' geschrieben, setzt man 
$useOriginalCode auf TRUE wird der Original-Code verwendet):



function tslib_fe_checkAlternativeIdMethods($params, $ref)	{
	// $debug = TRUE;
	$useOriginalCode = FALSE;
	$pObj = &$params['pObj'];
	if (t3lib_div::int_from_ver($GLOBALS['TYPO_VERSION'])>= 3007000) {
		$siteScript = t3lib_div::getIndpEnv('TYPO3_SITE_SCRIPT');
	} else {
		$siteScript = $GLOBALS['HTTP_SERVER_VARS']['REQUEST_URI'];
	}
	if ($siteScript && substr($siteScript,0,9)!='index.php')	{		// If there 
has been a redirect (basically; we arrived here otherwise than via 
"index.php" in the URL) this can happend either due to a CGI-script or 
because of reWrite rule. Earlier we used $_SERVER['REDIRECT_URL'] to 
check but
		$uParts = parse_url($siteScript);	// Parse the path:
		$requestFilename = trim(ereg_replace('.*\/','',$uParts['path']));		// 
This is the filename of the script/simulated pdf-file.
		$parts = explode('.',ereg_replace('.*\/','',$requestFilename));
		$pCount = count($parts);
		$debugArray = array(
			'$siteScript' => $siteScript,
			'parse_url($siteScript)' => parse_url($siteScript),
			'$requestFilename' => $requestFilename,
			'$parts of $requestFilename' => var_export($parts,true),
			'count($parts)' => count($parts),
			'$pObj->type (not modificated)' => $pObj->type,
			'$pObj->id (not modificated)' => $pObj->id,
		);
		if ($parts[$pCount-1]=='pdf')	{
			if ($pCount>2)	{
				$NewType = intval($parts[$pCount-2]);
				$NewId = $parts[$pCount-3];
			} else {
				$NewType = $GLOBALS['pdf_generator2_parameters']['typeNum'];
				$NewId = $parts[0];
			}
		}
		if ($useOriginalCode) {
			$pObj->type = $NewType;
			$pObj->id = $NewId;
		}
		$debugArray['$pObj->type (modificated)'] = $NewType;
		$debugArray['$pObj->id (modificated)'] = $NewId;
		if ($debug) {
			$fd=fopen('typo3temp/html2ps_UrlParameters.html', 'wb');
			fwrite($fd,t3lib_div::view_array($debugArray));
			fclose($fd);
		}
	}
}


Ich hoffe Du bekommst die gewünschten Einstellungen mit diesen Angaben 
realisiert.

Gruß,
David


More information about the TYPO3-german mailing list