Clansuite Community Forum

 
Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge
 
Seiten: [1]   Nach unten
  Drucken  
Autor Thema: CSS/JS Pfadproblem [solved]  (Gelesen 3583 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
xsign.dll
Guide
***
Offline Offline

Beiträge: 155


« am: Mai 31, 2006, 10:15:45 »

Also folgendes Problem:

Die Javascript und CSS Files liegen momentan im Template Ordner. Das is auch gut und richtig so - zumindest für die Übersicht und für TPL Implementationen.
Nun zu dem kleinen und feinen Problem. Ansprechen der JS und CSS Files müssen über die WWW Pfadangaben getätigt werden - also http://www.clansphere.com/template/javascrip/standard.js

Wenn aber nun jmd. auf die grandiose Idee kommt, die Templates in ein Verzeichnis außerhalb des WWW Verzeichnisses zu legen, sind diese nichtmehr ansprechbar.
Es gibt folgende Optionen:

1. CSS/JS Files in ein gesondertes Verzeichnis im WWW_ROOT packen also http://clansphere.com/javascripts/tpl_name/standard.js
2. Templates verpflichtend im WWW_ROOT zugänglich machen
3. JS/CSS files über file_get_contents(standard.js) einlesen und parsen

Das birgt folgende Nachteile:
zu 1. : Man verliert die Übersicht der Templates (wobei das eigentlich noch geht - sortiert isses immernoch...)
zu 2. : Man verliert den Schutz der Templates vor Zugriffen
zu 3. : Man verliert die Performance des Browsers, da bei einem Fileinclude a la <script src="blabla.js"> diese File local gecached wird - beim parsen jedoch nicht

Ich bevorzuge Variante 1
Habt ihr noch andere Optionen und was würdet ihr machen ?
Gespeichert

hajo
Anfänger
**
Offline Offline

Beiträge: 41


« Antworten #1 am: Mai 31, 2006, 10:19:27 »

Pfade mit Parsen von src= angaben und diese korrigieren, müsste Smarty ne Möglichkeit für haben
Gespeichert
xsign.dll
Guide
***
Offline Offline

Beiträge: 155


« Antworten #2 am: Mai 31, 2006, 10:24:16 »

k - dann der tpl pfad mit .htaccess
Gespeichert

Jens-A. Koch
Maintainer
*
Offline Offline

Beiträge: 574

One-Man Team


« Antworten #3 am: Juni 01, 2006, 11:04:11 »

Thema : Config / index + Pfade
Ich kenne die Möglichkeit bei SVN bestimmte Files die lokal jeweils andere Einstellungen besitzen beim Update zu excluden. Ich denke es ist zu Entwicklungszwecken günstiger, den Pfad über den kaskadierten Pfad + DIRECTORY_SEPERATOR zu assignen, denn das funktioniert bei allen, ohne erst editen zu müssen.

In der cfg werden jetzt folder gesetzt, die draußen in der index.php wieder zusammengesetzt werden. Das macht eigentlich nur Sinn, wenn man die Foldernamen total variablen halten will, also statt /templates /abctpl zum Einsatz kommt.
Ich würde wie gehabt, den allgemeinen Pfad betriebsystembezogen ermittlen und bereits im $cfg-object die Werte aufeinander aufbauend definen.

auch wenn sich das komisch anhören mag, aber: die config setzt die configs, nicht die index.php. index.php hat nur eine aufgabe nämlich die funktion zum anzeigen der index.tpl auszulösen.

Desweiteren stünden volle Pfade für Templates zur Verfügung die auch im TPL über {php} verwendet werden könnten zur Verfügung:
Code:
<link rel="stylesheet" type="text/css" href="
{php} echo TEMPLATE_DIR.'/style.css'; {/php}" />
mit nur foldernames kommt man ja auf anhieb nicht so weit, und müsste jedesmal den pfad zusammensetzen. basedir+folder+folder/file

Thema: Db-Konventionen
der db prefix sollte den unterstrich enthalten, d.h. bei den queries nicht dbprefix+'_table' sondern dbprefix+'table';

pfade tpl/css/js/images
man kann natürlich ne smarty-pfadmanipulaton durchführen. also pre/post-filter, kein problem.
ich mache es so, um über eine exit.php den userabgang auf externe seiten zu erfassen.
bei jedem externen link wird die exit.php in den pfad eingeschliffen und der originale pfad als parameter angehängt. das würde ich für so häufig wiederkehrende sachen wie images/js/css nicht machen.

auch .htaccess würde ich dafür nicht verwenden.

habe da mehrere vorschläge:

alternative 1
läuft etwa in richtung vorschlag #1 hinaus.
bei aufruf des templates wird die config mit eingebunden und der pfad assignt.

Code:
foo.conf:

path = "/www/templates/css"

foo.tpl

{config_load file="foo.conf"}
<html>
blubbla
src="{#path#}/main.css"


dieses verfahren  bietet sich sowieso an, da ja mit multitemplates gearbeitet werden soll.
Code:
/templates/global.conf
/templates/global.css
/templates/themeset1/themeset1.conf
/templates/themeset1/themeset1.css
/templates/themeset1/additional_images/
/templates/standard/standard.conf
/templates/standard/standard.css
/templates/standard/news/news.conf
/templates/standard/news/news.css

Die Sets werden dadurch nacheinander geladen.
Erst Global.css, danach standard.css, danach news.css.

Desweiteren kann man damit auch die sprachabhängige bzw. länderverschiedene Zeitdarstellung per date_format in den tpl configs regeln. Wenn nicht dort dann als Var-assign. Es ist eine Smartyfunktion, eigene Ausgestaltung daher eigentlich entbehrlich. 
Code:
{$smarty.now|date_format:"%Y-%m-%d"}


Nebenfrage: Wo liegen die Images z.b. Buttons für News?
/templates/standard/news/images/

alternative 2
a)
dann wenn die tpl geladen wird, auch den pfad feststellen
und diesen als var assignen und somit für die tpl verfügbar machen

