News: Bilder automatisch löschen und Printfunktion
News: Bilder automatisch löschen und Printfunktion
Hallo Leute,
folgendes Szenario: Ich habe eine Seite aufgesetzt, die das Newsmodul nutzt. Um den relativ unerfahrenen Nutzern die Eingabe von neuen Artikeln zu erleichtern, habe ich im Newsmodul Felder hinzugefügt, die wenn nötig Bilddateien aufnehmen sollen. Diese werden dann im Vorschau- und Detailtemplate automatisch in der richtigen Größe eingefügt. Das klappt auch alles schon ganz gut. Mein Problem ist, dass wenn die Artikel nach un nach wieder gelöscht werden, die Ordner mit den Bilddateien immer noch existieren. Mit der Zeit wird dann der Webspace immer voller werden. Leider kenne ich mich mit php Programmierung nicht soweit aus und hätte deswegen gerne einen Hinweis, wie ich die Ordner beim löschen der Artikel ebenfalls wieder entfernen kann.
Das müsste ja eigentlich in der Datei action.deletearticle.php geschehen.
Ein weiteres Problem betrifft die Printfunktion. Leider werden die Inhalte der zusätzlichen Felder im Drucken Fenster nicht angezeigt, egal ob es sich um Bilder oder andere Informationen handelt. Ich habe versucht das in der Datei articleprint.tpl zu beheben, indem ich die Anzeige dort ähnlich aufgerufen habe wie im Detailtemplate (hier wird ja alles angezeigt). Leider hat das überhaupt keine Auswirkungen. So ich neige mal wieder zu Romanen, aber über Hinweise zur Lösung dieser Probleme wäre ich sehr dankbar.
Grüße
tteam
folgendes Szenario: Ich habe eine Seite aufgesetzt, die das Newsmodul nutzt. Um den relativ unerfahrenen Nutzern die Eingabe von neuen Artikeln zu erleichtern, habe ich im Newsmodul Felder hinzugefügt, die wenn nötig Bilddateien aufnehmen sollen. Diese werden dann im Vorschau- und Detailtemplate automatisch in der richtigen Größe eingefügt. Das klappt auch alles schon ganz gut. Mein Problem ist, dass wenn die Artikel nach un nach wieder gelöscht werden, die Ordner mit den Bilddateien immer noch existieren. Mit der Zeit wird dann der Webspace immer voller werden. Leider kenne ich mich mit php Programmierung nicht soweit aus und hätte deswegen gerne einen Hinweis, wie ich die Ordner beim löschen der Artikel ebenfalls wieder entfernen kann.
Das müsste ja eigentlich in der Datei action.deletearticle.php geschehen.
Ein weiteres Problem betrifft die Printfunktion. Leider werden die Inhalte der zusätzlichen Felder im Drucken Fenster nicht angezeigt, egal ob es sich um Bilder oder andere Informationen handelt. Ich habe versucht das in der Datei articleprint.tpl zu beheben, indem ich die Anzeige dort ähnlich aufgerufen habe wie im Detailtemplate (hier wird ja alles angezeigt). Leider hat das überhaupt keine Auswirkungen. So ich neige mal wieder zu Romanen, aber über Hinweise zur Lösung dieser Probleme wäre ich sehr dankbar.
Grüße
tteam
Re: News: Bilder automatisch löschen und Printfunktion
Zum Print-Stylesheet: Hast Du mal versucht statt der Datei das Template in der Datenbank (also im Print-Modul selbst) zu ändern?
Zu den Bildern: Änderungen am Modul sollten da nicht nötig sein. Für solche Fälle gibt es eine Ereignisverwaltung (Erweiterungen->...)
D.h. man könnte einen benutzerdefinierten Tag schreiben, der auf das Ereignis reagiert, wenn ein News-Artikel gelöscht wird.
Das funktioniert natürlich nur, wenn das News-Modul ein solches Ereignis "meldet". (Schau da einfach mal in der Ereignisverwaltung nach.)
Ich kann Dir momentan leider keinen Code für den benutzerdefinienerten Tag posten (keine Zeit).
In der Regel übergeben die jeweiligen Module bei ihren Ereignissen eine Variable namens $params.
Dort drin sollten alle Informationen über das jeweilige Ereignis zu finden sein (in diesem Fall über den gelöschten News-Artikel).
Erstelle einen benutzerdefinierten Tag und lass Dir die Variable mal mit print_r($params); einfach ausgeben.
Über die Ereignisverwaltung kannst Du dem Ereignis zum Löschen von News-Artikeln dann diesen Tag zuweisen.
Der wird dann automatisch ausgeführt sobald ein Artikel gelöscht wird.
Sollte das News-Modul ein Ereignis vor dem tatsächlichen Löschen generieren, wäre das optimal, da Du ja die Inhalte der Felder brauchst, um die zugehörigen Dateien zu löschen.
Alles Weitere von mir evtl. später ...
Zu den Bildern: Änderungen am Modul sollten da nicht nötig sein. Für solche Fälle gibt es eine Ereignisverwaltung (Erweiterungen->...)
D.h. man könnte einen benutzerdefinierten Tag schreiben, der auf das Ereignis reagiert, wenn ein News-Artikel gelöscht wird.
Das funktioniert natürlich nur, wenn das News-Modul ein solches Ereignis "meldet". (Schau da einfach mal in der Ereignisverwaltung nach.)
Ich kann Dir momentan leider keinen Code für den benutzerdefinienerten Tag posten (keine Zeit).
In der Regel übergeben die jeweiligen Module bei ihren Ereignissen eine Variable namens $params.
Dort drin sollten alle Informationen über das jeweilige Ereignis zu finden sein (in diesem Fall über den gelöschten News-Artikel).
Erstelle einen benutzerdefinierten Tag und lass Dir die Variable mal mit print_r($params); einfach ausgeben.
Über die Ereignisverwaltung kannst Du dem Ereignis zum Löschen von News-Artikeln dann diesen Tag zuweisen.
Der wird dann automatisch ausgeführt sobald ein Artikel gelöscht wird.
Sollte das News-Modul ein Ereignis vor dem tatsächlichen Löschen generieren, wäre das optimal, da Du ja die Inhalte der Felder brauchst, um die zugehörigen Dateien zu löschen.
Alles Weitere von mir evtl. später ...
Re: News: Bilder automatisch löschen und Printfunktion
Kannst Du grob anreissen, wie Du das gemacht hast? Ich suche gerade nach einer Möglichkeit, zu einer News ein Bild zuzuweisen (und die Grösse anzupassen), ohne dies direkt im Artikelfeld/ Tiny einzugeben zu lassen. Wenn ich Dich richtig verstehe, hast Du genau diese Lösung.tteam wrote: Um den relativ unerfahrenen Nutzern die Eingabe von neuen Artikeln zu erleichtern, habe ich im Newsmodul Felder hinzugefügt, die wenn nötig Bilddateien aufnehmen sollen. Diese werden dann im Vorschau- und Detailtemplate automatisch in der richtigen Größe eingefügt.
Re: News: Bilder automatisch löschen und Printfunktion
Danke erst einmal für die schnelle Antwort!
Das was NaN vorgeschlagen hat, werde ich versuchen mal umzusetzen. Wenn ich da weiter gekommen bin, melde ich mich nochmal (wahrscheinlich mit Problemen
).
Was die Frage von mike-r betrifft, kann ich das kurz tun. Ich habe wie gesagt unter News neue Felder hinzugefügt, darunter zwei für Bilder (also unter Feld-Definitionen - Feld des Typs Datei hinzufügen ). Dann habe ich die Templates angepasst. Im Zusammenfassungs-template spreche ich das Erste Feld direkt an und füge den Inhalt folgendermaßen ein:
Im Detail-template gehe ich ähnlich vor, nur ohne die Einschränkung auf einen field-name. Somit kann ich beliebig viele Bilder einfügen. Das sieht dann so aus:
Wenn man die Bilder nicht, wie ich das tue, einfach ans Ende des Artikels anhängen will, sondern sie im Text erscheinen sollen, dann müsste man da wohl einzelne Aufrufe mit name=='XY' für jedes Bild einfügen. Naja ich hoffe Du kannst was damit anfangen. Bei Fragen einfach nochmal schreiben.
Grüße
tteam
Das was NaN vorgeschlagen hat, werde ich versuchen mal umzusetzen. Wenn ich da weiter gekommen bin, melde ich mich nochmal (wahrscheinlich mit Problemen

Was die Frage von mike-r betrifft, kann ich das kurz tun. Ich habe wie gesagt unter News neue Felder hinzugefügt, darunter zwei für Bilder (also unter Feld-Definitionen - Feld des Typs Datei hinzufügen ). Dann habe ich die Templates angepasst. Im Zusammenfassungs-template spreche ich das Erste Feld direkt an und füge den Inhalt folgendermaßen ein:
Code: Select all
{if $field->name =='Bild1'}
<div style="float:left;">
<img width="100px" src="{$entry->file_location}/{$field->value}"/>
</div>
Code: Select all
{if $field->type == 'file'}
<div style="border: 3px solid #F9C616;">
<img width="563px" border="3px solid#F9C616" src="{$entry->file_location}/{$field->value}"/>
</div>
Grüße
tteam
Re: News: Bilder automatisch löschen und Printfunktion
So, da bin ich wieder. Natürlich haben sich Probleme ergeben. Die Printfunktion der Newsartikel nutzt grundsätzlich das Template articleprint.tpl aus dem Newsmodul. Dort werden aber eigentlich die zugefügten Felder nicht angezeigt. Deswegen habe ich die Datei um einen ähnlichen Aufruf wie im Detail-template erweitert. Das sieht dann so aus:
Die einzelnen divs werden im Quelltext auch angezeigt, aber leider keine Inhalte. Irgendwie kann auf diese Weise nicht auf die Inhalte der zusätzlichen Felder zugegriffen werden. Was muss ich machen, damit die Inhalte doch angezeigt werden?
Code: Select all
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<__html>
<head>
<title>{$entry->title}</title>
</head>
</__body>
<pre>
Categories: {$entry->category}
Date: {$entry->postdate|cms_date_format}
Title: {$entry->title}
<hr id="NewsPostDetailHorizRule" />
</pre>
<h3 id="NewsPostDetailTitle">{$entry->title}</h3>
<hr id="NewsPostDetailHorizRule" />
<div id="NewsPostDetailContent">
{eval var=$entry->content}
</div>
<div id="NewsPostDetailExtra">
{$extra_label} {$entry->extra}
</div>
{foreach from=$entry->fields item='field'}
<div class="NewsDetailField">
{if $field->type == 'file'}
<img src="{$entry->file_location}/{$field->value}"/>
{else}
{$field->name}: {eval var=$field->value}
{/if}
</div>
{/foreach}
<hr id="NewsPostDetailHorizRule" />
<__body>
</__html>
Re: News: Bilder automatisch löschen und Printfunktion
Gib mal im Print-Template {get_template_vars} ein und lass Dir mal im Frontend das Ergebnis anzeigen.
(gibt alle verfügbaren Smarty-Variablen plus deren Werte aus)
Wenn dort keine Infos üder die Extra-Felder sind, dann fehlen die Smarty-Variablen für das Print-Template.
Die Zuweisung müsste über die Print-Funktion im Quellcode erfolgen.
Sitze gerade leider an einer Arbeitsstation, wo ich jetzt keinerlei Quellcode auseinandernehmen kann.
Meld mich dazu später nochmal.
(gibt alle verfügbaren Smarty-Variablen plus deren Werte aus)
Wenn dort keine Infos üder die Extra-Felder sind, dann fehlen die Smarty-Variablen für das Print-Template.
Die Zuweisung müsste über die Print-Funktion im Quellcode erfolgen.
Sitze gerade leider an einer Arbeitsstation, wo ich jetzt keinerlei Quellcode auseinandernehmen kann.
Meld mich dazu später nochmal.
Last edited by NaN on Mon Nov 10, 2008 2:17 pm, edited 1 time in total.
Re: News: Bilder automatisch löschen und Printfunktion
Das geht ja wieder fix, so liebe ich das. Da get_template_vars gibt einiges aus, aber keinerlei Hinweis auf den Newsarticle. Weder über die Standard Sachen wie: {$entry->category} und {eval var=$entry->content}, was ja im Frontend angezeigt wird, noch über die zusätzlichen Felder. Die Ausgabe ist (Namen verändert da noch nicht online und im Aufbaustadium):
Also wie kommt der mit den Aufrufen {$entry->category} und {eval var=$entry->content} an die Standardinhalte, wenn die hier nicht angezeigt werden und nocxh wichtiger für mich, wie komme ich an die Zusatzfelder?
Code: Select all
SCRIPT_NAME = /index.php
app_name = CMS
sitename = XYZ
lang =
encoding = UTF-8
gCms = Object
content_id = 88
page = 88
page_id = 88
page_name = XX
page_alias = XX
position = 00001.00001.00004.00001
friendly_position = 1.1.4.1
entry = Object
Last edited by tteam on Tue Nov 11, 2008 8:13 am, edited 1 time in total.
Re: News: Bilder automatisch löschen und Printfunktion
Ich beschäftige mich weiter mit der Printfunktion und habe dabei folgendes festgestellt. Die Standard Funktion funktioniert ebenfalls nicht für Newsartikel. Also wenn ich innerhalb einer Seite die Printfunktion über das Printmodul nutze, auf einen Newsartikel gehe und dann auf den Print-button drücke, dann wird nicht der Inhalt des Artokels angezeigt sondern die Inhalte der Seite auf der das Newsmodul eingebunden ist. Wenn das eine eigene News Seite ist also die Überschriften, die Zusammenfassung und ein weiterlesen Link, obwohl ich bereits in der Detailsansicht befinde.
Ich weiß nicht ob das was zu sagen hat, aber irgendwie sind nicht alle Newsinhalte wirklich zu erreichen, egal ob über das Printmodul oder die Printfunktion des Newsmoduls.
Irgendjemand eine Idee? Wenn ich die Feldnamen der zusätzlichen Felder und die Artikelid kenne, kann ich mir dann die Inhalte irgendwie direkt aus der Datenbank holen? Das müsste ja auf jeden Fall gehen, aber wie?
Ich weiß nicht ob das was zu sagen hat, aber irgendwie sind nicht alle Newsinhalte wirklich zu erreichen, egal ob über das Printmodul oder die Printfunktion des Newsmoduls.
Irgendjemand eine Idee? Wenn ich die Feldnamen der zusätzlichen Felder und die Artikelid kenne, kann ich mir dann die Inhalte irgendwie direkt aus der Datenbank holen? Das müsste ja auf jeden Fall gehen, aber wie?
Re: News: Bilder automatisch löschen und Printfunktion
Dann gib mal im Template {$entry|print_r} ein, um zu sehen was denn alles in dem Entry-Object steckt.tteam wrote:Also wie kommt der mit den Aufrufen {$entry->category} und {eval var=$entry->content} an die Standardinhalte, wenn die hier nicht angezeigt werden und nocxh wichtiger für mich, wie komme ich an die Zusatzfelder?Code: Select all
entry = Object
Aber ich vermute mal, da fehlen die entsprechenden Variablen für das Print-Template.
Das Print-Modul funktioniert offenbar nur für die Seiteninhalte.
Nicht für die Modulinhalte.
Re: News: Bilder automatisch löschen und Printfunktion
Hab jetzt grad mal selber nach den Ereignissen geschaut.
Das NewsModul generiert offenbar nur ein Ereignis, wenn ein Artikel gelöscht wurde. So steht es in der Beschreibung.
Da das Ereigins tatsächlich erst gesendet wird, nachdem der Artikel bereits aus der DB gelöscht wurde, hat man zwar die ID zu dem Artikel, jedoch kann man nun nicht mehr auf die Inhalte dieses Artikels zugreifen, da sie ja nicht mehr in der DB sind.
Hab gleich mal als FeatureRequest um ein Ereignis vor dem eigentlichen Löschen gebeten.
Zu den Extrafeldern... im Printtemplate des Newsmoduls fehlen leider die entsprechenden Variablen.
Da müsstest Du die action.print.php etwas modifizieren.
Ist zum Glück nicht weiter schwer. Ich habe einfach mal den Code zum Auslesen dieser Felder aus der action.detail.php kopiert.
Die Antwort lautet 42
In der Datei action.print.php in Zeile 42 (vor $this->smarty->assign_by_ref('entry', $onerow); )
folgendes einfügen:
Auch das habe ich bereits als Bugreport gepostet.
Dürfte evtl. in einer neuen Version des NewsModuls behoben sein.
Das NewsModul generiert offenbar nur ein Ereignis, wenn ein Artikel gelöscht wurde. So steht es in der Beschreibung.
Da das Ereigins tatsächlich erst gesendet wird, nachdem der Artikel bereits aus der DB gelöscht wurde, hat man zwar die ID zu dem Artikel, jedoch kann man nun nicht mehr auf die Inhalte dieses Artikels zugreifen, da sie ja nicht mehr in der DB sind.
Hab gleich mal als FeatureRequest um ein Ereignis vor dem eigentlichen Löschen gebeten.
Zu den Extrafeldern... im Printtemplate des Newsmoduls fehlen leider die entsprechenden Variablen.
Da müsstest Du die action.print.php etwas modifizieren.
Ist zum Glück nicht weiter schwer. Ich habe einfach mal den Code zum Auslesen dieser Felder aus der action.detail.php kopiert.
Die Antwort lautet 42

In der Datei action.print.php in Zeile 42 (vor $this->smarty->assign_by_ref('entry', $onerow); )
folgendes einfügen:
Code: Select all
//
// Handle the custom fields
//
$query3 = 'SELECT A.value,B.id,B.name,B.type FROM '.cms_db_prefix().'module_news_fieldvals A, '.cms_db_prefix().'module_news_fielddefs B WHERE A.fielddef_id = B.id AND A.news_id = ? AND B.public = 1 ORDER BY B.item_order';
$dbr3 = $db->Execute($query3,array($row['news_id']));
$fields = array();
$fieldsbyname = array();
while( $dbr3 && ($row3 = $dbr3->FetchRow()) )
{
$alias = strtolower(str_replace(' ','_',$row3['name']));
$onerow->$alias = $row3['value'];
$obj = new StdClass();
foreach( $row3 as $k => $v )
{
$obj->$k = $v;
}
$fields[] = $obj;
$fieldsbyname[$alias] = $obj;
}
$onerow->fieldsbyname = $fieldsbyname;
$onerow->fields = $fields;
$onerow->file_location = $config['uploads_url'].'/news/id'.$row['news_id'];
Dürfte evtl. in einer neuen Version des NewsModuls behoben sein.
Re: News: Bilder automatisch löschen und Printfunktion
Hallo nochmal,
erst einmal vielen Dank für die Hilfe. Ist echt ne tolle Community hier. Entschuldigung dass ich mich jetzt erst melde, aber ich hatte anderweitig viel zu tun. Jetzt habe ich folgendes Problem, bei der Ausgabe durch {$entry|print_r} werden jetzt alle Felder richtig angezeigt. Aber das ist natürlich keine druckfähige Ausgabe. Ich bin in php nicht so fit, also wie kann ich jetzt in der articleprint.tpl die Ausgabe etwa so formatieren:
Feldname: Feldinhalt
Am besten nur wenn das Feld auch einen Inhalt hat. Gibt es da eine Möglichkeit?
erst einmal vielen Dank für die Hilfe. Ist echt ne tolle Community hier. Entschuldigung dass ich mich jetzt erst melde, aber ich hatte anderweitig viel zu tun. Jetzt habe ich folgendes Problem, bei der Ausgabe durch {$entry|print_r} werden jetzt alle Felder richtig angezeigt. Aber das ist natürlich keine druckfähige Ausgabe. Ich bin in php nicht so fit, also wie kann ich jetzt in der articleprint.tpl die Ausgabe etwa so formatieren:
Feldname: Feldinhalt
Am besten nur wenn das Feld auch einen Inhalt hat. Gibt es da eine Möglichkeit?
Re: News: Bilder automatisch löschen und Printfunktion
Das ist ja auch nicht die reguläre Methode um die Felder auszugeben.tteam wrote:
{$entry|print_r} werden jetzt alle Felder richtig angezeigt...
Versuchs doch mal mit der {foreach}-Schleife aus dem Detailtemplate:
Code: Select all
{foreach from=$entry->fields item='field'}
<div class="NewsDetailField">
{if $field->type == 'file'}
<img src="{$entry->file_location}/{$field->value}"/>
{else}
{$field->name}: {eval var=$field->value}
{/if}
</div>
{/foreach}