Seite 2 von 2

Re: Suche Code für Registrierung, ohne phpBB

Verfasst: 15.01.2009 21:52
von jimmartens
Okay, aber dann müsste ich ja immernoch die Templates und Language-Files im phpBB3-Ordner dafür speichern. Und bisher habe ich noch nicht den Code gefunden, mit dem man den Pfad zu diesen Dateien ändern kann.

Re: Suche Code für Registrierung, ohne phpBB

Verfasst: 16.01.2009 01:32
von gn#36
Es kommt ganz darauf an auf welcher Ebene du die phpBB3 Funktionen verwenden willst. Die ganzen Core Features lassen sich durchaus ganz gut trennen, auch wenn man dabei wissen muss was man tut. Die Datenbankklasse ist z.b. generisch genug sich vollkommen separat verwenden zu lassen (bzw. die Klassen), das Template System sollte sich auch trennen lassen, vielleicht muss man den Cache mitschleppen, generell aber schon, ebenso andere Dinge die nicht auf die Datenbank zugreifen müssen (Die User Klasse wäre z.b. ohne Datenbank ziemlich sinnlos, schließlich sind genau da alle User gespeichert). Die Email/Messenger Klasse wäre ebenfalls ein Kandidat für die losgelöste Nutzung.

Viel mehr was man überhaupt unabhängig von einer Datenbank betreiben könnte gibt es eigentlich im Forum auch gar nicht, schließlich wird ja nun mal alles in der Datenbank gespeichert.

Übrigens ist

Code: Alles auswählen

define('IN_PHPBB', true); 
nichts anderes als ein Sicherheitsfeature von phpBB. Dadurch wird nämlich ein Direktaufruf sämtlicher include Dateien des Forums ausgeschlossen, weil das Skript sofort abbricht wenn die Konstante fehlt. Das ist aber nur eine Konstante und die kannst du in jeder Datei definieren wie du willst.

Wenn du phpBB Features nutzen willst dann beachte, dass du deine Software damit auch unter die GPL Lizenz stellen musst unter der phpBB veröffentlicht wurde. Schließlich dürfte deine Applikation ohne die phpBB Funktionen dann kaum verwendbar sein (mehr dazu verrät dir der nette Anwalt um die Ecke oder auch die Seite der GNU GPL 2.0).

Re: Suche Code für Registrierung, ohne phpBB

Verfasst: 16.01.2009 14:34
von jimmartens
Ich entwickle ja keine Software, sondern versuche einfach folgendes hinzubekommen:

Man gibt ja

Code: Alles auswählen

$user->lang['irgendwas']; 
ein. Damit aber die Datei gefunden wird muss man oben noch:

Code: Alles auswählen

 $user->setup('language-file'); 
eingeben. Nun meine Frage: Damit die Datei gefunden wird, muss ja vorher der Pfad definiert worden sein. Ich habe aber bis jetzt noch nicht die Stelle gefunden, wo man den Pfad ändern kann. Zudem benötige ich bei mir keine Datenbank für z.B. die Language-Dateien, da ich nur eine Sprache habe, und daher der Pfad auch gleich bleibt. So dass also folgendes definiert werden müsste:

Code: Alles auswählen

$lang_root = $root_path . 'lang/' . $filename . $phpEx; 
Damit würde der Variablen $lang_root der Pfad zu der Language-Datei übergeben werden. $filename entspricht dabei der Datei, die man unter $user->setup(); angegeben hat. Aber nochmal: Die Datei, in der die Klasse user mit der Methode "lang", "setup()" usw. definiert ist, finde ich einfach nicht. Es gibt eine Datei functions_user.php, diese enthält die Klasse aber auch nicht. Und da aber in der common.php die Klasse user instanziert wird, muss diese ja irgendwo definiert sein. Ich kann es aber nicht finden.

Zum Template:

Nutze ich die template.php und die functions_template.php, kann ich immer noch keine Templates einbinden. Und die anderen Dateien, die man dazu benötigt, kann ich ebenfalls nicht finden.

Ich würde mich freuen, wenn jemand mir mal die Positionen der Dateien sagen könnte.

Re: Suche Code für Registrierung, ohne phpBB

Verfasst: 16.01.2009 16:37
von gn#36
jimmartens hat geschrieben:Ich entwickle ja keine Software, sondern versuche einfach folgendes hinzubekommen:
Sondern? Du programmierst doch, denn warum sonst bräuchtest du was aus dem phpBB ohne alles vom phpBB zu nutzen. Ich habe es übrigens noch nie ausprobiert sowas zu trennen, letztlich ist phpBB ja schon "als Einheit" programmiert worden. Oben waren reine Vermutungen, das musst du selbst ausprobieren.

Re: Suche Code für Registrierung, ohne phpBB

Verfasst: 16.01.2009 17:08
von jimmartens
Naja, trotzdem danke. Dann werde ich wohl versuchen anderswo eine Template-Klasse zu finden. Falls ich eine finden sollte, die man variabel einsetzen kann, werde ich mich melden.

Re: Suche Code für Registrierung, ohne phpBB

Verfasst: 16.01.2009 17:24
von Dr.Death
http://www.smarty.net/

Ist so ähnlich :-)

Re: Suche Code für Registrierung, ohne phpBB

Verfasst: 17.01.2009 20:09
von jimmartens
Habe einen Kompromiss gemacht:

