Page 1 of 1

"formatpostdate" editieren?

Posted: Wed Jun 27, 2007 6:52 pm
by martinpescador
Hallo zusammen!

Bin neu hier und habe eine Frage: Ich habe auf einer Webseite eine News-Funktion integriert; die News werden direkt angezeigt, ohne »"more..."-Link«. Aussehen sollte das so:
Image.

Der Code im »Zusammenfassungstemplate« der News sieht so aus:

Code: Select all

<tr> <td style="vertical-align:top;width:80px;"><span class="date"><span class="news_monat">{created_date format="%B"}</span><br />
		  <div style="margin-top:5px;"><span class="news_tag">{$entry->formatpostdate}</span></div></span></td><td style="vertical-align:top;">
Nun mein Problem: Das Datum des News-Beitrages ist ja mit "formatpostdate" geregelt. Das Datum des Tages wird ordnungsgemäss angezeigt. Wieso nur der Tag angezeit wird weiss ich nicht – es ist einige Zeit her dass ich das Ganze integriert habe und ich weiss nicht mehr wie ich es geschafft habe das so einzurichten. Denn genau da liegt das Problem: Da die Monatsanzeige nicht mit "formatpostdate" geregelt ist sondern mit created_date, wird schlussendlich der angezeigt, in dem die Seite erstellt wurde und nicht der Artikel. Somit wird immer der Monat März angezeigt, auch wenn der News-Artikel im Juni erstellt wurde.

Wie kriege ich das gebacken? Wie bestimme ich den durch "formatpostdate" erstellten Inhalt?

Um Hilfe wäre ich sehr dankbar. Danke im Voraus und Gruss
martinpescador

Re: "formatpostdate" editieren?

Posted: Wed Jun 27, 2007 7:07 pm
by cyberman
Bringt dich eventuell der Smarty Modifier date_format auf andere Gedanken ;)?

http://smarty.php.net/manual/de/languag ... format.php

Re: "formatpostdate" editieren?

Posted: Wed Jun 27, 2007 8:13 pm
by martinpescador
Danke, sieht aus als liesse sich mit Smarty einiges machen... Aber gibt es keinen einfacheren ("cmsms-internen") Weg?

Re: "formatpostdate" editieren?

Posted: Thu Jun 28, 2007 10:23 am
by cyberman
Smarty ist DIE Template-Engine von CMSms, zudem hast du in der Administration Zugriff auf das News-Template - von daher betrachte ich Smarty als "internen" Weg :).

Code: Select all

<tr> <td style="vertical-align:top;width:80px;"><span class="date"><span class="news_monat">{created_date format="%B"}</span><br />
Schau mal in die Doku - mit {created_date} wird das Erstellungsdatum der aktuellen Seite abgefragt (hat mit den News nix zu tun):
Prints the date and time the page was created.
Wieso nur der Tag angezeit wird weiss ich nicht
Das zur Ausgabe verwendete Datumsformat kann beim Aufruf des News-Moduls separat festgelegt werden.

Hab da hier mal etwas zusammen geklimpert:

Code: Select all

{if $entry->formatpostdate}
	<div style='float: left; margin-right: 0.5em; padding-right: 0.5em; border-right: 1px solid #000;' class="NewsSummaryPostdate">
		<span>{$entry->formatpostdate|date_format:"%B"|upper}</span><br /><br />
                <span style='font-size: 3em;'>{$entry->formatpostdate|date_format:"%e"}</span>
	</div>
{/if}
Live zu sehen auf meiner Spielwiese

Re: "formatpostdate" editieren?

Posted: Mon Jul 02, 2007 2:22 pm
by martinpescador
Wir haben aneinander vorbeigeredet – oder vielleicht besser ich an dir. Bin eben neu auf dem ganzen Gebiet hier und habe alles ein bisschen missverstanden. Habe jetzt aber wieder Ordnung geschaffen in meinem Kopf  ;)
Ich dachte zuerst, Smarty sei ein zusätzliches "Tool" das es zu installieren gelte.