b)
oder direkt (ohne assign)
Code:
{include file=$smarty.get.var}

alternative 3
die smarty templatedir einstellungen als array fassen und die css und js ordner mit in dieses array einbeziehen. smarty versucht dann zwar vergeblich dort tpl's zu finden, aber die tpl's finden dort ihre zusätze.
Gespeichert

Keine Supportanfragen per PN oder Mail. Fragen bitte nur im Forum stellen (Wie man Fragen richtig stellt).
hajo
Anfänger
**
Offline Offline

Beiträge: 41


« Antworten #4 am: Juni 01, 2006, 01:01:36 »

es sollte nach möglichkeit so bleiben das der user das template beim bearbeiten in z.b. dreamweaver mit allen funktionen testen kann die ohne das design template gehen.
Gespeichert
Jens-A. Koch
Maintainer
*
Offline Offline

Beiträge: 574

One-Man Team


« Antworten #5 am: Juni 01, 2006, 01:26:07 »

Also die Bearbeitungsmöglichkeit der Tpls ist ein gesondertes Problem.
Zum einen sind die .tpls ja zerstückelt: Der Dreamweaver Benutzer würde nie ein zusammenhängends tpl bearbeiten, sondern immer nur Stücke. Zum anderen kennt er weder die Smarty Tags noch die Syntax, noch die von uns gebundenen Variablen, noch die Pfade bzw. ihre realtiven Ersetzungen.

Um die Arbeit mit Smarty bei Dreamweaver zu erleichtern wurde eine Extension erstellt.
Diese ist unter folgendem Link zu finden: http://smartydwt.klitsche.org/
Damit ist dem User schonmal bei der Smarty-Syntax geholfen.

Ein grober Trick wäre ne smarty_extension zu bauen, die an der stelle der include-tags die tpl einsetzt und alles zusammenhängend ausgibt. dann wäre zumindest eine vollständige Seitenbearbeitung möglich.
Problem
a) clanspehre arbeitet nicht mit includes, sondern mit funktionsaufrufen und
b) wie man das ganze wieder zerstückelt, um es ins web zu bekommen.
Gespeichert

Keine Supportanfragen per PN oder Mail. Fragen bitte nur im Forum stellen (Wie man Fragen richtig stellt).
hajo
Anfänger
**
Offline Offline

Beiträge: 41


