db_connect | erwartet keinen Parameter sie holt die Daten aus der config.php und stellt die Verbindung her und wählt die Datenbank aus! |
db_close | erwartet keinen Parameter, sie schließt die Datenbank Verbindung |
db_query |
erwartet den Querystring also db_query($abfrage); in diesem Querystring ersetzt die Funktion den Platzhalter
durch den aktuellen DBPREF in der config.php daher muss
man um die Tabelle User richtig abzufragen also nur: |
db_result | wie mysql_result, mit Standardwerten 0 für row,field |
db_fetch_assoc |
wie mysql_fetch_assoc |
db_fetch_row | wie mysql_fetch_row |
db_fetch_object | wie mysql_fetch_object |
db_num_rows | wie mysql_num_rows |
db_last_id | wie mysql_insert_id gibt die zuletzt eingetragene ID zurück |
db_count_query | erwartet als Übergabe eine Abfrage die etwas Zählt. kann aber auch für andere Dinge missbraucht werden :-) |
db_make_sites |
diese Funktion sollte wie folgt aufgerufen werden: sie gibt eine Liste mit den Seiten zurück. |
Diese Funktion gibt den Text mit dem Link $link
darunter aus und leitet auf den Link $link in $zeit (Standard 3
Sekunden) weiter. $link kann (muss aber nicht) ein Array sein das dann
wie folgt aufgebaut sein soll, automatisch wird dann zu dem 1. link
weitergeleitet.
array (
'link text' => 'link',
'link text 2' => 'link2'
);
-1 | Posteingang des Empfängers/gelöscht beim Sender |
0 | Posteingang des Empfängers/Postausgang beim Sender (Standard) |
1 | gelöscht beim Empfänger/Postausgang beim Sender |
$design->addheader('<script type="text/javascript" src="javascript.js"></script>');
Zusätzlich wird die globale Variable $ILCH_HEADER_ADDITIONS während header() auch in den Kopf eingebunden.
$design->header();
$design->footer();
diese Klasse dient dazu ein Template zu parsen. generell mal liegen alle Templates im Ordner include/templates und davon geht diese Klasse auch aus weiterhin geht die Klasse auch davon aus das alle Templates die Endung .htm haben daran bitte halten!! Beim eröffnen einer Klasse kann man aber durch den zweiten freiwilligen Parameter angeben das das Template im Ordner include/admin/templates liegt, das bietet sich für den Adminbereich an ;-) Die Klasse versuch schlau zu sein und schau immer zuerst im aktuelle aktiven Design nach ob es dort einen Ordner templates gibt in dem die angeforderte Datei evtl. drin ist. Wenn die Datei in diesem Ordner ist dann wird sie daher genommen, obwohl sie auch unter include/templates liegt. Als kleines Beispiel nehmen wir mal die gbook.htm für das Gästebuch.
Normalerweise liegt diese Datei im Ordner include/templates/gbook.htm Außerdem kann ich sie aber unter include/designs/MEINDESIGN/templates/gbook.htm legen und wenn ich jetzt die Datei gbook.htm über das Templatesystem anfordere wird er die in MEINDESIGN nehmen. Hoffe das ist so klar geworden :-)
eine neue Klasse wird aufgemacht mit:
$tpl = new tpl ( 'dateiname' );
eine Datei in einem Unterordner z.b. dem Admin Ordner
also include/templates/admin steuert man so an:
$tpl = new tpl ( 'admin/dateiname' );
das .htm kann muss man aber nicht angeben ;)
Es gibt noch einen 2. optionalen Parameter, der angibt wo sich die Templatedatei befindet oder ob man das Template direkt als Variable übergibt.
0 | Datei wird in include/templates/ gesucht (Standard) |
1 | Datei wird in include/admin/templates/ gesucht |
2 | Datei wird in include/ gesucht |
3 | Es wird direkt der Inhalt der ersten Variable als Template verwendet |
out($abschnitt) | diese Funktion gibt den $abschnitt des Templates mit echo sofort aus. |
get($abschnitt) | diese Funktion gibt den $abschnitt des Templates zurück, er kann also noch weiter verarbeitet werden. |
del_ar($ar) | diese Funktion löscht Keys die sonst ersetzt werden würden, (eher unwichtige funktion) |
del($k) | löscht einen Speziellen Key da diese aber z.b. in einer Schleife überschrieben werden ist das eher egal |
set_get($key,$value,$abschnitt) | diese Funktion setzt ein Key mit dem entsprechend Wert ($value) und gibt den Abschnitt $abschnitt zurück. |
set_ar_get($ar,$abschnitt) | diese Funktion setzt alle im array enthaltenden Keys und gibt dann den Abschnitt $abschnitt zurück |
set_out($key;$value,$abschnitt) | diese Funktion ist wie set_get() nur das set_out() den Abschnitt $abschnitt direkt mit echo ausgibt |
set_ar_out($ar;$abschnitt) | wie set_ar_get() nur das set_ar_out() den Abschnitt $abschnitt sofort mit echo ausgibt |
set($key,$value) | setzt einen Key mit $key, und als Wert $value |
set_ar($ar) | setzt alle in dem Array enthaltenden Keys und deren Werte als Keys |
list_out($key,$ar) | gibt eine Liste mit echo aus, dabei ist $key der Name der Liste und in dem Array müssen in der Rheinfolge der Prozentzahlen in der Liste die jeweiligen Werte stehen. Weiteres zu Listen in einem Template un zum Aufbau findest du weiter unten. |
list_exists($name) | gibt TRUE zurück wenn die Liste existiert und FALSE wenn das nicht der Fall ist. |
list_get($key,$ar) | Funktioniert wie list_out nur das die Liste zurückgegeben wird und nicht mit echo ausgegeben. |
Dieses Template muss man jetzt erst mit $tpl = new
tpl ( 'diese_template' ); einlesen und dann kann man es auf folgende
Arten richtig ausgeben. der Platzhalter {name} soll durch meinen Namen
(Max Mustermann) ersetzt werden.
$tpl->set('name', 'Max Mustermann');
oder
$tpl->out(0);
$tpl->set_out('name', 'Max Mustermann', 0);
oder:
$tpl->set_ar( array( 'name' => 'Max
Mustermann' ) );
oder
$tpl->out(0);
$tpl->set_ar_out( array( 'name' => 'Max
Mustermann' ) , 0 );
gibt evtl. noch ein paar andere Kombinationen aber das sollte reichen :P...
wieder mit $tpl = new tpl ( 'dieses_template' ); das Template einlesen.
jetzt ist noch ein 2. Abschnitt hinzugekommen und in diesem Abschnitt
gibt es 2 Platzhalter. ich gebe hier mal eine Möglichkeit das
Template richtig auszugeben...
$tpl->set('name', 'Max Mustermann');
$tpl->out(0);
... weiterer PHP-Code
$ar = array(
so jetzt ist alles draußen *g*... und ersetzt es gibt wie gesagt
Unmengen an Möglichkeiten das Template zu parsen und dann auszugeben.
'script' => 'ilchClan',
'version' => '1.1'
);
$tpl->set_ar_out($ar, 1);
so jetzt also alle Member dieses Clans ausgeben in der Liste hat es 2 Platzhalter %1 und %2... und die Liste heißt "alleMember"
$tpl->set('version', '1.0.5');
.... jetzt die Liste generieren
$abf = 'SELECT * FROM prefix_users WHERE recht = -3';
// -3 ist Member recht
so damit wären alle Member ausgegeben in einer select box... aber was genau ist da passiert :P
$erg = db_query($abf);
while($row = db_fetch_assoc($erg)) {
$liste .= $tpl->list_get( 'alleMember',
array ( $row['id'], $row['name']));
}
$tpl->set('alleMember', $liste );
$tpl->out(0);
also zuerst mal wird der Platzhalter Version gesetzt das kennen wir ja schon
dann wird eine Abfrage gemacht und zwar alle Member aus der Datenbank,
jetzt holen wir die Liste alleMember und übergeben ein Array
der Wert der in diesem Array an 1 stelle Steht ersetzt den Platzhalter
%1 in der Liste der Wert an 2. Stelle den 2. Platzhalter usw.
dann wird die Liste 'alleMember' noch gesetzt und
ausgegeben.
warum gibt es denn den Platzhalter alleMember in dem Template wenn der
doch gar nicht gesetzt wurde?
ja stimmt, es wird erstmal die Liste eingelesen und in der Klasse gespeichert und dann wird dort wo die Liste stand der Platzhalter eingetragen ,so dass man ihn verwenden kann.
als Letzt möchte ich noch ganz kurz auf Sprachfiles eingehen und zwar parsed die template Klasse automatisch Platzhalter nach folgendem Muster:
{_lang_langkey}
die Zeichenfolge "langkey" muss jetzt in der Datei
include/includes/lang/de.php (oder en.php, fr.php usw. ) halt drin stehen nach Vorbild... also:
'langkey' => 'dies ist ein languages key',
usw. einfach mal die .de datei ansehen ;)...
{_if_{variable}=='wert'}Bei richtiger Bedingung{/_endif}
{_if_{variable}=='wert'}Bei richtiger Bedingung{_else_}Bei falscher Bedingung{/_endif}
if ($menu->getA(1) == 'p') {
$page = $menu->getE(1);
}
echo $page;
Funktionsaufruf | Rückgabewert |
get(0) | membermap |
getA(2) | p |
getE(2) | 1 |
NEU: getE('p') | 1 |
NEU: getN('membermap') | insert |
NEU: exists('insert') | true |
dafür ist die Tabelle "modules" Zuständige diese Tabelle hat folgende Felder
wenn also ein Modul eines der Aktionen machen soll dann muss es in diese Tabelle eingetragen werden.
Bitte bei einem eigenen Modul darauf achten das diese Referenz beachtet wird und im Zweifel evtl. kurz fragen bevor man eine Funktion doppelt schreibt ;-) also immer die vorhandenen Funktionen nutzen wenn möglich. Ansonsten auch an die Ordnerstruktur halten die in dieser Referenz beschrieben wird.
Wenn ein Module es zulässt also nur kleine Änderungen erforderlich sind bitte eine Anleitung schreiben was der User in welcher Datei ändern soll und zusätzlich die geänderten Dateien beilegen. Wenn ein großes Modul erstellt werden soll bitte kein bestehendes Modul einfach ändern sondern wirklich ein neues schreiben, z.B. also eine große Erweiterung für das Forum, hier sollte dann optimaler weise einfach eine aktuelle Kopie der Forumdateien gemacht werden und diese mit neuem Namen neu erstellt werden also meinForum usw. und in diesem neuen Forum dann die Erweiterung durchführen. So bleibt ausgeschlossen das sich Modulautoren in die Quere kommen.
Bei kleinen Änderungen bitte die Anleitung wie für phpbb beschrieben wird benutzten.
http://www.phpbb2.de/kb.php?mode=article&k=11
ich denke so ein Vorgehen ist sehr gut und vor allem schön einheitlich!
Module für 1.1 werden geprüft bevor sie freigeschaltet werden. Unbedingt an diese Regeln halten und bei Unklarheiten unbedingt nachfragen!!