CSS und JS ausserhalb des Document Root einbinden

  • Hi,


    ist lange her dass ich hier war. Mein Account wurde anscheinend gelöscht.
    Egal.


    Zu meiner Frage.


    Ich entwickel derzeit ein eigenes CMS aus Spaß am Proggen. (Bitte keine fragen wie z.b. warum? es gibt doch genug fertige Systeme)


    Das gesamte CMS ist im MVC Pattern geschrieben wodurch ich jetzt ein kleines Problem bekommen habe.


    Meine Ordnerstruktur sieht wie folgt aus:


    /cms
    /Core (Systemdaten wie z.b. Controller aber auch die Templates samt CSS und JS dateien)
    /www (Hier befindet sich die Index.php und dieser Ordner ist Document Root, also hier zeigt die URL drauf)


    Das Problem liegt auf der Hand, die CSS und JS Dateien befinden sich Oberhalb des Root Verzeichnisses. Über einen Normalen HTML Pfad komme ich da nicht ran.
    Wie kann ich das Problem lösen? Ich dachte daran die CSS und JS Dateien auf PHP Variablen zu speichern und dann auszugeben. Aber ich bin mir nicht sicher wie.


    Hat hier vielleicht jemand eine Idee?

  • kannst du evtl. einen hard link zu dem verzeichnis anlegen? keine ahnung, ob das geht, da es ja zyklisch werden kann und ich weiß auch nicht, ob webgedöns mit hardlinks arbeiten kann.

    Dieser Beitrag wurde noch nie editiert, zuletzt von »hangman« (Heute , 13:37)



    1355?mode=raw


    Skill ist, wenn Luck zur Gewohnheit wird

  • Schieb die Dateien, die du für www brauchst, vom Core in den www Ordner und verweis vom Core auf den www Ordner, wenn du sie intern brauchst. Die CSS und JS Dateien sieht eh jeder, der die Seite aufruft, da kannst du nichts machen.

  • Hmmm das ist ein Argument, aber auch nicht sinn und zweck der Sache.
    Ich kann doch nicht jedesmal wenn ich das Template wechsel die gesamten CSS und JS Dateien durch die Gegend schieben.
    Ist es nicht möglich die dateien in eine Konstante oder Variable zu legen und dort einzufügen?

  • Also bei mir auf dem Windows PC geht das per junction (=hard link). Dabei wird auch nicht das directory geändert, sondern das sieht dann so aus wie wenn es ein ordner wäre.


    Beispiel:


    cms
    --core
    ----www


    hab jetzt unter windows mit dem tool junction aus den sysinternals in www eine junction auf core mit dem namen hans gemacht.
    der zeigt dann als pfad cms/core/www/hans an und zeigt aber die daten von cms/core an.


    keine ahnung, ob du das nutzen kannst.

    Dieser Beitrag wurde noch nie editiert, zuletzt von »hangman« (Heute , 13:37)



    1355?mode=raw


    Skill ist, wenn Luck zur Gewohnheit wird

  • Moin,


    wenn ich einen Hardlink anlege wie z.b.


    $css = link(COREDIR . "templates/front/default/assets/css", "css");


    Gibt es direkt eine Error Meldung.


    "File exists".


    Das selbe bei symlink.


    Aber was interessant ist, warum auch immer plötzlich findet er die bootstrap.css obwohl es keinen Link gibt. Ich habe den Cache und die Cookies bereits geleert.....


    Edit:


    Wenn ich eine hardlink via link() anlege


    z.b.
    link(COREDIR . "/templates/front/default/assets/css/bootstrap.css", "bootstrap.css");


    kann ich diese css Datei mit


    <link href="/bootstrap.css" rel="stylesheet" media="all" />


    einbinden.


    Aber wenn ich den link wieder lösche geht es immernoch.


    Ich habe das jetzt mit mehreren Dateien probiert und es klappt aber ich habe da kein gutes Gefühl bei.
    Das kann ja so nicht richtig sein.

  • den hardlink erstellst du im dateisystem, nicht per php. es reicht ein link auf das verzeichnis. dann kannst du über linkname/dateiname auf die dateien zugreifen.

    Dieser Beitrag wurde noch nie editiert, zuletzt von »hangman« (Heute , 13:37)



    1355?mode=raw


    Skill ist, wenn Luck zur Gewohnheit wird

  • dann verschieb wie schon oben genannt das ganze zeug in eine erreichbare ordnerstruktur. wie schon erwähnt, ist das sowieso sichtbar

    Dieser Beitrag wurde noch nie editiert, zuletzt von »hangman« (Heute , 13:37)



    1355?mode=raw


    Skill ist, wenn Luck zur Gewohnheit wird

  • So Problem gelöst.


    Ich lege Symbolische Links an.


    Das geht ganz leicht mit php ist aber für zum Testen auf einem Windows-System blöd.


    Unter PHP einfach symlink(QuellPfad, Zielpfad)


    Bei wechseln des Templates löscht er den alten Link und legt ihn neu an.