Page 1 of 2
bestimmten Seiten abweichende Hintergrundbilder zuweisen
Posted: Sun Apr 11, 2010 10:20 am
by Xenolith
Hallo,
Ich muss vor wegnehmen das ich die Sufu schon benutzt habe aber leider nicht genau das gefunden habe was ich suche.
Ich möchte gerne ein Standarthintergrundbild haben was auf allen Seiten sichtbar ist außer auf ein paar wenigen.
des weiteren würde ich gerne ohne Javascript auskommen dh. nur html/css/php nutzen.
folgende Idee hatte ich schon:
Code: Select all
<?php
if($page_alias == travel)
{
<div id="mainframe" style="background-image: url(uploads/joc_template/images/background/travel_bg.jpg)"> </div>
}
elseif($page_alias == sports)
{
<div id="mainframe" style="background-image: url(uploads/joc_template/images/background/sports_bg.jpg)"> </div>
}
else
{
<div id="mainframe" style="background-image: url(uploads/joc_template/images/background/default_bg.jpg)"> </div>
}
?>
der Haken ist das { } als Smarty-Tags interpretiert werden. Ich habe den Code also wie folgt verändert:
Code: Select all
<?php
if({$page_alias} == travel)
{ldelim}
<div id="mainframe" style="background-image: url(uploads/joc_template/images/background/travel_bg.jpg)"> </div>
{rdelim}
elseif({$page_alias} == sports)
{ldelim}
<div id="mainframe" style="background-image: url(uploads/joc_template/images/background/sports_bg.jpg)"> </div>
{rdelim}
else
{ldelim}
<div id="mainframe" style="background-image: url(uploads/joc_template/images/background/default_bg.jpg)"> </div>
{rdelim}
?>
Leider auch ohne Erfolg.
Ich habe mittlerweile einen weg gefunden das ganze zu lösen allerdings ist das sehr aufwendig da ich dann für jede Seite ein eigenes Hintergrundbild hochladen muss was den Page Alias im namen trägt. Die Lösung sieht wie folgt aus:
Code: Select all
<div id="mainframe" style="background-image: url(uploads/joc_template/images/background/{$page_alias}_bg.jpg)">
ist mir aber viel zu umständlich/Speicherplatz intensiv.
Welche eleganteren Möglichkeiten gibt es noch?
Liebe Grüße
XenoLith
Re: bestimmten Seiten abweichende Hintergrundbilder zuweisen
Posted: Sun Apr 11, 2010 10:33 am
by RonnyK
Did you try ...
{if($page_alias == travel)}
{elseif($page_alias == sports)}
{else}
{/if}
Ronny
Re: bestimmten Seiten abweichende Hintergrundbilder zuweisen
Posted: Sun Apr 11, 2010 10:49 am
by Xenolith
Code: Select all
string(135) "Smarty error: [in tpl_body:16 line 27]: syntax error: unrecognized tag: if($page_alias == travel) (Smarty_Compiler.class.php, line 446)" string(111) "Smarty error: [in tpl_body:16 line 27]: syntax error: unrecognized tag '' (Smarty_Compiler.class.php, line 590)" string(139) "Smarty error: [in tpl_body:16 line 29]: syntax error: unrecognized tag: elseif($page_alias == sports) (Smarty_Compiler.class.php, line 446)" string(111) "Smarty error: [in tpl_body:16 line 29]: syntax error: unrecognized tag '' (Smarty_Compiler.class.php, line 590)" string(109) "Smarty error: [in tpl_body:16 line 31]: syntax error: unexpected {else} (Smarty_Compiler.class.php, line 478)" string(114) "Smarty error: [in tpl_body:16 line 33]: syntax error: mismatched tag {/if}. (Smarty_Compiler.class.php, line 2303)"
Parse error: syntax error, unexpected T_ELSE in /mnt/webspace/02/44355/jesusourcaptain.org/testcms/tmp/templates_c/%%5A^5A7^5A71AA6A%%tpl_body%3A16.php on line 32
It doesen't work with your Code Ronny...
Re: bestimmten Seiten abweichende Hintergrundbilder zuweisen
Posted: Sun Apr 11, 2010 11:10 am
by owr_bgld
Code: Select all
{if $page_alias == travel}
<div id="mainframe" style="background-image: url(uploads/joc_template/images/background/travel_bg.jpg)"> </div>
{elseif $page_alias == sports}
<div id="mainframe" style="background-image: url(uploads/joc_template/images/background/sports_bg.jpg)"> </div>
{else}
<div id="mainframe" style="background-image: url(uploads/joc_template/images/background/default_bg.jpg)"> </div>
{/if}
should work
EDIT: Vergiss nicht dein ldelim und rdelim sofern du es benötigst wieder einzubauen
EDIT2: kein php in den Templates (also auch nicht ) - nur smarty-Tags also nur das in den {} und das wird automatisch zu php-Befehlen umgewandelt.
EDIT3: du kannst auch mit den extrafeldern arbeiten - dann kannst du gewisse Hintergründe für mehrere page-aliases verwenden.
Re: bestimmten Seiten abweichende Hintergrundbilder zuweisen
Posted: Sun Apr 11, 2010 11:23 am
by RonnyK
{if $page_alias == 'travel'}
{elseif $page_alias == 'sports'}
{else}
{/if}
I didnt test it out before (also I didnt now

) but with the regular call and maybe quotes around the alias..
Ronny
Re: bestimmten Seiten abweichende Hintergrundbilder zuweisen
Posted: Sun Apr 11, 2010 11:42 am
by NaN
Der Einsatz von PHP muss erst in der config.php freigeschalten werden.
Und dann geht das so:
Code: Select all
{php}
... ganz normaler php code ...
{/php}
oder so:
Code: Select all
{literal}
<?php
... ganz normaler php code ...
?>
{/literal}
Aber der code von Ronny müsste eigentlich auch funktionieren.
Re: bestimmten Seiten abweichende Hintergrundbilder zuweisen
Posted: Sun Apr 11, 2010 11:55 am
by Xenolith
Okay das Ganze funktioniert jetzt! Allerdings verdrängt das Bild jetzt den gesamten Content der vorher in dem Container war. Wie stelle ich das Bild in den Hintergrund?
Re: bestimmten Seiten abweichende Hintergrundbilder zuweisen
Posted: Sun Apr 11, 2010 11:58 am
by NaN
Niemand weiß wie Deine Seite aussieht oder aufgebaut ist.
Was meinst Du wie viele von denen Dir jetzt helfen können?
Richtig.
Also gib uns doch mal 'nen Link oder 'nen Screenshot un bissel Code.
Sonst wird das hier 'ne Raterunde

