Demo

Probiere ClanSphere aus und teste daran herum. Demo


Antworten: 2
Seite [1]
reVerB


Geekboy




Beiträge: 1237
# Thema - 16.09.2010 um 19:36 Uhr
Ich habe mir lange einen Weg überlegt, wie man Global in Clansphere mehr Kontrolle über sein Template bekommt. Nun habe ich denke ich mal eine Lösung gefunden.

Ich stand oft vor dem Problem, das ich für die Standardthemes für bestimmte Module andere Werte benötige. Der bisherige weg war, das ich immer die Themes des betreffenden Moduls mit neuen Klassen versehen musste. Ich hatte auch schon das Problem, das ich das Artikel-Modul für Tutorials verwenden wollte und dafür einen anderen Header einfügen musste. Eines der bekannteren Probleme ist auch, das in einigen Templates das Forum zu schmal ist. Warum dann nicht einfach überflüssige boxen ausblenden.

Und dabei werden die folgenden 7 Zeilen PHP-Code helfen.

Schritt 1: Platzhalter-Datei erstellen
Um einen neuen Platzhalter zu kreieren, muss man nur in das Clansphere-Verzeichnis unter dem Ordner Mods einen neuen Ordner erstellen. Der Name dieses Ordners ist der erste Teil des Platzhalters. In meinem Fall habe ich den Ordner "placeholder" genannt. In diesem Ordner erstellt man nun eine leere PHP-Datei mit einem aussagekräftigen Namen. Meine heißt zum Beispiel "currmod_dir" für "Current Module Directory".

Schritt 2: Der PHP-Code
Füllt diese neue Datei mit diesem Code:
 
1.
2.
3.
4.
5.
6.
7.
1. / 2. / ... 
<?php
    
if ($_GE T["mod"]) {
        echo 
$_GE T["mod"];
    } else {
        echo 
'no_mod';
    }
?>

* Bei den GET-Befehlen müssen die Leerzeichen entfernt werden, da sonst das Tutorial nicht gespeichert werden konnte.


Schritt 3: Einbinden des Platzhalters
Nun kann man den Platzhalter an der gewünschten Stelle in der index.htm einbinden. In unserem Beispiel muss dieser lauten:
{placeholder:currmod_dir}

An dieser Stelle wird immer der Ordnername des aktiven Mods eingefügt.

Was kann man damit jetzt machen?
Man kann zum Beispiel mit id='{placeholder:currmod_dir}' dem Body den Namen des Moduls geben. Nun kann man in seine CSS zum Beispiel folgendermaßen einen Header definieren:
#header { background-image: url(test.jpg); }
#articles #header { background-image: url(tuts.jpg); }

Sobald der Body die ID "articles" hat, wird für den Header eine andere Grafik geladen.

Man kann aber auch den Content mir einem DIV umschließen, der die ID bekommt. Somit kann man zum Beispiel das machen:
.forum { background-color: transparent; }
#board .forum { background-color: black; }

Schon sind die Tabellenzellen im Forum sichtbar, überall anders nicht.

Man kann auch die ID als Parameter über Body onLoad an ein JS übergeben, das zum Beipiel alle Modulboxen/Navlists auf der Seite ausblenen lässt und den Contentbereich vergrößert, sobald das Modul Board aufgerufen wird.


EXTRA: Platzhalter für Modulnamen aus der LANG oder dem Namen der statischen Seite
Für unseren Clan bastel ich gerade ein neues Template. Ich habe beschlossen, den Content in eine eigene Box zu packen. ich finde es aber blöde, wenn die Box den Titel "Content", "Inhalt" oder "Main-Box" bekommt. Ich wollte da entweder den Namen des Moduls oder den Titel der statischen Seite dort stehen haben. Das ganze funktioniert so.

Schritt 1: Platzhalter-Datei erstellen
Auch hier wollen wir einen neuen Platzhalter erstellen. Um einen neuen Platzhalter zu kreieren, muss man nur in das Clansphere-Verzeichnis unter dem Ordner Mods einen neuen Ordner erstellen. In meinem Fall habe ich den Ordner "placeholder" genannt. In diesem Ordner erstellt man nun eine leere PHP-Datei mit einem Namen, der auf die Funktion dieses Platzhalters schließen lässt.. Meine heißt zum Beispiel "currmod_name" für "Current Module Name".

