Welcome, Guest. Please login or register.
Did you miss your activation email?
May 24, 2012, 07:01:53 PM

Login with username, password and session length
Search:     Advanced search
Wollen Sie dem WebsiteBaker Team beitreten?
Nähere Informationen finden Sie unter hier und auf unserer neuen Webseite.
155465 Posts in 21707 Topics by 7732 Members
Latest Member: DarrellDD
* Home Help Search Login Register
Pages: [1]   Go Down
Print
Author Topic: Eigenes CSS für diverse Seiten?  (Read 2953 times)
Katerchen

Offline Offline

Posts: 84


« on: November 19, 2008, 05:35:15 PM »

Hallo!

Da ich einige Module ein wenig "zweckentfremde", insbesondere das News- und das FAQ-Modul, brauche ich für einige Seiten eigene CSS-Deklarationen. Nun kann ich natürlich alles in das eine große CSS des Templates packen, aber dann wird diese Datei eben sehr groß und muß vom Browser bei jedem Aufruf geparst werden. Oder ich mache Fallunterscheidunge n im Template.

Doch gibt es eine andere, elegantere Möglichkeiten, CSS Dateien nur einer einzigen Seite zuzuweisen? Oder ist gar der ganze Gedanke Mumpitz, weil das Auseinanderbauen der CSS-Deklarationen so schnell geht, daß es nichts ausmacht, wenn bei jeder Seite ein paar Hundert unnötiger Zeilen geladen werden?
Logged
Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4884



« Reply #1 on: November 19, 2008, 05:52:32 PM »

Hallo,

all das ist möglich.

Du kannst pro Seite ein eigenes CSS einbinden.
Nur für speziele Seiten.
Oder Du kannst über eine ection vom Typ Code (oder besser noch Code2) CSS in die Seite über das Backend integrieren.

Du kannst gerne die Hilfe benutzen.
Da lässt sich vieles finden.

MfG,
Stefek

Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
Hans>NULL

Offline Offline

Posts: 1389


« Reply #2 on: November 19, 2008, 05:54:42 PM »

Sowas oder Alternativen können helfen

in den HEAD Block büdde
Code:
<link rel="stylesheet" type="text/css" href="<?php echo TEMPLATE_DIR?><?php
if (PAGE_ID == 44){$css '/page04.css';}
if (
PAGE_ID == 45){$css '/page05.css';}
if(
$css){$wechsel $css;}
else{
$css '/screen.css';}
     
$wechsel $css;
     echo 
$wechsel;
?>
" media="screen" />
Gruß, Hans>NUL
Logged

/dev/null Ort ohne Wiederkehr
Katerchen

Offline Offline

Posts: 84


« Reply #3 on: November 19, 2008, 06:01:19 PM »

Sowas oder Alternativen können helfen

Yepp, das war ja gerade meine Idee 2, doch gibt es noch eine einfachere Lösung? In den Eigenschaften einer Seite kann ich zwar für jede Seite ein anderes Template auswählen, doch das muß dann auch wieder nicht sein - das Template soll ja ansonsten schon auf allen Seiten dasselbe sein. Und es auseinanderreißen, um die konstanten Telle davon per Include reinzuziehen, ist wohl auch mit Kanonen nach Spatzen geschossen...
Logged
Hans>NULL

Offline Offline

Posts: 1389


« Reply #4 on: November 19, 2008, 06:04:57 PM »

Dat is füa ain (EIN) Templät
Es wird nur CSS gewechselt.
Ich selbst mußte diese Variante wählen, da der Aufbau eines allumfassenden CSS zu mehr Problemen in der Auführung führte und die Arbeit daran ausuferte.
Also alles wie gehabt, nur PageID suchen, eintragen und die passende CSS, un jut ist. Gibt's keine der gesuchten/eingetragenen PageID, fällt dat janze auf SCREEN.css (im Zweifel für den Angeklagten)
Gruß, Hans>NUL
« Last Edit: November 19, 2008, 06:09:49 PM by Hans>NULL » Logged

/dev/null Ort ohne Wiederkehr
Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4884



« Reply #5 on: November 19, 2008, 06:23:15 PM »