« Antworten #6 am: Juni 01, 2006, 03:06:54 »

alternative wäre die templates möglichst kompatibel zu denen anderer cms mit smarty zu halten damit sich die smarty-freaks zumindest bei uns leicht zurecht finden
Gespeichert
xsign.dll
Guide
***
Offline Offline

Beiträge: 155


« Antworten #7 am: Juni 01, 2006, 03:24:49 »

lol Smiley also: totreden bringt bei so simplen sachen partout nix. is zwar schön und nice, dass wir uns hier um pfade hin und her beantworten, aber die frage war denk ich mal eindeutig und ich brauchte schlichtweg ne schnelle antwort.
Da .htaccess ausgezeichnet funktioniert kann man die .tpl's schützen und trotzdem includen. Somit sehe ich keine Notwendigkeit, die Templates mehr außerhalb des www Bereiches zu legen. Deshalb hab ich die Folder @ config.class.php gemacht.

Ich denk mit der Ordnerstruktur kommt jeder zurecht - es ist eindeutig definiert.
@vain: richtig, die config ist zum deklarieren von variablen da und nicht um klassische DEFINEs zu setzen. Außerdem stehen die schon geordnet in der index.php - das nochmals auseinanderzureißen und in verschiedene Files zu setzen wäre bissl komisch. Ich stell mir mich immer als programmierer vor, der vergeblich nach den DEFINES in der index.php sucht - dabei denk ich nicht an die config Smiley

Die vollständige Seitenbearbeitung ist durch den wrapper, der in der config definiert werden kann (index.tpl) gegeben. Module mit ihren Methoden können seit heute über folgendes angesprochen werden:

Code:
{* This calls the method "index_time" from the redistered module "index" and gives 2 parameters: "english" and "-" seperated by "|" *}
{mod name="index" func="index_time" params="english|-"}

Also bitte net alles totreden - das kostet zeit Smiley
(nehmts mir net übel.... hab 2 tage net geschlafen und musste mich grad mit frigiden Frauen 6 stunden lang beschäftigen, die Windows nicht gebacken kriegen...)
Gespeichert

Jens-A. Koch
Maintainer
*
Offline Offline

Beiträge: 574

One-Man Team


« Antworten #8 am: Juni 02, 2006, 02:33:59 »

So, Faxen dick! Der Pfad BASE_URL ist nun auch in den TPLs verwendbar.

Das laden von CSS oder JS über die PHPs finde ich nicht gut.
P! : Wie mehrere CSS bzw. JS laden?
Gespeichert

Keine Supportanfragen per PN oder Mail. Fragen bitte nur im Forum stellen (Wie man Fragen richtig stellt).
xsign.dll
Guide
***
Offline Offline

Beiträge: 155


« Antworten #9 am: Juni 02, 2006, 07:57:36 »

L&#228;chelnd War gestern alles ein wenig komisch...
Laden der JS/CSS über die Baseurl im tpl scheint mir auch ganz nett zu sein - jedoch eben inkompatibel, da man mehrere JS laden kann. Per Modul kann man nämlich angeben, welches JS gerade benötigt wird -> Bandbreitenersparnis.
Bei CSS natürlich auch, da man vllt. für ein Modul eine andere CSS file benötigt - sehr interessant bei mehreren clans mit unterschiedlichen styles.
Gespeichert

hajo
Anfänger
**
Offline Offline

Beiträge: 41


« Antworten #10 am: Juni 02, 2006, 08:10:46 »

frage ist wohl was davon wirklich sinnvoll ist, denke es reicht wenn die design templates css und js dateien einladen können, bei mod und global templates ist das denke ich überflüssig da die sich nur im body bereich abspielen.
Gespeichert
xsign.dll
Guide
***
Offline Offline

Beiträge: 155


« Antworten #11 am: Juni 02, 2006, 09:10:33 »

Also das Problem ist ja, die JS Files sind später mit AJAX zusammen locker 100 KB groß. Diese immer nachzuladen wäre bissl krass. Die Standard JS File kann man ja immer einladen. Aber stell dir mal vor, einer macht nen Modul mit relativ viel JS kram und muss das alles in eine JS File schreiben - das kotzt 1. an und is 2. auch net performant. Also splittet man den kram. Außerdem hat man dabei nen bissl Flexibilität.