Code: Alles auswählen

//Variablen einlesen
$cmd = $_GET['cmd'];
//Nötige Daten eingeben
$root_path = '../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);

//Datei einfügen
include($root_path . 'common.' . $phpEx);

//Template einlesen
$template = $files->get($root_path . 'templates/news_adm.html');

//Definierung der Ansichts-Variablen
$titel = $base['title'] . ' - Admin Bereich - News';
$navigation = "<a href=\"http:\/\/jimmartens.ji.funpic.de/login-project/adm/index.php\">&Uuml;bersicht</a><br><a href=\"http:\/\/jimmartens.ji.funpic.de/login-project/adm/news.php?cmd=ansehen\">News erstellen</a><br><a href=\"http:\/\/jimmartens.ji.funpic.de/login-project/adm/news.php?cmd=edit\">News bearbeiten</a>
    <br><a href=\"http:\/\/jimmartens.ji.funpic.de/login-project/adm/news.php?cmd=delete\">News l&ouml;schen</a>";
$short = "<a href=\"http:\/\/jimmartens.ji.funpic.de/login-project/adm/index.$phpEx \">&Uuml;bersicht</a>&nbsp; &middot; &nbsp;<a href\"http:\/\/jimmartens.ji.funpic.de/login-project/adm/news.php\">News</a>"; 
 
Zuerst wird der Pfad zum Wurzelverzeichnis und dann die Dateiendung definiert.

Jetzt kommt die Datei, die die Funktionen, Klassen und Basiskonfigurationen vereint.
Dann lade ich das Template als String rein, die Funktion habe ich woanders definiert, und weise drei Variablen die Werte für die Navigation, den Titel und der Shortnavi zu.

Unten kommt das:

Code: Alles auswählen

$template = str_replace($base['tag_start'] . 'TITLE' . $base['tag_end'], $titel, $template);
$template = str_replace($base['tag_start'] . 'SHORTNAV' . $base['tag_end'], $short, $template);
$template = str_replace($base['tag_start'] . 'NAVI' . $base['tag_end'], $navigation, $template);
$template = str_replace($base['tag_start'] . 'CONTENT' . $base['tag_end'], $content, $template);

echo stripslashes($template);

   
Jetzt werden die Platzhalter im Template aufgeteilt in Start- und Endtags, definiert in der Basiskonfig, sowie in den Text zw. den beiden. Schlussendlich werden die drei ersetzt durch eine vorher definierte Variable. Wer aufgepasst hat, wird bemerken, dass für {CONTENT} noch keine Variable definiert ist. Das liegt daran, dass der Inhalt zw. den beiden Codes bestimmt wird. Bei mir meist durch switch-Blöcke, denn ich finde, dass diese am einfachsten zu handhaben sind.

Hoffe das war verständlich. Es ist zwar meinem Ziel noch nicht gänzlich nahegekommen, aber immerhin besser als den Code mit echo-Anweisungen zu pflastern.

Re: Suche Code für Registrierung, ohne phpBB

Verfasst: 19.01.2009 17:38
von jimmartens
Habe jetzt eine eigene Template-Klasse entworfen. Im Gegensatz zu euren komplexen Rechnungen habe ich das gleiche mit nur wenigen Schritten hinbekommen.

Code: Alles auswählen

<?php

/**
*
*author: Jim Martens
*
*Erstellung einer Template-Klasse
*/

class template
{
    public function replace($templates)
    {
        global $templates;
        
        $templates = str_replace('ä', "&auml;", $templates);
        $templates = str_replace('ü', "&uuml;", $templates);
        $templates = str_replace('ö', "&ouml;", $templates);
        $templates = str_replace('Ä', "&Auml;", $templates);
        $templates = str_replace('Ü', "&Uuml;", $templates);
        $templates = str_replace('Ö', "&Ouml;", $templates);
        $templates = str_replace('ß', "&szlig;", $templates);
        return $templates;
    }
    
    public function get($filename)
    {
        $tmprslt = file($filename);
        $tmprslt = implode($tmprslt);
        return $tmprslt;
    }
    
    public function set_filename($template_file)
    {
        global  $root;
        $root = $template_file;
        $templates = $this->get($root);
        return $templates;
    }
    
    public function assign_var($var, $change)
    {
        global $templates;
        $templates = str_replace('{' . "$var" . '}', $change, $templates);
        return $templates;
    }
}
?>
Ich denke, dass ist eine akzeptable Lösung. In der Datei, in der man dann den Code verwenden möchte, sieht das so aus:

Code: Alles auswählen

$template_file = 'Geschichte.html';
$templates = $template->set_filename($template_file);
 
Oben kommt das hier hin.

Unten, nach der Definition der Variablen, dem ganzen Inhalt, etc, kommt dann das hier:

Code: Alles auswählen

$var = 'TEXT';
$templates = $template->assign_var($var ,$text);
$templates = $template->replace($templates);

echo stripslashes($templates);
?>
So gibt man den Platzhalter ein und zuvor, im Contentbereich, habe ich die Variable $text definiert. Links kommt der Platzhalter rein, also: 'TEXT', rechts kommt wie gesagt die Variable rein, mit der es ersetzt werden soll. Bis jetzt habe ich das ganze nur für einen Platzhalter, werde aber mal schauen, wie ich es für mehrere auch noch hinbekomme. Der Code ist frei, jeder kann ihn also benutzen.