Schritt 2: Der PHP-Code
Füllt diese neue Datei mit diesem Code:
 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
1. / 2. / ... 
<?php
    
if($_GE T['mod'] == 'static' && $_GE T['id']) {
        
$where "static_id = '" . (int) $_GE T['id'] . "' AND static_access <= '" $account['access_static'] . "'";
        
$cells 'static_title';
        
$cs_static cs_sql_select(__FILE__,'static',$cells,$where);
        echo 
$cs_static['static_title'];
    } else if(
$_GE T['mod']) {
        
$cs_lang cs_translate($_GE T['mod']);
        echo 
$cs_lang['mod_name'];
    } else {
        
$cs_lang cs_translate('clansphere')
        echo 
$cs_lang['modless_title'];
    }
?>

* Bei den GET-Befehlen müssen die Leerzeichen entfernt werden, da sonst das Tutorial nicht gespeichert werden konnte.

Schritt 3: Lang-Dateien
Da es sich hier um das einfügen eines Modulübergreifenden Titels handelt, muss man nun im lang-Ordner unter allen Sprachen die clansphere.php bearbeiten. Fügt dort die folgende Zeile ein (Der Titel muss natürlich in die jeweilige Sprache übersetzt werden ^^):
 
1.
1. / 2. / ... 
 $cs_lang['modless_title']  = 'Startseite - Aktuelle News';


Schritt 3: Platzhalter einfügen
Nun kann man den Platzhalter {placeholder:currmod_name} an die gewünschte Stelle im Tamplate einfügen bzw. als Box-Titel eintragen. und schon passt sich der Titel dem Modul oder der statischen Seite an. Wenn kein Modul aktiv ist, wird dann der Titel aus den Lang-Dateien ausgegeben.

Ich finde das sehr nützlich. Was sagt ihr dazu? Das macht das Leben der Designer einfacher finde ich.


Zuletzt editiert von reVerB am 16.09.2010 um 20:30 Uhr (4x Editiert)
Inaktiv
bFeeee


Just nerd



Herkunft: Hamm
Beiträge: 944
# Antwort: 1 - 16.09.2010 um 20:31 Uhr
hab zwar keine ahnung von php und coden ... aber es hört sich schonmal nützlich an ... ich glaub ich muss es mir noch 3-4 mal durchlesen damit ich richtig checke was ich genau machen kann ;P


------------------
Grüße bFeee

Inaktiv
|
reVerB
Thread-Ersteller


Geekboy




Beiträge: 1237
# Antwort: 2 - 16.09.2010 um 20:42 Uhr
In diesem Beispiel liefert der Platzhalter "{placeholder:currmod_dir} " den Ordner des Moduls zurück, das gerade aktiv ist.

Der Besucher geht zum Beispiel ins Forum und klickt den Link an. Wenn er im Forum ist, nimmt der Platzhalter den Wert "board" an. Bei news halt "news" oder bei statischen Seiten "static". Diesen Wert kannst du dann als ID oder Klasse diverser DIV-Boxen verwenden. Außerdem muss man überlegen, das im grunde die Selektoren von CSS der Hierarchie folgen. Das heißt bei
#board #header { background-image: blabla; }

prüft der Browser zuerst, ob ein Element mit der ID board vorhanden ist. Danach überprüft er, ob in diesem Element wiederum ein Element mit der ID Header ist. Und wenn er es findet, weist er ihm diesen Wert zu. Hat z.B. Body die ID news, bleibt alles beim alten. Ist die ID static, bleibt alles beim alten. Ist sie article, ist auch hier alles normal. Ist sie aber board, dann werden die Werte aus dem hier genannten Beispiel angewendet. Es gibt für diesen Platzhalter so viele Einsatzmöglichkeiten und der ist so extrem nützlich, wie ich festgestellt habe, das ich das Ding in jede Installation mit übernehmen werde.


Zuletzt editiert von reVerB am 16.09.2010 um 20:43 Uhr (1x Editiert)
Inaktiv
|
Antworten: 2
Seite [1]


Sie müssen sich registrieren, um zu antworten.