Vergiss bitte meinen ersten Beitrag, ich formuliere alles mal ganz neu:

Auf besagter Seite (http://www.spiritdojofrei.ch/index.php) sollte neben jedem neuen News-Eintrag das Erstellungsdatum eben dieses erscheinen – und zwar in dem Stil, in dem du es auf deiner Spielwiese darstellst. Wie ich die das rein optisch mache ist mir klar. Ich benutze diesen Code:

Code: Select all

<tr> <td style="vertical-align:top;width:80px;"><span class="date"><span class="news_monat"></span><br />
		  <div style="margin-top:5px;"><span class="news_tag">{$entry->formatpostdate}</span></div></span></td><td style="vertical-align:top;">
Jetzt sollte ich mit {$enry->formatpostdate} ja das Datum dargestellt bekommen, an welchem der News-Eintrag erstellt wurde. Mit den Tagen klappt das auch, wie du auf der Seite siehst. Wenn ich aber noch den Code einfüge, um den Erstellungsmonat anzuzeigen, wird immer nur ein Monat für alle Einträge angezeigt; wenn ich zum Beispiel {$entry->formatpostdate|date_format:"%B"} verwende, wie du das gemacht hast, wird über jedem Eintrag "JULI" getitelt, und nicht März, April oder Juni oder wann immer der Eintrag erstellt wurde.

Code: Select all

<tr> <td style="vertical-align:top;width:80px;"><span class="date"><span class="news_monat">{$entry->formatpostdate|date_format:"%B"}</span><br />
		  <div style="margin-top:5px;"><span class="news_tag">{$entry->formatpostdate}</span></div></span></td><td style="vertical-align:top;">
Dass mit created_date das Erstellungsdatum der Seite angezeigt wird, ist ja eben das was ich nicht möchte; ich möchte das Erstellungsdatum des News-Eintrages bekommen. Den Tag des Erstellungsdatums bekomme ich ja auch, nur eben den Monat nicht.

Ist klarer geworden, wo mein Problem liegt?
Danke schonmal für dein Bemühen

Re: "formatpostdate" editieren?

Posted: Tue Jul 03, 2007 8:04 am
by cyberman
martinpescador wrote: wird über jedem Eintrag "JULI" getitelt, und nicht März, April oder Juni oder wann immer der Eintrag erstellt wurde.
Hab gerade gesehen, dass mein Datum "mitläuft" ??? - da stimmt irgend etwas nicht.

date_format verwendet die Parameter von strftime. php.net sagt zu strftime
Gibt einen String zurück, der den angegebenen Formatierungs-Merkmalen entspricht. Dabei wird der gegebene Timestamp/ Zeitstempel oder - falls dieser fehlt - die momentane lokale Zeit benutzt. Der Monats- und Wochentagsname wird entsprechend des per setlocale() eingestellten Wertes gesetzt.
Hmm, somit scheint {$entry->formatpostdate} nicht als Zeitstempel erkannt zu werden ::), so dass die momentane lokale Zeit benutzt wird.

Muss selbst erst noch mal ein bißchen rumprobieren ...

Re: "formatpostdate" editieren?

Posted: Tue Jul 03, 2007 9:41 am
by cyberman
Sehr "schöne" Frage - hab auch noch etwas dazu gelernt ;D.

Zumindest war mir bislang unbekannt, dass ich auch PHP-Funktionen als Smarty-Modifikatoren einsetzen kann.

Damit funktioniert es jetzt auf meiner Spielwiese, wie es soll:

Code: Select all

{if $entry->formatpostdate}
	<div style='float: left; margin-right: 0.5em; padding-right: 0.5em; border-right: 1px solid #000;' class="NewsSummaryPostdate">
                {assign var=dt value="."|explode:$entry->formatpostdate} 
		<span>{$dt[1]|date_format:"%B"|upper}</span><br /><br />
                <span style='font-size: 3em;'>{$dt[0]}</span>
	</div>
{/if}
Das erste Beispiel hat vermutlich nicht funktioniert, da $entry->formatpostdate bereits das Ergebnis einer strftime Funktion ist.

