eigenes einfaches CMS (Inhalt und Design getrent)

  • Hallo,
    ich habe jetzt mal wieder meine Website neu aufgesetzt, bin auch ganz zufrieden mit dem Ergebnis, mein einziges Problem ist nur das es immer wenn was neues rein kommt "extrem" aufwändig ist das zu aktuallisieren, weil ich immer in dem kompletten script für die Seite suchen muss wo jetzt die Stelle ist!
    Momentan ist meine Seite über html und css aufgebaut und an einzelnen Stellen mysql, javascript und php!
    Ich würde sie aber gern etwas für mich vereinfachen wollen indem ich den Inhalt vom Design trenne! Die einfachste Möglichkeit die mir einfiel war über Datenbanken, Variablen und ein Grunddesignscript das ganze zu steuern!
    Damit habe ich an sich auch kein Problem da mein Server all diese Funktionen unterstützt. Aber ich weiß nicht ganz wie ich Variablen in das Script einbaue und dann irgendwo bestimme!

    ...

    Meine Frage als: Könnte mir irgendwer erklären wie ein solches ja doch recht simples CMS (Content Management System) aufgebaut werden könnte?
    Wie gesagt die Seite an sich steht!
    Link: http://darkemperor.bplaced.de/filemanager

    Danke im Voraus
    Mit freundlichen Grüßen
    Tom

  • Ok ...
    Ich seh schon da wartet viel Arbeit! ;)
    Erste Frage dazu, ich will nur sichergehen das ich das wenigstens begriffen hab!
    [INDENT]1.tpl ist Design
    1.php ist Inhalt[/INDENT]
    oder?
    $irgendwas ist eine Variable die dann später bestimmt wird und in der tpl-Datei eingebunden wird an der Stelle wo der Inhalt hin soll!?

    Sry ... Ich fange so richtig erst mit php an, das einzige was ich bis jetzt konnte war eigentlich der include-Befehl! :(

    Würde mich freuen wenn mir evtl. nochmal jemand die wichtigsten Befehle übersetzen könnte!?
    Ich brauch echt nix hoch kompliziertes ich will erstmal nur die Seite wie sie ist übersetzen! Wenn ich das geschafft hab denk ich evtl Stück weiter über Verbesserungen nach!

    MfG
    Tom

  • Nein, PHP ist logik, tpl ist Design und Inhalt, man kann den Inhalt aber auch vom Template selbst trennen und wo anders Speichern. Letztendlich sorgt PHP dafür, dass der richtige Inhalt in das Template eingebunden wird.

    Ich persönlich kann solche "Template Engines" nicht empfehlen, scho gar nicht wenn sie eine eigene Sprache benutzen (wie z.B. Smarty). PHP wurde nämlich genau dafür Entwickelt, um das was du vorhast umsetzen zu können.
    Man muss sich eben die Struktur überlegen, dann geht das auch.

    Bei kleinen Sachen benutze ich persönlich 1 Ordner für "Content", und dann bind ich je nach der übergebenen seitenvariable eine Datei ein (die auch mehrere andere einbinden kann, z.B. irgendwelche Module ;) ). Und damit hat es sich.

  • Nein, PHP ist logik, tpl ist Design und Inhalt


    Das hab ich doch gesagt! zumin so ähnlich ;)

    Bei kleinen Sachen benutze ich persönlich 1 Ordner für "Content", und dann bind ich je nach der übergebenen seitenvariable eine Datei ein (die auch mehrere andere einbinden kann, z.B. irgendwelche Module ;) ). Und damit hat es sich.

    Ok ... da ich mit php erst anfange wäre es mir ganz lieb wenn du das auch etwas mit Befehlen unterlegen könntest!
    Wo du es grad erwähnt hast, gibt es eine Möglichkeit bei php die so ähnlich wie ein frameset funktioniert?
    Sprich Navigation, Infoleiste, ... bleiben nur der Inhalt wird neu geladen?
    Wenn ja wie würde ein minimalistisches Beispielscript dazu aussehen?

    MfG
    Tom

  • Öhm, klar.

    Wenn deine Links dann folgenden href verwenden

    HTML
    <a href="?site=XY">XY</a>

    Könnte die deine "content.php" so aussehen:

    Wenn du jetzt in deinem Link das XY hast wird die Datei "XY.html" oder "XY.php" includet - damit hat es sich dann schon ;) . Wenn die Datei nicht existiert, eben die Fehlerseite oder du gibst den Inhalt von deiner Startseite aus.

    4 Mal editiert, zuletzt von Grevas (23. April 2010 um 12:45)

  • wenn ich das jetzt richtig überblickt habe ist das eher das was ich schon habe!
    eben ne index.php in die dann navi, info, vorgeschriebener inhalt includet wird!
    was ich meinte wäre eine index.php in die navi, info includet wird und dann wie beim frameset über den target befehl der inhalt geholt wird!

    z.B.:

    Navi Info
    Home Inhalt (If (in Navi Home angeklickt) then display(home.php) elseif (in
    Seite1 Navi Seite1 angeklickt) then display (Seite1.php)

    Sag mir jetzt bitte nicht das es so funktioniert?^^
    Könnte man über die Navi die conten Variable deffinieren und dann für den content include die (Variable).php nehmen?
    dann würde ich zumindestens bei einer url bleiben und nur im Hintergrund die anderen Datein includen!


    ...


    Ok irgendwie funktioniert das doch ni so ganz!^^

    Fehlermeldung:
    Warning: include(.$site.".php") [function.include]: failed to open stream: No such file or directory in /users/darkemperor/www/filemanager/fxl_template/examples/navitest.php on line 6

    Warning: include() [function.include]: Failed opening '.$site.".php"' for inclusion (include_path='.') in /users/darkemperor/www/filemanager/fxl_template/examples/navitest.php on line 6

    was isen falsch???

  • Hier mal die idee die ich hatte in gedachter script form!

    So in der Art dachte ich es mir!
    Aber wie man sieht funktioniert es nicht wirklich!
    Es seidenn ich bin einfach zu doof um den Fehler zu finden. ;)
    Wenn das script von Vorhins das war was das hier im endeffeckt ausdrückt dann bin ich glücklich!
    Weil ich es dann nur noch verstehen muss!

  • Eh doch, das ist so ziemlich wie bei nem Frameset. Du Übergibst die Seite per Link und dementsprechend wird der Inhalt gewählt.

    Was da falsch ist, verratet dir die im Forum eingebettete Farbhervorhebung schon...

    PHP
    <?php 
    
    
    "?site=index"; // <- was soll das bringen?
    $site = $_GET['site']; 
    
    
    include '.$site.".php"'; // FALSCH
    include $site . ".php"; // Richtiiiiich
    ?>

    //EDIT..

    ...

    Href ist falsch, schau dir ma bitte genauer an wie es aussehen soll o_O

    HTML
    href="?varname=var_inhalt" <!-- so muss das aussehen -->
    PHP
    include $_GET['varname'] . ".php"; // <- ohne Überprüfung wie bei mir oben ist das sinnlos, funktioniert aber.

    Aber warum nimmst du meine Weiche von da oben? Die hat wenigstens schon ne Überprüfung ob die Datei existiert :rolleyes:

    //P.S. hab oben paar Klammern vergessen..

    So hier hast du die ganze Struktur in nem Zip File mit Beispielinhalt...

  • Ja kein Plan!
    Ich wollt mal so tun als hätte ich zumindestens den Grundriss verstanden! ;)
    Aber irgendwie doch ni!^^

    Gut wenn deins da oben das schon ist dann meine Fragen:

    PHP
    <a href="?site=XY">XY</a>


    XY ersetze ich immer durch den jeweiligen Seitennamen? (Seite1, Seite2, ...)

    In die content.php kommt außer deiner tollen Weiche nichts weiter oder?
    der rest wird dann immer durch die navi-variable includet!?

    Gut, jetzt bin ich auch hinter den Code gestiegen!

    PHP
    if(file_exists("content/" . $site . ".html") {
      include "content/" . $site . ".html";
    }

    content/ ist der Ordner?
    . $site . ist die Variable aus der Navi?

    Wenn das soweit stimmt hab ich das erstmal verstanden und meld mich dann später wieder!
    Werd es heute abend mal ausprobieren, jetzt geh ich erstmal schlafen, war heut noch nicht! ;)

    MfG
    cu
    Tom

  • Ja genau, du hast es scheinbar kapiert - da Fehlen aber noch Klammern bei den Bedinungen (hab sie nacheditiert) und bei einem der includes fehlte noch ein ; .

    Hab dir im letzten Post aber die Struktur als Zip eingebunden.

    /P.S.

    bei dem Fall, dass es eine HTML Datei ist, könntest du noch statt

    PHP
    include "content/" . $site . ".html";


    das hier nehmen

    PHP
    echo file_get_contents("content/" . $site . ".html");


    Ist etwas schneller

    Einmal editiert, zuletzt von Grevas (23. April 2010 um 12:51)

  • Ich bin sooooooo gut! Ich hab nen Fehler bei deinem Script entdeckt!!! ;)
    deins:

    PHP
    else
        $site = "startseite.php";

    Fehler:

    PHP
    .php

    Korigiert:

    PHP
    else
        $site = "startseite";

    Ansonsten ruft er als startseite die error Seite auf und das is bissel uncool! ;)
    Trotzdem Danke der Rest funktioniert bis jetzt!
    Bin grad dabei den Spaß in Templates zu packen, meine eigne Ordnerstruktur rein zu setzen und den ganzen Spaß auf meine Seite zu erweitern!

    MfG

  • Ok, ...
    HILFE

    Ich hab grad alle Datein die nötig sind um die Startseite auf zu rufen in die Ordner gepackt, die Codes angepasst und was halt so nötig ist und werde jetzt von meinem Browser nur so von Fehlermeldungen überschüttet!!!
    Ich habe in meisten Fällen nichteinmal ne Ahnung was der von mir will da das was er bemeckert meiner Meinung nach nichteinmal im Code enthalten ist!

    Ich hänge das gesamte Ordnersystem mal als Datei an, wäre sehr nett wenn sich das mal jemand anschauen könnte und mir mal sagt was da falsch ist!

    MfG
    Tom

  • Aye, wenn du navi.php includest und eine navi.html im ordner ist - kann da wohl was net stimmen oder?

    content.php :

    PHP
    elseif(file_exists( . $site . ".php"))

    So haste das von mir aber nicht bekommen...
    Sondern so

    PHP
    elseif(file_exists("content/" . $site . ".php")) {

    Und warum du jetzt alles ins content gepackt hast und der content im template ist, werd ich nie verstehen ^^


    Die Fehler in der info.php liegen an den pfadeinstellungen. Darfste selber rausfischen, wenn du schon irgendwelchen fertig-scripts so einbindest.

  • Ok, ...
    Wenn da der Fehler liegt dann is es ni meine Schuld sondern die von meinem ftp-Uploader!
    Original Script index.php:

    PHP
    <?php include "content/navi.html"; ?>
    <?php include "content/info.php"; ?>
    <?php include "content/content.php"; ?>
    <?php include 'content/fusszeile.html'; ?>

    Original Script content.php:

    Und die restlichen Pfade kann sein das da noch paar Fehler sind, aber das bekomm ich dann alleine hin!
    Achja, bei includeten Datein muss ich in nem neuen include Befehl den Pfad von der obersten Datei aus angeben, oder?

    Und ich komm sonst ni klar, für mich is content der Text und Template das Design, wenn ichs andersrum mache find ich garnichts mehr! ;)

  • Ok, ...
    Alle Fehler behoben!
    Jetzt habe ich nur ein Designproblem, der stellt den Inhalt nicht so dar wie auf der Originalseite! An den css ist nichts geändert sie werden in der index.php auch geladen aber anscheinend anders verwertet!
    Originalseite
    neue Seite

    Es ist alles viel kleiner von der Höhe her! Hat jemand ne Idee woran das liegen könnte?

    MfG
    Tom