Vorallem wenn wir nen Wrapper machen (index.tpl), dann müsstest du da alle JS Files reinpacken, die aber nur von bestimmten Modulen benutzt werden. Sollte ja nicht sinn der Sache sein, oder?
Gespeichert

Jens-A. Koch
Maintainer
*
Offline Offline

Beiträge: 574

One-Man Team


« Antworten #12 am: Juni 02, 2006, 09:41:17 »

Laden der JS/CSS über die Baseurl im tpl scheint mir auch ganz nett zu sein - jedoch eben inkompatibel, da man mehrere JS laden kann.
 

inkompatibel - zu was denn ?

Man soll doch mehrere JS, CSS und auch TPL in einem TPL laden können!

Also folgende Anforderungen:

index.tpl
Code:
{include header.tpl}
zusatz js, css
{include shortnews.tpl}
{include statsblock.tpl}
{include footer.tpl}

inhalt header.tpl
Code:
global header, js, css

inhalt shortnews.tpl
Code:
{php} function news_daten_holen{/php}
zusatz js, css
{section}
daten
{/section}

inhalt statsblock.tpl
Code:
{php} function stats_daten_holen {/php}
zusatz js, css
{section}
daten
{/section}

A)
Dadurch lässt sich eine reine index.tpl mit dem leicht anpassbaren Gerippe erstellen.
Es ist Ideal um ein neues Design zu entwerfen und leicht zu verstehen für Designer, wenn die mal die vorhanden include-Möglichkeiten kennen.

B)
Bandbreitenersparnis ist kein Argument gegen die Verwendung von mehreren JS.
Das wäre ein Argument gegen die Verwendung von einer JS File die immer geladen wird und alle Funktionen enthält, bzw. mehreren die immer geladen werden!

Die Additionals (JS, CSS, etc.) sollen dort zum Einsatz kommen wo sie gebraucht werden, ansonsten werden sie nämlich gerade nicht geladen! JS-Funktion für den Statsblock, wird erst im statsblock.tpl geladen, Klappfunktion in den News, wird erst im news.tpl geladen, Ajax-Library wenn man sie braucht etc.



--
Ich hoffe das Prinzip wird klar. Alles andere macht es schwerer für Designer und lässt Smarty leerlaufen ..
Gespeichert

Keine Supportanfragen per PN oder Mail. Fragen bitte nur im Forum stellen (Wie man Fragen richtig stellt).
xsign.dll
Guide
***
Offline Offline

Beiträge: 155


« Antworten #13 am: Juni 02, 2006, 10:19:01 »

OK,
also was im <head> Block ist zu header.tpl?
Von mir aus - macht keinen Unterschied.

Hab nochma über die JS Sache nachgedacht... da die JS sowieso immer local vom Browser gecached werden, is es prinzipiell egal. Wäre höchstens ne Sache von Übersichtlichkeit.

Die Blöcke statsnews.tpl etc.:
k - acknowledged Smiley Für mich macht es keinen Unteschied, ob ich über {mod name="bla" func="blabal"} gehe oder erst nen extra TPL lade. Noch nicht Smiley
Hastes schon eingebaut?
Gespeichert

Jens-A. Koch
Maintainer
*
Offline Offline

Beiträge: 574

One-Man Team


« Antworten #14 am: Dezember 04, 2006, 06:48:41 »

Problem gelöst!

Es wurde ein Smarty Plugin verwendet, welches die in den Templates (und Untertemplates) eingebundenen JS/CSS Files in den Kopfbereich des index.tpl verschiebt.

Für includes innerhalb von Smarty sind relative Pfade zu verwenden | relativ zum im PHP definierten allgemeinen Templatepfad!
Gespeichert

Keine Supportanfragen per PN oder Mail. Fragen bitte nur im Forum stellen (Wie man Fragen richtig stellt).
Seiten: [1]   Nach oben
  Drucken  
 
Gehe zu:  


Powered by SMF 1.1.16 | SMF © 2006-2009, Simple Machines

Google visited last this page Mai 03, 2012, 07:41:31