Der Vorschlag von Hans ist gut.
Du könntest den Aufruf auch noch so ausweiten, dass ein CSS immer dabei ist (z.B die screen.css) und für verschiedene Deiner Seiten, wo Du zusätzliche Deklarationen brauchst, eins dazuspeisen.


MfG,
Stefek
Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
Hans>NULL

Offline Offline

Posts: 1389


« Reply #6 on: November 19, 2008, 06:33:46 PM »

Genauso funktioniert es lieber Stefek (mit Verlaub)
Findet das Script keines der angegebenen ID wird in diesem Falle screen.css genutzt. Das erspart viele IF Abfragen, wenn's nur wenige Seiten sind. Man kann natürlich die Operatoren/Abfragen wechseln, wenn der Umfang an Seiten größer wird. Bin ja kein PHP'ler, aber da dürften sich sicher welche finden, die's dann anpassen und variieren können.
Gruß, Hans>NUL
Edit: Ich hoffe, daß  "Katerchen" weiß, wie man die PageID findet.
« Last Edit: November 19, 2008, 06:41:03 PM by Hans>NULL » Logged

/dev/null Ort ohne Wiederkehr
Katerchen

Offline Offline

Posts: 84


« Reply #7 on: November 19, 2008, 06:43:44 PM »

Genauso funktioniert es lieber Stefek (mit Verlaub)
Findet das Script keines der angegebenen ID wird in diesem Falle screen.css genutzt. Das erspart viele IF Abfragen, wenn's nur wenige Seiten sind. Man kann natürlich die Operatoren/Abfragen wechseln, wenn der Umfang an Seiten größer wird. Bin ja kein PHP'ler, aber da dürften sich sicher welche finden, die's dann anpassen und variieren können.
Gruß, Hans>NUL
Edit: Ich hoffe, daß  "Katerchen" weiß, wie man die PageID findet.
Klar, das weiß ich schon, und Eure Idee ist ja die, die mir auch zuerst einfiel und was ich als "Fallunterscheidunge n im Template" bezeichnet habe. Offenbar scheint es die optimale Lösung zu sein. Danke für die Bestätigung smiley
Logged
Hans>NULL

Offline Offline

Posts: 1389


« Reply #8 on: November 19, 2008, 06:47:27 PM »

Yep,
im Forum ist's heut' scho' Weihnachten.  grin
Logged

/dev/null Ort ohne Wiederkehr
mr-fan

Offline Offline

Posts: 1556


WWW
« Reply #9 on: November 19, 2008, 06:52:39 PM »

...und ich hab noch gar nicht alle geschenke beisammen....

 grin
Logged

 
Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4884



« Reply #10 on: November 19, 2008, 08:39:47 PM »

@ Hans

Ja, aber mein Vorschlag ist:
Die screen.css immer laden.
Die zusätzlichen CSS Files, nur wenn sie laut Abfrage/Voreinstellung benötigt werden.
Dann muss Katie nicht jedes mal eine riesiege CSS laden lassen, weil die screen.css schon im Cache hängt.
Nachgeladen werden nur die ergänzenden Files  wink

MfG,
Stefek
Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
BerndJM

Offline Offline

Posts: 1764



« Reply #11 on: November 19, 2008, 09:57:27 PM »

Hi,
also ich würde das so angehen:
Code:
<link rel="stylesheet" type="text/css" href="<?php echo TEMPLATE_DIR?>/template.css" media="screen,projection" />

<?php
switch(PAGE_ID) {
    case 
44 $css =  '/page44.css'; break;
    case 
45 $css =  '/page45.css'; break;
}

if (
$css) {
echo 
'<link rel="stylesheet" type="text/css" href="'.TEMPLATE_DIR.$css.'" media="screen,projection" />';
}
?>


In template.css steht der ganze Kram drin, der immer gebraucht wird.
In der jeweiligen pagexx.css die zusätzlichen Angaben für die jeweilige Seite - wobei man da bei Bedarf auch Definitionen in der template.css wieder überschreiben kann, da ja später geladen.

Grüßle Bernd
Logged

In theory, there is no difference between theory and practice. But, in practice, there is.
Hans>NULL

