modul template
modul template
moin,
ist irgendwo mal beschrieben, wann es sinnvoll ist, ein modul-template zu verwenden, bzw. wann zwingend eines benötigt wird?
man könnte doch die ausgabe komplett im php code des moduls steuern, oder?
ist übrigens mal ein contenido wiki geplant? würde auch gerne daran mitarbeiten.
V.
ist irgendwo mal beschrieben, wann es sinnvoll ist, ein modul-template zu verwenden, bzw. wann zwingend eines benötigt wird?
man könnte doch die ausgabe komplett im php code des moduls steuern, oder?
ist übrigens mal ein contenido wiki geplant? würde auch gerne daran mitarbeiten.
V.
Si non confectus, non reficiat. (Motto der Vetinaris)
Solange etwas nicht kaputt ist, repariere es nicht.
oder:
Lass die Dinge einfach laufen, die meisten Probleme erledigen sich eh von selbst.
Solange etwas nicht kaputt ist, repariere es nicht.
oder:
Lass die Dinge einfach laufen, die meisten Probleme erledigen sich eh von selbst.
sicher käme man auch komplett ohne Modul-Templates aus. Aber wenn man das Layout einfach und bequem editieren will, empfiehlt sich eine strikte Trennung zwischen Code (Modul) und Design (Modul-Template, CSS-Datei). Es liegt also letztendlich immer im Ermessen des Programmierers, wann und wo er Templates nutzt..
bezüglich Wiki: Nun, ja... leichte Bewegungen in Richtung Tutorials, FAQ sind durchaus vorhanden:
http://contenido.org/forum/viewtopic.ph ... highlight=
http://faq.contenido.org
bezüglich Wiki: Nun, ja... leichte Bewegungen in Richtung Tutorials, FAQ sind durchaus vorhanden:
http://contenido.org/forum/viewtopic.ph ... highlight=
http://faq.contenido.org
"Es wird keine Handlung geben, keine Geschichte mit ihrer Versprechung auf einen Anfang und ihrer Hoffnung auf ein Ende." (Andrzej Stasiuk)
Hallo V.
ich bin auch Contenido - Neueinsteiger und ich kann aus meiner Sicht nur empfehlen, ausschließlich mit Modultemplates zu arbeiten.
Der php - Code ist wesentlich besser lesbar und das Ganze ist insgesamt besser zu warten.
Da ich auch erst in diesem Jahr überhaupt mit php / html angefangen habe, kommt mir das - finde ich - besonders entgegen :
Ich kann mich immer gezielt entweder auf das Layout oder auf die Funktionalität konzentrieren und verliere nicht so schnell den Überblick. Das beginnt schon mit den verschiedenen "" '' - Zeichen in einem ellenlangen echo() - Befehl .
So habe ich auch für verhältnismäßig kleine Schnipsel Templates.
Bezüglich der Performance kann ich keine Probleme feststellen.
P.S. Das mit dem Wiki ist grundsätzlich eine gute Idee.
In unserem Hobbybrauerforum (siehe Signatur) gibt es auch sowas. Es ist dort nur so, das von über 4000 angemeldeten Usern maximal 5 aktiv und regelmäßig dort schreiben. Deshalb wächst das sehr langsam.
Grüße
Tino
ich bin auch Contenido - Neueinsteiger und ich kann aus meiner Sicht nur empfehlen, ausschließlich mit Modultemplates zu arbeiten.
Der php - Code ist wesentlich besser lesbar und das Ganze ist insgesamt besser zu warten.
Da ich auch erst in diesem Jahr überhaupt mit php / html angefangen habe, kommt mir das - finde ich - besonders entgegen :
Ich kann mich immer gezielt entweder auf das Layout oder auf die Funktionalität konzentrieren und verliere nicht so schnell den Überblick. Das beginnt schon mit den verschiedenen "" '' - Zeichen in einem ellenlangen echo() - Befehl .
So habe ich auch für verhältnismäßig kleine Schnipsel Templates.
Bezüglich der Performance kann ich keine Probleme feststellen.
P.S. Das mit dem Wiki ist grundsätzlich eine gute Idee.
In unserem Hobbybrauerforum (siehe Signatur) gibt es auch sowas. Es ist dort nur so, das von über 4000 angemeldeten Usern maximal 5 aktiv und regelmäßig dort schreiben. Deshalb wächst das sehr langsam.
Grüße
Tino
Für die Freizeit : www.hobbybrauer.de
@tino
ja, das klingt gut; bin auch immer für größtmögliche übersicht. ich kapier aber noch nicht so ganz wie ein modul template korrekt eingebunden wird. kannst du mir da mal codemäßig weiter helfen?
das mit der beteiligung am wiki ist normal. deshalb wäre meiner meinung nach die wikipedia variante die beste, wo jeder posten kann (man kann es ja auf alle für das contenido forum registrierten user beschränken) und sich einige admins finden, welche das wiki "sauber" und sachlich richtig halten.
V.
ja, das klingt gut; bin auch immer für größtmögliche übersicht. ich kapier aber noch nicht so ganz wie ein modul template korrekt eingebunden wird. kannst du mir da mal codemäßig weiter helfen?
das mit der beteiligung am wiki ist normal. deshalb wäre meiner meinung nach die wikipedia variante die beste, wo jeder posten kann (man kann es ja auf alle für das contenido forum registrierten user beschränken) und sich einige admins finden, welche das wiki "sauber" und sachlich richtig halten.
V.
Si non confectus, non reficiat. (Motto der Vetinaris)
Solange etwas nicht kaputt ist, repariere es nicht.
oder:
Lass die Dinge einfach laufen, die meisten Probleme erledigen sich eh von selbst.
Solange etwas nicht kaputt ist, repariere es nicht.
oder:
Lass die Dinge einfach laufen, die meisten Probleme erledigen sich eh von selbst.
Hallo,
mangels Zeit nur ganz kurz :
Im Template speichere ich 'ein Stück' meiner Website in Form von HTML Code. Für dynamische / varible Inhalte, die erst zur Laufzeit bekannt sind, werden {Platzhalter} vorgesehen, die später im php Code ersetzt werden müssen.
Für Listen und andere wiederkehrende Inhalte mit gleicher Struktur kann ich dynamische Blöcke vorsehen. Das heißt, ich definiere das Layout für ein Listenelement und beim späteren Generieren des Codes wird dieses Element beliebig oft wiederholt. Dynamische Blöcke werden in Begin:Block / End:Block - Kommentare eingeschlossen :
Beispiel :
Im code muss ich nun die Platzhalter mit Inhalten füllen. Dafür gibt es die Klasse Template.
Das war's im Wesentlichen.
Soweit ich das beurteilen kann, gibt es in einem Template nur einen dynamischen Block. Wenn man tiefere Verschachtelungen benötigt, kann man trotzdem mit Templates arbeiten, indem man die Ergebnisse der inneren Schleifen wiederum in entsprechende Platzhalter in den umschließenden Templates einsetzt. :
hth
Tino
mangels Zeit nur ganz kurz :
Im Template speichere ich 'ein Stück' meiner Website in Form von HTML Code. Für dynamische / varible Inhalte, die erst zur Laufzeit bekannt sind, werden {Platzhalter} vorgesehen, die später im php Code ersetzt werden müssen.
Für Listen und andere wiederkehrende Inhalte mit gleicher Struktur kann ich dynamische Blöcke vorsehen. Das heißt, ich definiere das Layout für ein Listenelement und beim späteren Generieren des Codes wird dieses Element beliebig oft wiederholt. Dynamische Blöcke werden in Begin:Block / End:Block - Kommentare eingeschlossen :
Beispiel :
Code: Alles auswählen
<h1>{STATISCHER_TEXT}</h1>
<!-- BEGIN:BLOCK -->
<h2>{DYN_TEXT_A}</h2>
<p>{DYN_TEXT_B}</p>
<!-- END:BLOCK -->
Code: Alles auswählen
<?php
// Klasse einbinden
cInclude("classes", "class.template.php");
// Instanz erzeugen
$tpl = new Template;
// Instanz Initialisieren
$tpl->reset();
// Ersetzen der statischen Platzhalter
$tpl->set("s","STATISCHER_TEXT","Das ist der statische Text");
// Ersetzen der dynamischen Platzhalter
for ($i =1 ; $i < 5; $i++) {
$tpl->set("d","DYN_TEXT_A","dynamische Überschrift Nr. " . $i);
$tpl->set("d","DYN_TEXT_B","dynamischer Text " . $i);
// template für nächsten Block / nächste Wiederholung vorbereiten
$tpl->next();
}
// Template-Objekt gefuellt --> jetzt noch generieren
$tplname = $cfgClient[$client]["path"]["frontend"]."templates/"."MEINTEMPLATE.HTML";
$tpl->generate($tplname); // HIER erfolgt die Ausgabe
Soweit ich das beurteilen kann, gibt es in einem Template nur einen dynamischen Block. Wenn man tiefere Verschachtelungen benötigt, kann man trotzdem mit Templates arbeiten, indem man die Ergebnisse der inneren Schleifen wiederum in entsprechende Platzhalter in den umschließenden Templates einsetzt. :
Code: Alles auswählen
// Ergebnis des inneren Templates 'abholen'
$htmltext = tpl->generate([name_inneres_template]);
// umschließendes Template bearbeiten
tpl->reset();
....
tpl->set("s","PLH_INNERE_WIEDERHOLUNG",$htmltext);
...
tpl->generate()
Tino
Für die Freizeit : www.hobbybrauer.de
-
- Beiträge: 32
- Registriert: Fr 22. Jun 2007, 23:06
- Wohnort: Ingolstadt
- Kontaktdaten:
Hab eine Frage zu Kontaktformular,
Die funktionalität des Kontaktformulars ist folgender:
Gibt der User die Daten in das Kontaktformular ein und vergisst dabei ein Pflichtfeld auszufüllen.
Beim Absenden wird dann durch eine Fehlermeldung der dementsprechende Hinweis gegeben, welches Feld noch auszufüllen ist.
(Habe es bereits so modifiziert, dass das Formular bei Fehlermeldungen nochmals angezeigt wird)
Nebenbei werden aber dann auch die bereits ausgefüllten Felder wieder gelöscht. Fazit: Der User muss die ganze Soße nochmals eingeben.
Das zu umgehen, dass die bereitsausgefüllten Felder nicht gelöscht werden, könnte man im Modul-Template (Kontaktfomular) in der jeweiligen <input..... die value="<? php echo $_POST[feldname]; ?>" hinzufügen. Leider funktioniert das aber nur wenn es eine php Datei ist. Und die lassen sich nur zu schwer in Modul-Template ausführen.
Ich hoffe ihr versteht was ich meine.
Gibt es da eine andere Möglichkeit im Kontakt Modul vorzunehmen. Ich glaube kaum, oder doch?
Die funktionalität des Kontaktformulars ist folgender:
Gibt der User die Daten in das Kontaktformular ein und vergisst dabei ein Pflichtfeld auszufüllen.
Beim Absenden wird dann durch eine Fehlermeldung der dementsprechende Hinweis gegeben, welches Feld noch auszufüllen ist.
(Habe es bereits so modifiziert, dass das Formular bei Fehlermeldungen nochmals angezeigt wird)
Nebenbei werden aber dann auch die bereits ausgefüllten Felder wieder gelöscht. Fazit: Der User muss die ganze Soße nochmals eingeben.
Das zu umgehen, dass die bereitsausgefüllten Felder nicht gelöscht werden, könnte man im Modul-Template (Kontaktfomular) in der jeweiligen <input..... die value="<? php echo $_POST[feldname]; ?>" hinzufügen. Leider funktioniert das aber nur wenn es eine php Datei ist. Und die lassen sich nur zu schwer in Modul-Template ausführen.
Ich hoffe ihr versteht was ich meine.
Gibt es da eine andere Möglichkeit im Kontakt Modul vorzunehmen. Ich glaube kaum, oder doch?
Hi,
einfach den value= - Teil auch als Template - Variable definieren.
Hier ein Beispiel aus einem meiner Formulare :
und dazu der Modulcode (ein Teil)
Ich hoffe, es ist erkennbar
einfach den value= - Teil auch als Template - Variable definieren.
Hier ein Beispiel aus einem meiner Formulare :
Code: Alles auswählen
<tr style="font-weight: bold;">
<td height="20">{BLOCK_ADR_TXT}</td>
<td class="TABELLE"><hr noshade style="color:grey; height:1px;"></td>
</tr>
<tr valign="middle" >
<td class="TABELLE" >{ADR_STRASSE_TXT}</td>
<td class="TABELLE"><input type="text" name="fmadr_strasse" size="50" value="{ADR_STRASSE_VALUE}"></td>
</tr>
<tr valign="middle">
<td class="TABELLE">{ADR_LAND_TXT}</td>
<td class="TABELLE"><input type="text" name="fmadr_land" size="50" value="{ADR_LAND_VALUE}"></td>
</tr>
<tr valign="middle">
<td class="TABELLE">{ADR_PLZORT_TXT}</td>
<td class="TABELLE">
<input type="text" name="fmadr_plz" size="10" value="{ADR_PLZ_VALUE}">
<input type="text" name="fmadr_ort" size="35" value="{ADR_ORT_VALUE}">
</td>
</tr>
Code: Alles auswählen
// Liefer- Postanschrift
function adresse(){
global $frmcfg;
$tpl = new template;
$tpl->reset();
$tpl->set('s','BLOCK_ADR_TXT',frmmi18n('block_adr_txt'));
$tpl->set('s','ADR_STRASSE_TXT',frmmi18n('adr_strasse_txt'));
$tpl->set('s','ADR_STRASSE_VALUE',$_POST['fmadr_strasse']);
$tpl->set('s','ADR_LAND_TXT',frmmi18n('adr_land_txt'));
$tpl->set('s','ADR_LAND_VALUE',$_POST['fmadr_land']);
$tpl->set('s','ADR_PLZORT_TXT',frmmi18n('adr_plzort_txt'));
$tpl->set('s','ADR_PLZ_VALUE',$_POST['fmadr_plz']);
$tpl->set('s','ADR_ORT_VALUE',$_POST['fmadr_ort']);
$tplname = $frmcfg['tmpl']['adresse'];
return($tpl->generate($tplname,1));
}
Für die Freizeit : www.hobbybrauer.de
-
- Beiträge: 32
- Registriert: Fr 22. Jun 2007, 23:06
- Wohnort: Ingolstadt
- Kontaktdaten:
Hallo tinof,
vielen Dank für die Gedankenstütze.
Es funktioniert soweit. Die eingetragenen Werte werden nun nicht mehr gelöscht. Was mir jedoch bei der Testfase aufgefallen ist. =>
Praxis: Nachdem der User vielleicht ein Pflichtfeld vergessen hatte auszufüllen, wird zum zweiten mal das Formular geladen.
Ab diesen Augenblick funktioniert nur noch der Löschbutton für die letzte Eingabe. Nicht alle Felder werden gelöscht.
Hätte noch eine kleine Bitte:
Habe vor kurzem ein Formular in PHP gebastelt (aber nicht in Contenido).
Vergisst hier der User ein Feld, bleiben alle bisher eingegeben Daten erhalten und die Feldnamen werden über css. dann andersfarbig gestaltet. Wie könnte man die Feldnamen hier im contenido bei Fehlereintritt umsetzten. if abfragen kann man ja leider nicht in normalen modul-templates einfügen.
Das ist der Code den ich bei anderen Formularen (nicht in contenido) verwende.
Gruß Wildstar1600
vielen Dank für die Gedankenstütze.
Es funktioniert soweit. Die eingetragenen Werte werden nun nicht mehr gelöscht. Was mir jedoch bei der Testfase aufgefallen ist. =>
Praxis: Nachdem der User vielleicht ein Pflichtfeld vergessen hatte auszufüllen, wird zum zweiten mal das Formular geladen.
Ab diesen Augenblick funktioniert nur noch der Löschbutton für die letzte Eingabe. Nicht alle Felder werden gelöscht.
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Contact form
* Author(s) : Andreas Lindner
* Copyright : Contenido - four for business
* Created : 12.08.2005
************************************************/
#Includes
cInclude("classes", "class.phpmailer.php");
if (!isset ($_POST['send'])) {
#Form has not been sent yet
cInclude('classes', 'class.article.php');
cInclude('classes', 'class.template.php');
#Create contact form -- Aufbau Kontaktformular
#---------------------------------------------
echo '<form name="kontaktform" id="kontaktform" method="post" action="'.$sess->url("front_content.php?idcat=$idcat&idart=$idart&parentid=$parentid").'">';
echo '<input type="hidden" name="send" value="1">';
if (!is_object($tpl)) {
$tpl = new Template;
}
$tpl->set("s", "ANREDE", mi18n("Anrede"));
$tpl->set("s", "ANREDE_OPTION1", mi18n("Herr"));
$tpl->set("s", "ANREDE_OPTION2", mi18n("Frau"));
$tpl->set("s", "NACHNAME", mi18n("Name"));
$tpl->set("s", "ADR_NACHNAME_VALUE", $_POST['Nachname']);
$tpl->set("s", "VORNAME", mi18n("Vorname"));
$tpl->set("s", "ADR_VORNAME_VALUE", $_POST['Vorname']);
$tpl->set("s", "FIRMA", mi18n("Firma"));
$tpl->set("s", "ADR_FIRMA_VALUE", $_POST['Firma']);
$tpl->set("s", "STRASSE", mi18n("Strasse/Nr."));
$tpl->set("s", "ADR_STRASSE_VALUE", $_POST['Strasse']);
$tpl->set("s", "PLZORT", mi18n("PLZ/Ort"));
$tpl->set("s", "ADR_PLZORT_VALUE", $_POST['PLZOrt']);
$tpl->set("s", "TELEFON", mi18n("Telefon"));
$tpl->set("s", "ADR_TELEFON_VALUE", $_POST['Telefon']);
$tpl->set("s", "EMAIL", mi18n("eMail"));
$tpl->set("s", "ADR_EMAIL_VALUE", $_POST['EMail']);
$tpl->set("s", "ANLIEGEN", mi18n("Nachricht"));
$tpl->set("s", "ADR_ANLIEGEN_VALUE", $_POST['Anliegen']);
$tpl->set("s", "PFLICHTFELDER", mi18n("Pflichtfelder"));
$tpl->set("s", "ABSCHICKEN", mi18n("Abschicken"));
$tpl->set("s", "LOESCHEN", mi18n("Löschen"));
$tpl->generate($cfgClient[$client]["path"]["frontend"]."templates/kontaktformular.html");
echo '</form>';
} elseif ($_POST['send'] == 1) {
#Form has been sent
#Check user input
$noerrors = true;
$msg = '';
if ($_POST['Vorname'] == '') {
$noerrors = false;
$msg .= mi18n("Bitte geben Sie Ihren Vornamen ein!")."<br/>";
}
if ($_POST['Nachname'] == '') {
$noerrors = false;
$msg .= mi18n("Bitte geben Sie Ihren Namen ein!")."<br/>";
}
if ($_POST['EMail'] == '') {
$noerrors = false;
$msg .= mi18n("Bitte geben Sie Ihre EMail-Adresse ein!")."<br/>";
}
if ($_POST['Strasse'] == '') {
$noerrors = false;
$msg .= mi18n("Bitte geben Sie Ihre Strasse ein!")."<br/>";
}
if ($_POST['PLZOrt'] == '') {
$noerrors = false;
$msg .= mi18n("Bitte geben Sie Ihre PLZ/Ort ein!")."<br/>";
}
if ($noerrors == false) {
#Errors have been found
echo mi18n("Beim Versenden sind folgende Fehler aufgetreten:")."<br/>";
echo $msg.'<br/>';
#Bei Fehleingaben wird das Kontaktformular nochmals angezeigt
#------------------------------------------------------------
echo '<form name="kontaktform" id="kontaktform" method="post" action="'.$sess->url("front_content.php?idcat=$idcat&idart=$idart&parentid=$parentid").'">';
echo '<input type="hidden" name="send" value="1">';
if (!is_object($tpl)) {
$tpl = new Template;
}
$tpl->set("s", "ANREDE", mi18n("Anrede"));
$tpl->set("s", "ANREDE_OPTION1", mi18n("Herr"));
$tpl->set("s", "ANREDE_OPTION2", mi18n("Frau"));
$tpl->set("s", "NACHNAME", mi18n("Name"));
$tpl->set("s", "ADR_NACHNAME_VALUE", $_POST['Nachname']);
$tpl->set("s", "VORNAME", mi18n("Vorname"));
$tpl->set("s", "ADR_VORNAME_VALUE", $_POST['Vorname']);
$tpl->set("s", "FIRMA", mi18n("Firma"));
$tpl->set("s", "ADR_FIRMA_VALUE", $_POST['Firma']);
$tpl->set("s", "STRASSE", mi18n("Strasse/Nr."));
$tpl->set("s", "ADR_STRASSE_VALUE", $_POST['Strasse']);
$tpl->set("s", "PLZORT", mi18n("PLZ/Ort"));
$tpl->set("s", "ADR_PLZORT_VALUE", $_POST['PLZOrt']);
$tpl->set("s", "TELEFON", mi18n("Telefon"));
$tpl->set("s", "ADR_TELEFON_VALUE", $_POST['Telefon']);
$tpl->set("s", "EMAIL", mi18n("eMail"));
$tpl->set("s", "ADR_EMAIL_VALUE", $_POST['EMail']);
$tpl->set("s", "ANLIEGEN", mi18n("Nachricht"));
$tpl->set("s", "ADR_ANLIEGEN_VALUE", $_POST['Anliegen']);
$tpl->set("s", "PFLICHTFELDER", mi18n("Pflichtfelder"));
$tpl->set("s", "ABSCHICKEN", mi18n("Abschicken"));
$tpl->set("s", "LOESCHEN", mi18n("Löschen"));
$tpl->generate($cfgClient[$client]["path"]["frontend"]."templates/kontaktformular.html");
echo '</form>';
echo '<a href="javascript:history.back();">'.mi18n("Zurück").'</a>';
} else {
#No errors, create and send mail
$mail = new phpmailer;
$mail_body = '<html><head></head><body bgcolor="#ffffff"><table cellspacing="0" cellpadding="2" border="0">';
if (is_array($_POST)) {
foreach ($_POST as $key => $value) {
if ($key != 'send') {
$mail_body .= "<tr><td>$key</td><td>$value</td></tr>";
}
}
}
$mail_body .= '</table></bo'.'dy></html>';
$mail->Host = "localhost";
$mail->IsHTML(true);
#Get mailer from settings
switch (strtolower("CMS_VALUE[4]")) {
case "smtp" :
$mail->IsSMTP();
$host = "CMS_VALUE[5]";
$user = "CMS_VALUE[6]";
$password = "CMS_VALUE[7]";
if (($host != '') && ($user != '') && ($password != '')) {
$mail-> $SMTPAuth = true;
$mail->Host = $host;
$mail->Username = $user;
$mail->Password = $password;
}
break;
case "mail" :
$mail->IsMail();
break;
case "sendmail" :
$mail->IsSendmail();
break;
case "qmail" :
$mail->IsQmail();
break;
default :
}
$mail->From = "CMS_VALUE[0]";
$mail->FromName = "CMS_VALUE[2]";
$mail->AddAddress("CMS_VALUE[1]", "");
$mail->Subject = "CMS_VALUE[3]";
$mail->Body = $mail_body;
$mail->WordWrap = 50;
$mail->Send();
#Display message after mail is sent
echo mi18n("Ihr Anliegen wurde uns Übermittelt. Vielen Dank!")."<br/>";
}
}
?>
Hätte noch eine kleine Bitte:
Habe vor kurzem ein Formular in PHP gebastelt (aber nicht in Contenido).
Vergisst hier der User ein Feld, bleiben alle bisher eingegeben Daten erhalten und die Feldnamen werden über css. dann andersfarbig gestaltet. Wie könnte man die Feldnamen hier im contenido bei Fehlereintritt umsetzten. if abfragen kann man ja leider nicht in normalen modul-templates einfügen.
Das ist der Code den ich bei anderen Formularen (nicht in contenido) verwende.
Code: Alles auswählen
<tr>
<?php
// ***********************************************************
// ABSENDER
// Ist das Eingabefeld ausgefüllt. Feldname = Normale Textformatierung
// $AbsenderFehlt: Feldname wird farblich abgeändert
// ***********************************************************
if(!$AbsenderFehlt)
{ echo "<td width='820'><p class='txt'>Ihren Namen:*</p></td>"; }
else
{ echo "<td width='820'><p class='txt_rot09'>".$AbsenderFehlt.":*</p></td>"; }?>
<td width="210" align="right"><input type="text" class="textfeld" size="40" name="absender" value="<?php echo $_POST['absender'];?>"></td>
</tr>
Gruß Wildstar1600
Hi,
also das mit dem "Abbrechen" (<input type="reset">)ist in der Tat ein Problem, dieses Element setzt nur die (lokalen) Nutzereingaben seit dem letzten Laden der Seite zurück, ohne das Formular dazu an den Server zurückzuschicken. Da aber das Formular ja bereits mit den vorhergehenden Daten 'geladen' wurde, werden jetzt nur nachträgliche Änderungen zurückgesetzt.
Wenn das wirklich ein Problem ist, dann kommt man nicht umhin einen 'normalen' <reset> Button zu definieren, der das Formular mit einem (selbstdefinierten) Befehl "reset" an den Server schickt. Dort muß man dann darauf reagieren und ein vollkommen leeres Formular zurückschicken.
Für die farbliche Hervorhebung der fehlenden Felder geht auch wieder der Mechanismuns der Template - Variablen, also im Template
und im php
Also, es kann eine x beliebige Ausgabe im Template in Variablen verpackt und somit 'dynamisiert' werden. Man ist nicht nur auf reine Texte beschränkt. Der Aufwand erscheint zwar etwas hoch, aber ich bin ein absulter Verfechter dieses Vorgehens, weil :
- konsequente Trennung von Programmlogik und Layout
- viel besser lesbarer Programmcode
Viel Erfolg!
Tino
also das mit dem "Abbrechen" (<input type="reset">)ist in der Tat ein Problem, dieses Element setzt nur die (lokalen) Nutzereingaben seit dem letzten Laden der Seite zurück, ohne das Formular dazu an den Server zurückzuschicken. Da aber das Formular ja bereits mit den vorhergehenden Daten 'geladen' wurde, werden jetzt nur nachträgliche Änderungen zurückgesetzt.
Wenn das wirklich ein Problem ist, dann kommt man nicht umhin einen 'normalen' <reset> Button zu definieren, der das Formular mit einem (selbstdefinierten) Befehl "reset" an den Server schickt. Dort muß man dann darauf reagieren und ein vollkommen leeres Formular zurückschicken.
Für die farbliche Hervorhebung der fehlenden Felder geht auch wieder der Mechanismuns der Template - Variablen, also im Template
Code: Alles auswählen
...
<td width='820'><p class="{CLASS_Name}">Ihren Namen:*</p></td>
...
<td width='820'><p class="{CLASS_Vorname}">Ihren Vornamen:*</p></td>
...
Code: Alles auswählen
..
// init:
$class_name='txt'
$class_vorname='txt'
if if ($_POST['Vorname'] == '') {
$noerrors = false;
$msg .= mi18n("Bitte geben Sie Ihren Vornamen ein!")."<br/>";
$class_vorname='txt_rot09'
}
if if ($_POST['Name'] == '') {
$noerrors = false;
$msg .= mi18n("Bitte geben Sie Ihren Namen ein!")."<br/>";
$class_name='txt_rot09'
}
...
$tpl->set('s',CLASS_NAME,$class_name);
..
$tpl->set('s',CLASS_VORNAME,$class_vorname);
- konsequente Trennung von Programmlogik und Layout
- viel besser lesbarer Programmcode
Viel Erfolg!
Tino
Für die Freizeit : www.hobbybrauer.de
-
- Beiträge: 32
- Registriert: Fr 22. Jun 2007, 23:06
- Wohnort: Ingolstadt
- Kontaktdaten:
Hallo tino,
so nun hab ich die ganze Soße fertig und es funktioniert alles super.
In manchen Teilen war ich bereits schon auf dem richtigen Weg. Da ich noch nicht lange hier bin, musste ich das mit den modul-temlates erst mal in der Praxis verstehen.
Danke Dir nochmals für die Unterstützung. Man liest sich bestimmt wieder.
Gruß Wildstar1600
so nun hab ich die ganze Soße fertig und es funktioniert alles super.
In manchen Teilen war ich bereits schon auf dem richtigen Weg. Da ich noch nicht lange hier bin, musste ich das mit den modul-temlates erst mal in der Praxis verstehen.
Danke Dir nochmals für die Unterstützung. Man liest sich bestimmt wieder.
Gruß Wildstar1600
Vielleicht magst Du das fertige Ergebnis noch posten? Vielleicht nützt es anderen.
Gruß
HerrB
Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
-
- Beiträge: 52
- Registriert: Do 23. Feb 2006, 00:16
- Wohnort: Kleinaitingen
- Kontaktdaten:
Einmal ohne und einmal mit Template
Ich habe hier mal einen Vergleich, wie so etwas aussieht bevor man Templates nutzt. Ich stelle das gerade nach und nach um. Vorher sah das Modul aus wie bei 1). Danach gibt es ein überarbeitetes Modul 2) und zusätzlich ein neues Administrations-Template 3).
Gruss aus Bayern
1) MODUL-AUSZUG mit HTML im MODUL
MODUL-AUSZUG mit TEMPLATE
MODUL-TEMPLATE abc_firmensuche.html
Gruss aus Bayern
1) MODUL-AUSZUG mit HTML im MODUL
Code: Alles auswählen
if(!isset($_POST['firmensuche']))
{
?>
<form action="http://www.lehrstellenboerse.org/<? echo $betriebstyp; ?>" method="post" name="suche">
<table class="mytable">
<tbody>
<tr>
<td>Firmenname: </td>
<td><input size="53" type='text' class='textfeld' name='firmenname'></td>
</tr>
<tr>
<td>Ort: </td><td><input size="53" type='text' class='textfeld' name='ort'></td>
</tr>
<tr>
<td></td>
<td><input type="submit" class="button" name="firmensuche" value="Suche absenden ..." /></td>
</tr>
</tbody>
</table><br />
</form>
<?
}
Code: Alles auswählen
if(!isset($_POST['firmensuche']))
{
echo '<form name="suche" method="post" action="http://www.lehrstellenboerse.org/'.$betriebstyp.'">';
cInclude('classes', 'class.template.php'); // Initialisation
$template = 'abc_firmensuche.html'; // Templatezuweisung
if (!is_object($tpl)) { $tpl = new Template; } // Instanz erzeugen
$tpl->reset(); // Instanz Initialisieren
$tpl->set('d', 'BETRIEBSTYP', $betriebstyp);
$tpl->set('s', 'FIRMENNAME', mi18n('firmenname'));
$tpl->set('s', 'FIRMENNAME_FELDNAME', mi18n('Firmenname:'));
$tpl->set('s', 'ORT', mi18n('ort'));
$tpl->set('s', 'ORT_FELDNAME', mi18n('Ort:'));
$tpl->generate($cfgClient[$client]["path"]["frontend"]."templates/abc_firmensuche.html");
echo '</form>';
}
MODUL-TEMPLATE abc_firmensuche.html
Code: Alles auswählen
<table class="mytable">
<tbody>
<tr>
<td>{FIRMENNAME_FELDNAME}</td>
<td><input size='53' type='text' class='textfeld' name='{FIRMENNAME}'></td>
</tr>
<tr>
<td>{ORT_FELDNAME}</td>
<td><input size='53' type='text' class='textfeld' name='{ORT}'></td>
</tr>
<tr>
<td></td><td><input type="submit" class="button" name="firmensuche" value="Suche absenden ..." /></td>
</tr>
</tbody>
</table>
"Im Wald zwei Wege boten sich mir dar, und ich nahm den der weniger betreten war. Und das veränderte mein Leben."