Hilfe - Suche - Mitglieder - Kalender
Vollansicht: Countdown
Forum Sefrengo.org > Downloads > Alpha, Beta ... Vorabversionen
pawel
Hallo zusammen,

hier mal ein kleines Modul von mir. Ich brauchte in einem aktuellen Projekt ein Kalenderblatt, das eine Tagesdifferenz bis zum einem Datum anzeigt. (Noch x Tage). Das habe ich direkt im Layout realisiert.
Dann wollte ich schon längst mal wissen, wie man eigentlich ein Modul schreibt und zum Lernen sind viele Modulvorbilder sehr komplex und nicht sehr anschaulich.Ich habe es also umgesetzt und es minimal gehalten. Es ist nur ein Textfeld und ein Templatefeld enthalten.Ich schreib demnächst mal ein kleines Tut vom Code zum Modul, was meine Schritte nachvollzieht. (Code in Output, mip_forms, input)

Ursprünglich wollte ich die Zeitumrechnung in eine Funktion packen:
QUELLTEXT
function return_timestamp($date){
$pieces = split("\.",$date);
$stamp = mktime(0, 0, 0, $pieces[1],$pieces[0],$pieces[2]);
return($stamp);
}

Irgendwie scheint SF aber die Zeile mit dem Split nicht zu mögen.
bjoern
Versuch mal split('\.',$date); Die doppelten gegen einfache Anführungszeichen tauschen. Ein \ innerhalb doppelter ANführungszeichen, leitet immer ein besonderes Zeitchen ein.
mvsxyz
Warum eigentlich split? Explode tut es doch auch.
pawel
Ich habe keinen Unterschied zwischen explode und split gesehen. Funktioniert aber beides nicht im Modul.
Ich habe die Anführungsstriche mal vereinfacht und explode verwendet, ohne Ergebnis.

Ich habe beide alle Varianten mal als Standalone (also Variable gefüllt udn tpl entfermt und in ein Einzeldokument) ausprobiert und sie funktionieren alle.
alexander
wie wärs mit ... geht denn das?

QUELLTEXT
if (!function_exists('return_timestamp')){
  function return_timestamp($date){
    $pieces = split("\.",$date);
    $stamp = mktime(0, 0, 0, $pieces[1],$pieces[0],$pieces[2]);
    return($stamp);
  }
}
pawel
Nein, aber gibt es denn so eine Funktion schon? Dachtest du es kollidiert mit <cms:mod type ="date" ?

Na ja mit substr hat es ja geklappt, es gibt ja bei php mehr als einen Weg zum Ziel.
Wie wäre jetzt die Schrittfolge, damit man als Redakteur für das Modul auf der Seite per select-Felder das Datum auswählen kann?
pawel
Ich habe mal versucht das Modul auszubauen.
Die Idee war statt

QUELLTEXT
$myDatum = "MOD_VALUE[0]";


aus der Templatekonfiguration zu holen, dem Redakteur
mit

QUELLTEXT
$myDatum = <cms:mod type = "date" id = "1" />;


die Einstellmöglichkeit zu geben.
Irgendwo habe ich aber einen Denkfehler, denn ich bekomme ein
QUELLTEXT
Parse error: syntax error, unexpected '<' in

Das Modul läßt sich aber ohne Fehlermeldung speichern.
mistral
Probier es so:
QUELLTEXT
$myDatum = <cms:mod type = "date" id = "1" addslashes="true" />;



Gruss
Mistral
MaZderMind
Hi
Entweder
$myDatum = '<cms:mod type = "date" id = "1" />';
oder
$myDatum = <cms:mod type = "date" id = "1" addslashes="true" />;

Und könnte man vllt endlich mal auf einen Namensraum für Variablen in Modulen definieren? Weil irgendein modul kollidiert dann wieder mit SF oder einem anderen Modul weil Variablen nicht zurückgesetzt werden etc...

Am besten am Anfang des Moduls ein leeres Array erzeugen:
$mod = array();
Variablen innerhalb des Arrays ablegen:
$mod['myDate'] = ...
und am ende das Array wieder löschen
unset($mod);

Nur dann ist sichergestellt dass kein anderes Modul oder SF in den eigenen Variablen rumpfuscht oder dass das eigene Modul SF-Eigene Variablen überschreibt. Natürlich wäre eine Klassenbasierte Lösung (Ein Modul = eine Klasse) besser aber für den Anfang....

Gruß, Peter
pawel
Es klappt, ich habe nur noch mode="default-cms-date-format" hinzugefügt.
Allerdings erscheint kein Auswahlfeld, um das Datum einzugeben. Wenn ich das Datum direkt ausgebe, kann ich es editieren.
Brauch ich noch ein extra Feld?
mistral
ich kenne dein Modul jetzt nicht, aber das kann schon sein, das du noch ein separets Feld für die Eingabe brauchst. Dazu kannst du am besten den Tag "<cms:mod type="typegroup" />" verwenden
pawel
Langsam beginne ich durchzublicken...

Über die typegroup kann jetzt das Datum vom Redakteur verändert werden. Ich habe dann auch gleich date mit mode="timestamp" ausgeben lassen und mir die Umrechnung gespart.

Jetzt fehlt mir nur noch eins zum Glück rolleyes.gif .
Ich hätte gern im Template eine Variable {style}. Wenn kein Style ausgewählt ist bleibt diese leer, ansonsten wird beispielsweise class="meineKlasse" eingesetzt (im Output).

Ich habe mir einige Module angesehen aber meistens wird nur um die Variable herum ein <span class="meineKlasse" gesetzt.

Hat jemand einen Tipp?

Anbei noch mal das überarbeitete Modul.
Olaf
Das mit den Styles war in den letzten Tagen in einem Thread zum Bildmodul aktuell, such mal danach, da ist es gut beschrieben wie das zu machen wäre.
Dieses ist eine vereinfachte Darstellung unseres Foreninhaltes. Um die detaillierte Vollansicht mit Formatierung und Bildern zu betrachten, bitte hier klicken.
Invision Power Board © 2001-2024 Invision Power Services, Inc.