Re: "formatpostdate" editieren?

Posted: Tue Jul 03, 2007 10:53 am
by martinpescador
Öhm... War "Januar" wirklich was du wolltest?  :) ???

Re: "formatpostdate" editieren?

Posted: Tue Jul 03, 2007 11:06 am
by cyberman
Yep. Das ist das Erstellungsdatum des Artikels :)

Re: "formatpostdate" editieren?

Posted: Tue Jul 03, 2007 11:13 am
by martinpescador
Okay. Weil wenn ich das benutze erhalte ich einfach über jedem Eintrag ein "Januar"  :'( Ich verstehe nicht gerade viel von der Materie, aber mache ich etwas falsch?

Re: "formatpostdate" editieren?

Posted: Tue Jul 03, 2007 11:25 am
by cyberman
Hmm, date_format ist in diesem Fall wahrscheinlich keine gute Wahl :-\.

Ruf mal das News-Modul mit den folgenden Parametern auf

Code: Select all

{news dateformat="%e.%B"}
Und dazu folgendes Templateteil

Code: Select all

{if $entry->formatpostdate}
	<div style='float: left; margin-right: 0.5em; padding-right: 0.5em; border-right: 1px solid #000;' class="NewsSummaryPostdate">
                {assign var=dt value="."|explode:$entry->formatpostdate} 
		<span>{$dt[1]|upper}</span><br /><br />
                <span style='font-size: 3em;'>{$dt[0]}</span>
	</div>
{/if}

Re: "formatpostdate" editieren?

Posted: Tue Jul 03, 2007 11:39 am
by martinpescador
Grossartig! :D

Hat jetzt super geklappt. Du glaubst nicht wie froh mich das macht ;) Jetzt muss ich nur noch das Problem mit M?RZ statt MÄRZ lösen...
Vielen Dank!

Re: "formatpostdate" editieren?

Posted: Tue Jul 03, 2007 12:54 pm
by cyberman
Das ist das eine Frage der Kodierung.

Dein Template ist derzeit mit ISO-8859-1 kodiert. Die CMSms-Administration liefert die Daten aber mit der utf-8 Kodierung, so dass die Umlaute nicht ordnungsgemäß dargestellt werden. Deswegen validiert es ja auch nicht :)

http://validator.w3.org/check?verbose=1 ... Findex.php

Re: "formatpostdate" editieren?

Posted: Tue Jul 03, 2007 2:47 pm
by martinpescador
Musste mein Template IN ISO-8859-1 kodieren, damit es funktioniert hat! Oder habe ich dich falsch verstanden? Na jedenfalls waren bei der jetzt klappenden Validierung noch einige Errors zu finden  :-\ Ist es normal, dass durch das CMS so viele Fehler verursacht werden? Habe gesehen dass es bspw. auch noch das -Tag benutzt. Vor dessen Einbindung hatte ich noch (vielleicht fast) keine...

Danke für deine Unterstützung.

Re: "formatpostdate" editieren?

Posted: Tue Jul 03, 2007 5:22 pm
by cyberman
martinpescador wrote: Musste mein Template IN ISO-8859-1 kodieren, damit es funktioniert hat!
Dann solltest du die Administration auch auf ISO-8859-1 umstellen (siehe config.php), die Entities sollten eigentlich so kodiert sein, dass der Wechsel keine Probleme bereiten sollte.
es normal, dass durch das CMS so viele Fehler verursacht werden?
Nee, isses nich, die Standard-Installation ist komplett (Frontend) xhtml-valid.
Vor dessen Einbindung hatte ich noch (vielleicht fast) keine...
Schau dir den Output/html-Source mal genau an - ein Großteil der Fehler beruht auf einem doppelten Header

Code: Select all

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<__html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Spirit Dojo Frei - News</title>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<__html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
Und solche Konstruktionen
  JUNI

  27

bei denen du einen div Container mit span einrahmst, machen dir in einem News-Template, welches x-mal wiederholt wird, auch alles kaputt.
Danke für deine Unterstützung.
Die Rechnung kommt später  ;D.