Page 1 of 1
[gelöst] Druckfreundliche Seiten -> Fehler
Posted: Mon Jul 12, 2010 10:05 am
by nicmare
Ich habe das Modul in mein template eingebunden: {print}
Ich habe nichts weiter modifiziert. Aber sobald man dann den "drucken" link klickt, wird eine neue Seite geladen und ich kriege einen Fehler (siehe Anhang).
Leider gibt es zu dem Thema keine Dokumentation, weder in der Modulhilfe, noch im Wiki oder gar im Forum?!
Liegt das an allow_url_fopen = off? (der einzige hinweis den ich im Forum gefunden habe)
wenn ich mir mit get_template_vars die werte anzeigen lasse, ist content leer!
also da steht nur
content =
Re: Druckfreundliche Seiten -> Fehler
Posted: Mon Jul 12, 2010 3:18 pm
by hardy
was passiert denn, wenn du im drucktemplate den platzhalter {content} mal gegen einfachen text austauschst (z.b. "probiertestversuchstext"

)?
tritt das problem nur auf einer seite auf, oder auf jeder?
Re: Druckfreundliche Seiten -> Fehler
Posted: Mon Jul 12, 2010 6:44 pm
by nicmare
nein, das geht! also alles außer content

Re: Druckfreundliche Seiten -> Fehler
Posted: Tue Jul 13, 2010 5:26 am
by hardy
vielleicht hilft ja ein lösungsweg, den ich mir gebastelt habe. das printmodul wertet nämlich modulaufrufe wie {news category=$category} im content nicht aus und bringt statt den news nur eine fehlermeldung, das er $category nicht kennt. deswegen habe ich mir ein kleines tag geschrieben, was mir den compilierten inhalt beim druck ausgibt.
1. udt anlegen (name hier get_content_from)
global $gCms;
$smarty = &$gCms->GetSmarty();
if(!isset($params['pagealias'])){return;}else{$pagealias = $params['pagealias'];}
$db = &$gCms->db;
$sql_id = "SELECT content_id FROM ".cms_db_prefix()."content WHERE content_alias = '".$pagealias."'";
$pageid = $db->Execute($sql_id);
while ($pageid && $pageidrow = $pageid->FetchRow()){
$sql_pagecontent = "SELECT content FROM ".cms_db_prefix()."content_props WHERE content_id = ".$pageidrow['content_id']." AND prop_name = 'content_en'";
$pagecontent = $db->Execute($sql_pagecontent);
while ($pagecontent && $pagecontentrow = $pagecontent->FetchRow()){
$content .= $pagecontentrow['content'];
}
}
$smarty->_compile_source('temporary template', $content, $_compiled);
@ob_start();
$smarty->_eval('?>' . $_compiled);
$content = @ob_get_contents();
@ob_end_clean();
return $content;
gut, adodb muss ich mal noch anpassen, da ja immer nur ein datensatz rauskommen kann/soll/darf.
das tag holt den content anhand des übermittelten pagealias aus der datenbank und compiliert ihn so, das er genauso aussieht, wie wenn du die seite direkt aufrufst.
2.drucktemplate anpassen
ersetze {content} mit {get_content_from pagealias=$page_alias}
in diesem beispiel wird der aktuelle pagealias verwendet. man könnte natürlich auch einen anderen pagealias über die url des printlinks übermitteln und mit smarty auslesen. macht das druckmodul etwas flexibler.
ich hoffe mal, das es hilft.
Re: Druckfreundliche Seiten -> Fehler
Posted: Tue Jul 13, 2010 7:53 am
by nicmare
hey, das funktioniert, super! kannst du den entwicklern nicht mal zeigen wie man es richtig macht?

dankeee
Re: [gelöst] Druckfreundliche Seiten -> Fehler
Posted: Tue Jul 13, 2010 9:23 am
by hardy
freut mich, das es klappt. funktioniert übrigens auch bei den pdf's.
theoretisch bräuchte man im modul nur die "contentbildung" mit dem udt ersetzen. dann lässt sich der pagealias gleich als parameter beim aufruf übergeben. damit erspart man sich die bearbeitung der drucklinks.
lustiges schwitzen bei den temperaturen noch.
Re: [gelöst] Druckfreundliche Seiten -> Fehler
Posted: Tue Jul 13, 2010 4:34 pm
by cyberman
nicmare wrote:
nein, das geht! also alles außer content
Hast du mal versucht, im Druck-Template {content} durch {news ...} zu ersetzen?
Wenn du den News-Aufruf im Content hast, hast du das Problem, dass Smarty 2x parsen muss - der content-Tag macht das, das Druck-Modul nicht.
Re: [gelöst] Druckfreundliche Seiten -> Fehler
Posted: Wed Jul 14, 2010 5:00 am
by hardy
das problem ist wahrscheinlich, das die variable $category im template durch ein udt gebildet wird und diese dadurch dem newsmodul beim aufruf innerhalb der vom druckmodul erstellten seite nicht zur verfügung steht. somit schlägt {news category=$category} fehl, weil in der druckseite ja die einbindung des udt fehlt. das gleiche tritt auch beim kalendermodul auf.
wahrscheinlich müsste ich den ganzen headerbereich das seitentemplates in das drucktemplate packen. wäre mal einen versuch wert.