Hallo liebe Experten,
ich schreibe euch an, weil ich seit ein paar tagen an einem problem sitze und einfach nicht voran komme:
ich wurde beauftragt eine web-site umzubasteln, welche mit typo3 erstellt wurde.
an sich alles kein problem außer bei der druckansicht des kalenders. diese zeigt im moment immer nur den aktuellen monat an, was daran liegt, dass die seite über den link aufgerufen wird, und dieser nunmal auf den aktuellen monat verweist. wenn man aber irgendeinen anderen monat ausdrucken will, ist des natürlich mist
so sieht der code im mom aus
#Link zur Druckversion
DRUCKVERSION = TEXT
DRUCKVERSION {
field = uid
wrap = Druckversion
}
einen ansatz zur lösung des problems habe ich auch: ich müsste einfach die aktuelle URL auslesen, diese einer variable zuweisen und beim href die variable nehmen… oder so
zum URL auslesen habe ich folgenden snippet gefunden
Hallo xy (nicht wirklich schöner Name),
anbei ein Beispiel was aber schon etwas älter ist. Man kann Variablen am System anmelden. Das temp.footer Objekt habe ich dann einfach in einen Marker ausgegeben. Hoffe es hilft und es klappt auch.
so flexibel TypoScript sein mag, ich benutze seit jeher immer ein Script dazu. Mit diesem Script manipuliere ich die URL wie es mir gerade passt.
Ich lege ein Script unter fileadmin/scripts/user_div.php ab. Den Inhalt des Scripts gebe ich Dir am Ende.
Dieses Script würdest Du im TS wie folgt benutzen:
page.includeLibs.diverse = fileadmin/scripts/user\_div.php
DRUCKVERSION = TEXT
DRUCKVERSION {
value = Druckversion
typolink.title = Druckversion
typolink.parameter.dataWrap = {page:uid} \_blank druckversion
typolink.addQueryString = 1
typolink.addQueryString.method = GET
typolink.userFunc = user\_div-\>typolinkMakePrint
}
Hoffe es funktioniert, denn ich habe es etwas getrimmt und nicht getestet.
Gruß
Und hier der Inhalt von user_div.php
<?php class user_div {<br />
private function getQueryParams($url\_string) {
if ($url\_string \> '') {
$parsed\_url=parse\_url ($url\_string);
$query\_params = Array();
if ($parsed\_url['query']) {
$params=explode("&",$parsed\_url['query']);
foreach ($params as $param) {
$parts=explode("=",$param);
$query\_params[$parts[0]]=$parts[1];
}
}
return $query\_params;
}
}
public function typolinkMakePrint($original) {
// RealUrl
if ($GLOBALS['TSFE']-\>tmpl-\>setup['page.']['config.']['tx\_realurl\_enable']) {
$table = "tx\_realurl\_urlencodecache";
$where = "content = '{$original['url']}'";
$result = $GLOBALS['TYPO3\_DB']-\>exec\_SELECTquery('origparams', $table, $where);
if ($GLOBALS['TYPO3\_DB']-\>sql\_num\_rows($result) \> 0) { // More than one entry for a page with no expire time is wrong...!
$cachedPagePath = $GLOBALS['TYPO3\_DB']-\>sql\_fetch\_assoc($result);
$original['url'] = "index.html?".$cachedPagePath['origparams'];
}
}
// get all query params
$query\_params = user\_div::getQueryParams($url\_string);
// build typolink config
$linkconfig = Array(
'parameter' =\> $query\_params['id'],
);
if (is\_array($query\_params))
foreach ($query\_params as $key=\>$val) {
if ($key != 'id')
$linkconfig['additionalParams'] .= "&{$key}={$val}";
}
// get Typolink
$local\_cObj = t3lib\_div::makeInstance('tslib\_cObj');
$original['url'] = $local\_cObj-\>typoLink\_URL($linkconfig);
$original['TAG'] = ereg\_replace("href=\"([^\"]\*)\"","href=\"{$original['url']}\"",$original['TAG']);
return $original['TAG'];
}
}
?\>
druckansicht des kalenders
diese zeigt im moment immer nur den aktuellen monat
an, was daran liegt, dass die seite über den link aufgerufen
wird, und dieser nunmal auf den aktuellen monat verweist. wenn
man aber irgendeinen anderen monat ausdrucken will, ist des
natürlich mist
In TSFE:id steht auch nur die Seiten-ID drin, die Du schon über field = uid ausgelesen hast. Die Monatsansicht der anderen Monate ist aber vermutlich auf der gleichen Seite, so dass Du noch den gewünschten Monat in die URL reinschreiben müsstest. Du hast nicht geschrieben, welche Kalender-Extension Du benutzt, deswegen konnte ich Dir nur diesen allgemeinen Code schreiben, bei dem Du die übergebenen Variablennamen anpassen musst:
DRUCKVERSION = COA
DRUCKVERSION.10 = TEXT
DRUCKVERSION.10 {
field = uid
wrap = Druckversion #die gleiche Zeile lesbar, aber nicht valide: #wrap = tx_cal[month]=|&" target="_blank">Druckversion
}
Du hast nicht geschrieben, welche Kalender-Extension
Du benutzt, deswegen konnte ich Dir nur diesen allgemeinen
Code schreiben, bei dem Du die übergebenen Variablennamen
anpassen musst:
DRUCKVERSION = COA
DRUCKVERSION.10 = TEXT
DRUCKVERSION.10 {
field = uid
wrap = Druckversion #die gleiche Zeile lesbar, aber nicht valide: #wrap = tx_cal[month]=|&" target="_blank">Druckversion
}
erstmal riesen dank, leider klappt es immer noch nicht, ich weiß, ich stelle mich wohl extrem gehirnblond an
folgende extension wurde auf der seite eingesetzt: Calendar Base - cal
rein intuitiv habe ich versucht den code anzupassen, folgendes kam dabei raus:
DRUCKVERSION = COA
DRUCKVERSION.10 = TEXT
DRUCKVERSION.10 {
field = uid
wrap = Druckversion
DRUCKVERSION = COA
DRUCKVERSION.10 = TEXT
DRUCKVERSION.10 {
field = uid
wrap = Druckversion
}
irgendwo steckt ein wurm drin *seufz*
Du kannst nicht mehrere Werte in einem wrap einfügen. Erzeuge für jeden Parameter einen neuen Block, also
DRUCKVERSION.20…
DRUCKVERSION.30…
und so weiter.
DRUCKVERSION.40 = TEXT
DRUCKVERSION.40 {
data = GPvar:cHash
wrap = cHasch=|"
Hier könnte das Problem liegen, einerseits ist der Variablenname falsch geschrieben, andererseits gelten die Hashes evtl. nur für den type, für den sie erzeugt wurden.
Bitte kopier mal den erzeugten Link direkt aus dem Quellcode der Seite, mit Deinem Bild habe ich leider nicht viel anfangen können.
sorry, ich habe gerade überhaupt keine Zeit, mich darum zu kümmern; sonst jederzeit gerne. Wenn dir niemand anders hilft, melde dich bitte nochmal, nächste Woche ist etwas mehr Luft.
lieben dank für deine hilfe, der fehler saß wie so oft vor dem monitor ^^
einerseits hattest du natürlich recht, cHash war falsch geschrieben
und das zweite war, dass der seitenersteller den link zur druckversion in drei verschiedenen temlates reingeschrieben hat. u.a auch im root-template, und das habe ich eben erst entdeckt, entfernt, und es läuft!