Tipp - Nur Startseite anders gestalten

Ein CMSimple Support Forum für deutsch sprechende Nutzer und Entwickler
lck
Posts: 1236
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Tipp - Nur Startseite anders gestalten

Post by lck » Sat Jun 03, 2017 8:32 pm

Es gibt ja immer wieder mal Anfragen und auch bereits Lösungen, wie man nur die Startseite anders gestalten kann (Header, Hintergrundbild, Farbe, Breite, Höhe, etc.).
Durch den Artikel "Tipps und Tricks" (Danke an Christoph) bin ich auf eine andere einfache Lösung gestoßen (funktioniert auch in Zweitsprachen) und zwar durch Kombination von "Newsbox nur auf der Startseite" und "Eigenes Stylesheet für jede Seite".

Der Code wird in der template.htm vor dem </head> eingefügt.
($s === 0 ist die Startseite; $s === 1 wäre die 2.Seite; ABER, hat die Startseite Unterseiten, ist also die Unterseite Seite 2 usw.!):

Code: Select all

<?php if ($s === 0):?>
    <?php echo tag('link rel="stylesheet" type="text/css" href="'.$pth['folder']['template'].'startpage.css"')."\n"; ?>
<?php endif;?>
Dann noch eine startpage.css im Template-Ordner erstellen, Beispiel:

Code: Select all

#body {
    background: url(images/bg.jpg) 50% no-repeat fixed;
    background-color: #0e3d11;
    -webkit-background-size: cover;
    background-size: cover;
}
.header {
    height: 30vh;
}
.header h1{
    font-size:200%;
}
Eine zweite Variante wäre, die Style-Angaben direkt in's template.htm einzubinden (spart evtl. etwas Ladezeit :? ):

Code: Select all

<?php if ($s === 0):?>
<style type="text/css">
    #body {
    background: url(<?php echo $pth['folder']['templateimages'];?>bg.jpg) 50% no-repeat fixed;
    background-color: #0e3d11;
    -webkit-background-size: cover;
    background-size: cover;
    }
    .header {height: 30vh;}
    .header h1{font-size:200%;}
</style>
<?php endif;?>
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“      XH-Templates for MultiPage & OnePage

lck
Posts: 1236
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Tipp - Nur Startseite anders gestalten

Post by lck » Wed Mar 14, 2018 8:17 pm

lck wrote:
Sat Jun 03, 2017 8:32 pm
($s === 0 ist die Startseite; $s === 1 wäre die 2.Seite; ABER, hat die Startseite Unterseiten, ist also die Unterseite Seite 2 usw.!):
Ist es per Variable auch möglich bei Multi-Pagern nur menulevel1-Links auszuwählen? Also den ersten Link in menulevel1, den zweiten Link in menulevel1, usw..
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“      XH-Templates for MultiPage & OnePage

cmb
Posts: 12647
Joined: Tue Jun 21, 2011 11:04 am
Location: Mü-Sa, RLP, DE
Contact:

Re: Tipp - Nur Startseite anders gestalten

Post by cmb » Wed Mar 14, 2018 10:14 pm

lck wrote:
Wed Mar 14, 2018 8:17 pm
Ist es per Variable auch möglich bei Multi-Pagern nur menulevel1-Links auszuwählen? Also den ersten Link in menulevel1, den zweiten Link in menulevel1, usw..
CMSimple_XH speichert den Level jeder Seite im Array $l. Im Prinzip kannst du also etwa folgendes schreiben:

Code: Select all

if ($l[$s]) { /* mach was */ }
Das gibt aber, falls $s === -1 (z.B. in der Plugin-Administration), eine Notice, die man (in diesem Fall) wie folgt vermeiden kann:

Code: Select all

if (!empty($l[$s])) { /* mach was /* }
Christoph M. Becker –Plugins for CMSimple_XH, but not for CMSimple 4+

lck
Posts: 1236
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Tipp - Nur Startseite anders gestalten

Post by lck » Thu Mar 15, 2018 11:00 am

Danke, werd's mal testen.
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“      XH-Templates for MultiPage & OnePage

lck
Posts: 1236
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Tipp - Nur Startseite anders gestalten

Post by lck » Fri Mar 16, 2018 6:00 pm

cmb wrote:
Wed Mar 14, 2018 10:14 pm
CMSimple_XH speichert den Level jeder Seite im Array $l. Im Prinzip kannst du also etwa folgendes schreiben:

Code: Select all

if ($l[$s]) { /* mach was */ }
Das gibt aber, falls $s === -1 (z.B. in der Plugin-Administration), eine Notice, die man (in diesem Fall) wie folgt vermeiden kann:

Code: Select all

if (!empty($l[$s])) { /* mach was /* }
Habe das mal mit folgendem Code probiert. Die Meldung erscheint jetzt bei allen menulevel1-Seiten, schon mal nicht schlecht.

Code: Select all

<?php if ($s >= 0 && $l[$s] == 1):?>
<?php echo "Hello World!"; ?>
<?php endif;?>
Wie kann ich jetzt eine bestimmte Seite auswählen oder auch mehrere Seiten? Zum Beispiel wenn ich 6 menulevel1-Links habe, nur Link-1, Link-3, Link-4.
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“      XH-Templates for MultiPage & OnePage

olape
Posts: 571
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Tipp - Nur Startseite anders gestalten

Post by olape » Fri Mar 16, 2018 6:30 pm

lck wrote:
Fri Mar 16, 2018 6:00 pm
Wie kann ich jetzt eine bestimmte Seite auswählen oder auch mehrere Seiten? Zum Beispiel wenn ich 6 menulevel1-Links habe, nur Link-1, Link-3, Link-4.
Ich glaube, das wird so, zumindest nicht wirklich sinnvoll, funktionieren.
Du könntest das über $s lösen, aber da ein CMS ein dynamisches Menü erzeugt/erzeugen soll, ist es so eben nicht sonderlich sinnvoll.
Bei jeder Änderung in der Seitenstruktur müsste nachgebessert werden.

Vielleicht wäre Morepagedata eine Alternative. Ich habe das persönlich noch nicht getestet, aber ich glaube das wäre eine Möglichkeit.

Oder du setzt bei den entsprechenden Seiten eine eigene Variable im Content, etwas so:

Code: Select all

#CMSimple $GLOBALS['irgendwas'] = 'on';#
und fragst diese Variable dann entsprechend ab.
Ich nutze das z.B. so, um bei einigen Seiten den Link zur Druckvorschau wegzulassen, oder auch ein anderes Logo anzuzeigen.


Deinen Code könntest du etwas einkürzen

Code: Select all

<?php
if($s >= 0 && $l[$s] == 1) {
   echo 'Hello World!';
}
?>

cmb
Posts: 12647
Joined: Tue Jun 21, 2011 11:04 am
Location: Mü-Sa, RLP, DE
Contact:

Re: Tipp - Nur Startseite anders gestalten

Post by cmb » Fri Mar 16, 2018 7:47 pm

olape wrote:
Fri Mar 16, 2018 6:30 pm
lck wrote:
Fri Mar 16, 2018 6:00 pm
Wie kann ich jetzt eine bestimmte Seite auswählen oder auch mehrere Seiten? Zum Beispiel wenn ich 6 menulevel1-Links habe, nur Link-1, Link-3, Link-4.
Ich glaube, das wird so, zumindest nicht wirklich sinnvoll, funktionieren.
Du könntest das über $s lösen, aber da ein CMS ein dynamisches Menü erzeugt/erzeugen soll, ist es so eben nicht sonderlich sinnvoll.
Bei jeder Änderung in der Seitenstruktur müsste nachgebessert werden.
Ja, jedenfalls wenn man wirklich ganz bestimmte Seiten mit einer Sonderbehandlung versehen möchte. In diesem Fall würde ich auch Morepagedata oder eben dessen händischen kleinen Bruder (also eine globale Variable per CMSimple-Skripting setzen) empfehlen.

Es könnte aber durchaus Fälle geben, wo Ludwigs Anfrage sinnvoll sein kann. Da wäre dann XH\Pages hilfreich; geht es nur um Menulevel 1, dann genügt die ::toplevels() Methode:

Code: Select all

$toplevels = (new XH\Pages)->toplevels();
$filtered = array_filter($toplevels, function ($i) {
    $specialsubpages = [0, 2, 3]; // 1., 3. und 4. Unterseite
    return in_array($i, $specialsubpages);
}, ARRAY_FILTER_USE_KEY);
if (in_array($s, $filtered)) {
    echo 'Hello world';
}
(Der Code benötigt PHP ≥ 5.6.0, wegen des ARRAY_FILTER_USE_KEY. Könnte bei Bedarf abwärtskompatibel umgeschrieben werden.)
olape wrote:
Fri Mar 16, 2018 6:30 pm
Deinen Code könntest du etwas einkürzen

Code: Select all

<?php
if($s >= 0 && $l[$s] == 1) {
   echo 'Hello World!';
}
?>
Ja, durchaus möglich – immer auch ein bisschen Geschmackssache. Zumindest wenn der Code noch umfangreicher wird, würde ich ihn aber in eine eigene Funktion auslagern, und im Template diese aufrufen – sonst wird das Template schnell zu unübersichtlich.
Christoph M. Becker –Plugins for CMSimple_XH, but not for CMSimple 4+

lck
Posts: 1236
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Tipp - Nur Startseite anders gestalten

Post by lck » Fri Mar 16, 2018 8:42 pm

olape wrote:
Fri Mar 16, 2018 6:30 pm
Oder du setzt bei den entsprechenden Seiten eine eigene Variable im Content, etwas so:

Code: Select all

#CMSimple $GLOBALS['irgendwas'] = 'on';#
und fragst diese Variable dann entsprechend ab.
Ich nutze das z.B. so, um bei einigen Seiten den Link zur Druckvorschau wegzulassen, oder auch ein anderes Logo anzuzeigen.
Danke Olaf, aber man muss es unter dem Aspekt Template-Erstellung sehen und da fällt das leider schon mal flach.
cmb wrote:
Fri Mar 16, 2018 7:47 pm
Es könnte aber durchaus Fälle geben, wo Ludwigs Anfrage sinnvoll sein kann. Da wäre dann XH\Pages hilfreich; geht es nur um Menulevel 1, dann genügt die ::toplevels() Methode:
Sehr schön, das funktioniert gut.
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“      XH-Templates for MultiPage & OnePage

olape
Posts: 571
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Tipp - Nur Startseite anders gestalten

Post by olape » Fri Mar 16, 2018 9:43 pm

lck wrote:
Fri Mar 16, 2018 8:42 pm
Danke Olaf, aber man muss es unter dem Aspekt Template-Erstellung sehen und da fällt das leider schon mal flach.
Ja, derjenige, der die Seite pflegt, kann bei dieser Variante nicht ganz unbeleckt sein.
Von daher verstehe ich deinen Einwand.
Ich muss mir bei Gelegenheit unbedingt Morepagedata ansehen.

lck wrote:
Fri Mar 16, 2018 8:42 pm
cmb hat geschrieben: ↑16 Mär 2018 20:47
Es könnte aber durchaus Fälle geben, wo Ludwigs Anfrage sinnvoll sein kann. Da wäre dann XH\Pages hilfreich; geht es nur um Menulevel 1, dann genügt die ::toplevels() Methode:
Sehr schön, das funktioniert gut.
Aber, die Chance, das hier nachgebessert werden muss, ist immer noch gegeben, wenn auch minimiert. Auch die Position und Anzahl der Level1-Menüpunkte kann sich ändern.

cmb
Posts: 12647
Joined: Tue Jun 21, 2011 11:04 am
Location: Mü-Sa, RLP, DE
Contact:

Re: Tipp - Nur Startseite anders gestalten

Post by cmb » Fri Mar 16, 2018 10:12 pm

lck wrote:
Fri Mar 16, 2018 8:42 pm
Danke Olaf, aber man muss es unter dem Aspekt Template-Erstellung sehen und da fällt das leider schon mal flach.
Na ja, du könntest eventuell ein vorkonfiguriertes Morepagedata mit ausliefern, oder zumindest erfordern, dass das Plugin installiert wird, und beschreiben, was gemacht werden muss.

Alternativ könntest du die notwendige minimale Funktionalität entsprechend Morepagedata im Template einbauen. Eventuell muss das teilweise in userfuncs.php passieren, aber auch das wäre kein großes Problem. Und der Page-Data-Kram ist eigentlich recht einfach zu programmieren. Wie genau, ist im Wiki beschrieben.
olape wrote:
Fri Mar 16, 2018 9:43 pm
Ich muss mir bei Gelegenheit unbedingt Morepagedata ansehen.
Sicher nicht verkehrt. Vielleicht magst du ja auch bei der Wartung mithelfen, zumindest solange svasti keine Zeit für das Plugin hat.

Was Morepagedata im wesentlichen tut, ist aber nichts anderes als globale Variablen zu setzen – man muss das eben nicht manuell machen, sondern kann das im Pagedata-Tab per Formulareingabe tun.
Christoph M. Becker –Plugins for CMSimple_XH, but not for CMSimple 4+

Post Reply