Offline Offline

Posts: 1389


« Reply #12 on: November 19, 2008, 11:46:14 PM »

@Stefek
Ok, kann ich nachvollziehen. Genauso hatten wir es zuerst auch gemacht und aus genau den gleichen Gründen.
Aber wie o.a. genannt haben wir bei unserem Beispiel -wo halt auch das angegebene Script herkommt- ausdrücklich nicht gewollt. Es gab durch die zusätzlichen Verschachtelungen Interpretationsfehl er bei einigen Browsern, obwohl die Seite mit der screen.css selbst allen Erfordernissen entsprach, also xhtml-strict + barrierefreier Aufbau + html5-Elemente inkl. einiger css3-Erweiterungen. Mal einfach was zuladen geht nur nach ganz strengen Kriterien. Weil "auf Nummer sicher" gegangen werden sollte, fiel deshalb die Entscheidung auf diese Variante. Der Wechsel eines CSS mt 15Kb sehe ich nicht als Hindernis an.
Gruß, Hans>NUL
« Last Edit: November 19, 2008, 11:48:17 PM by Hans>NULL » Logged

/dev/null Ort ohne Wiederkehr
Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4884



« Reply #13 on: November 20, 2008, 01:12:16 AM »

"Uns" ist bekann, dass "Ihr" ganz strikte Regeln habt, Hans  grin

Jeddenfalls müsste man individuell schauen.
Die von Bernd vorgestellte Lösung mit einem "Einzug" zusätzlcihes CSS Files ist sinvoll und dürfte in der Regel kaum zu beanstanden sein.

Einfach ist oftmals das Beste.

MfG,
Stefek
Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
Katerchen

Offline Offline

Posts: 84


« Reply #14 on: November 20, 2008, 07:44:00 AM »

Ok, dann scheine ich ja gar nicht so sehr auf dem Holzweg zu sein. Noch einfacher wäre vielleicht sogar sowas wie

Code:
<link rel="stylesheet" type="text/css" href="<?php echo TEMPLATE_DIR?>/template.css" media="screen,projection" />

<?php
if file_exists(PAGE_ID ".css") {
    echo 
'<link rel="stylesheet" type="text/css" href="' TEMPLATE_DIR PAGE_ID '.css'" media="screen,projection" />';
}
?>


Dann reicht es, bei Bedarf eine .css-Datei mit der PAGE_ID als Dateiname in das Verzeichnis zu legen, ohne den Code im Template anpassen zu müssen.
Logged
kweitzel
Forum administrator
*****
Offline Offline

Posts: 6975


WWW
« Reply #15 on: November 20, 2008, 08:15:47 AM »

Das ist definitiv die beste Variante, dabei brauchst Du das Template nicht mehr anzufassen, wenn Du eine neue Seite mit CSS hast. Wenn Du jetzt noch den Medienordner als Speicherort festlegst, kannst Du die CSS Datei auch per WB hochladen ...

gruß

Klaus
Logged

WebsiteBaker Org e.V. - for WebsiteBaker

Hans>NULL

Offline Offline

Posts: 1389


« Reply #16 on: November 20, 2008, 09:32:33 AM »

@Stefek
In diesem Falle hat's nicht mit strikten Anweisungen und Anforderungen des Teams zu tun, die sich bisher immer als  fachlich begründet, und nicht aus der Luft gegriffen herausgestellt haben, wenn man nachfragte, sondern bei einem xhtml-strict Template gab es je nach Version Probleme in den Browsern, wenn CSS (nicht nur per include) nach- bzw. zugeladen wurde: die Reihenfolge spielte da manchmal auch eine Rolle. Das allein war der Grund für die Entscheidung. Es KANN also manchmal bzw. in einigen Fällen Probleme und damit unnötigen erhöhten Arbeitsaufwand geben. Um dem aus dem Wege zu gehen...
Wir machen nix aus Prinzip oder weil's so supergeil ist penibel zu sein.
Gruß, Hans>NUL
« Last Edit: November 20, 2008, 09:38:39 AM by Hans>NULL » Logged

/dev/null Ort ohne Wiederkehr
Pages: [1]   Go Up
Print
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!