Re: bestimmten Seiten abweichende Hintergrundbilder zuweisen
Posted: Sun Apr 11, 2010 12:09 pm
by Xenolith
Ja da hast du natürlich recht!
Hier der Link:
http://jesusourcaptain.org/testcms/
Hier der Code aus dem Template
Code: Select all
<!-- Ebene 3: Content Fenster -->
<div id="mainframe">
{if $page_alias == 'travel'}
<div id="mainframe" style="background-image: url(uploads/joc_template/images/background/travel_bg.jpg)"> </div>
{elseif $page_alias == 'sports'}
<div id="mainframe" style="background-image: url(uploads/joc_template/images/background/sports_bg.jpg)"> </div>
{else}
<div id="mainframe" style="background-image: url(uploads/joc_template/images/background/default_bg.jpg)"> </div>
{/if}
<div id="content">
<h2>{title}</h2>
<h5>{content}</h5>
</div>
</div>
Re: bestimmten Seiten abweichende Hintergrundbilder zuweisen
Posted: Sun Apr 11, 2010 12:21 pm
by Xenolith
Fehler gefunden wie Dumm von mir
So läuft die Sache:
Code: Select all
<!-- Ebene 3: Content Fenster -->
{if $page_alias == 'travel'}
<div id="mainframe" style="background-image: url(uploads/joc_template/images/background/travel_bg.jpg)">
{elseif $page_alias == 'sports'}
<div id="mainframe" style="background-image: url(uploads/joc_template/images/background/sports_bg.jpg)">
{else}
<div id="mainframe" style="background-image: url(uploads/joc_template/images/background/default_bg.jpg)">
{/if}
<div id="content">
<h2>{title}</h2>
<h5>{content}</h5>
</div>
</div>
Vielen lieben Dank für eure tolle Hilfe!!!
Gruß Xenolith
Re: bestimmten Seiten abweichende Hintergrundbilder zuweisen
Posted: Tue Apr 13, 2010 10:25 am
by cyberman
Noch ein kleiner Tipp - du solltest Content und Layout konsequent voneinander trennen - style-Anweisungen im Template sind da nicht gerade der Hit, arbeite da lieber mit Klassen oder IDs.
Wird auch von manchen Webseiten-Checkern (wie zum Beispiel qualidator.com) als Spaghetti-Code angemeckert.
Re: bestimmten Seiten abweichende Hintergrundbilder zuweisen
Posted: Tue Apr 13, 2010 1:04 pm
by Xenolith
Du hast natürlich recht das wäre besser! Ich hab aber noch keine idee wie ich das eleganter lösen kann.
hast du mal ein Beispiel mit IDs/Klassen?
Grüße
Xenolith
Re: bestimmten Seiten abweichende Hintergrundbilder zuweisen
Posted: Tue Apr 13, 2010 1:30 pm
by NaN
Statt id="mainframe" einfach class="mainframe".
Und als id einfach {$page_alias}.
Bsp.:
Code: Select all
<div class="mainframe" id="{$page_alias}">...</div>
Dann kannst Du im Stylesheet für jede Seite ein Hintergrundbild definieren:
Code: Select all
#travel {
background-image: url(uploads/joc_template/images/background/travel_bg.jpg)
}
Das blöde ist nur, dass, wenn eine neue Seite hinzukommt oder sich das Seitenalias ändern sollte, jedesmal das Stylesheet angepasst werden muss. Bei dynamisch generierten Layout-Geschichten wird man wohl immer einen Kompromiss machen müssen.
Andersrum muss man allerdings auch immer wieder das Temlpate anpassen...
Es geht natürlich auch noch etwas komfortabler, indem man vorher prüft, ob ein Hintergrundbild mit dem Namen des Seitenalias existiert. Existiert kein solches Bild, wird ein Standardbild angezeigt:
Code: Select all
{if "uploads/joc_template/images/background/$page_alias_bg.jpg"|file_exists}
<div class="mainframe" style="background-image: url(pfad/zum/bild/{$page_alias}.jpg)">
{else}
<div id="mainframe" style="background-image: url(pfad/zum/bild/default.jpg)">
{/if}
Somit muss man nur, wenn eine neue Seite erstellt wird, das Bild mit dem Namen [Seitenalias].jpg auf den Server ins entsprechende Verzeichnis hochladen und fertig.
Re: bestimmten Seiten abweichende Hintergrundbilder zuweisen
Posted: Tue Apr 13, 2010 4:54 pm
by cyberman
Man könnte dies mit dem CGSimpleSmarty-Modul noch ausbauen, und in Abhängigkeit von der obersten bzw. übergeordneten Ebene das Aussehen aller untergeordneten Seiten steuern ...
Re: bestimmten Seiten abweichende Hintergrundbilder zuweisen
Posted: Tue Apr 13, 2010 6:25 pm
by owr_bgld
cyberman wrote:Noch ein kleiner Tipp - du solltest Content und Layout konsequent voneinander trennen
Ich hatte das selbe problem beim header-logo-background. Es wechselte sich bei jedem neuen Aufruf der Seite per Zufall ab - also z.B. 5 Grafiken in einem Ordner und jedesmal eine davon. Script liest die Grafiken (alles jpg) aus dem Verzeichnis aus und nimmt eines davon. Das ganze ins css-sript einbauen funzt ja nicht.
Und da frage ich mich schon mit der strikten Trennung - wenn ich auf der Seite genau einmal den Spaghetticode drinnen habe - also ich muss sagen das tut mir weniger weh, als da herumzubasteln bis der Arzt kommt.