Page 1 of 2
"Interaktives" Template möglich?
Posted: Sat Apr 14, 2007 7:21 am
by MagicV
Hallo Zusammen!
Ich möchte das/den Banner meines Templates Zeit- und/oder Dattumabhängig angezeigt bekommen.
Jetzt die Frage:
Wo und in welcher Datei muss meine "if" Abfrage stehen, in der index.tpl führen solche Abfragen zu haufenweise "smarty"-Error ?!
Oder muss ich das als Plugin gestalten?
Gruß
Volker
Re: "Interaktives" Template möglich?
Posted: Sat Apr 14, 2007 12:53 pm
by garvinhicking
Hi!
Dafür kannst Du eine config.inc.php in deinem tempalteverzeichnis erstellen. Dort kannst Du (siehe technische doku auf
www.s9y.org) beliebigen PHP-Code benutzen um mittels Smarty dort Datums/Zeitvariablen etc. einzustellen.
Je nach gewünschter modifikation kannst du evtl. auch die index.tpl editieren und if-abfragen mit {$smarty.now} machen. Siehe smarty doku dazu.
Mittels eines plugins ginge es übrigens auch, nur um die möglichkeiten komplett zu machen. Da könntest du dann frontend_header oder ähnliche hooks nutzen.
Viele Grüße,
Garvin
Posted: Sat Apr 14, 2007 1:08 pm
by MagicV
Ich habe in der config.inc.php folgenden Code:
Code: Select all
$hour_of_day = date("H");
$day_of_remember = date("d.m");
$day_time_banner = "day.jpg";
if ($hour_of_day <=7 or $hour_of_day >=12) {
$day_time_banner="night.jpg";
}
if($day_of_remember =="08.01") {
$day_time_banner="anniversary.jpg";
}
die Variable $day_time_banner wird also von mir mit den Namen der anzuzeigenden Grafik gefüllt, was auch korrekt passiert.
Doch wie nun übenheme ich die Variable in die CSS-Datei zum Style?
Geht das überhaupt so:
Code: Select all
#identity{
height:110px;
width:100%;
margin:0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
background:#FCFCFC url({TEMPLATE_PATH}img/$day_time_banner) bottom left no-repeat;
}
Oder muss ich das in der index.tpl machen?
Gruß
Volker
Posted: Sat Apr 14, 2007 4:52 pm
by MagicV
Okay, ich habe es jetz mal mit smarty versucht...
Ich kann sogar einen Teilerfolg verbuchen, denn ich kriege keine Fehlermeldung mehr im Browser, aaaaaaber.... es wird leider nicht das gewünschte Ergebnis angezeigt.
s9y_template_banner:
Code: Select all
<?php
/**
* Smarty plugin
* @package Smarty
* @subpackage plugins
*/
/**
* Smarty s9y_template_banner function plugin
*
* Type: function<br>
* Name: s9y_template_banner<br>
* Purpose: Changes the shown banner on your s9y-blog during a day
* @author Volker Harmsen <volker at magic-volker dot de>
* @param string
* @param integer
* @param string
* @param boolean
* @param boolean
* @return string
*/
function s9y_template_banner($string, $length = 80)
{
$hour_of_day = date("H");
$day_of_remember = date("d.m");
$day_time_banner = "bextopnight.jpg";
if ($hour_of_day <=7 or $hour_of_day >=20) {
$day_time_banner="bextopnight.jpg";
}
if($day_of_remember =="08.01") {
$day_time_banner="anniversary.jpg";
}
return $day_time_banner;
}
/* vim: set expandtab: */
?>
In meiner Style.css steht nunb folgende Zeile:
Code: Select all
...
background:#FCFCFC url({TEMPLATE_PATH}img/{s9y_template_banner}) bottom left no-repeat;
...
Ergebnis = kein Banner...
Da ich nicht der allergrößte Programmierer bin.... wo liegt mein Denk- / Handwerksfehler?
Gruß
Volker
Posted: Sat Apr 14, 2007 6:23 pm
by garvinhicking
Hi!
Die CSS-Datei wird unabhängig vom Templatecode geladen. Die config.inc.php wird NICHT ausgeführt wenn die CSS-Datei geladen wird. In der CSS-Datei ist KEIN Smarty verfügbar.
Du musst in deiner index.tpl abhängig von der gesetztn variable ein unterschiedliches stylesheet laden.
index.tpl:
Code: Select all
<link rel="stylesheet" type="text/css" href="{$head_link_stylesheet}" />
<link rel="stylesheet" type="text/css" href="{$serendipityBaseURL}templates/{$template}/{$banner_stylesheet}" />
config.inc.php:
Code: Select all
$hour_of_day = date("H");
$day_of_remember = date("d.m");
$day_time_banner = "day.css";
if ($hour_of_day <=7 or $hour_of_day >=12) {
$day_time_banner="night.css";
}
if($day_of_remember =="08.01") {
$day_time_banner="anniversary.css";
}
$serendipity['smarty']->assign('banner_stylesheet', $day_time_banner);
day.css:
Code: Select all
...
background:#FCFCFC url(img/day.jpg) bottom left no-repeat;
...
night.css:
Code: Select all
...
background:#FCFCFC url(img/night.jpg) bottom left no-repeat;
...
anniversary.css:
Code: Select all
...
background:#FCFCFC url(img/anniversary.jpg) bottom left no-repeat;
...
Grüße,
Garvin
Posted: Sun Apr 15, 2007 12:13 am
by MagicV
Hmm, mal sehen was ich da wieder fabriziert habe...
Ich bekomme jetzt nur noch einen Teil der Grafiken angezeigt
Im Quelltext wird der Header wie folgt ausgegeben:
Code: Select all
<head>
<title>Vorsicht Schwul 2.0 </title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="Powered-By" content="Serendipity v.1.1" />
<link rel="stylesheet" type="text/css" href="http://vorsicht-schwul.magic-volker.de/index.php?/serendipity.css" />
<link rel="stylesheet" type="text/css" href="http://vorsicht-schwul.magic-volker.de/templates/magicheader/style.css" />
<link rel="alternate" type="application/rss+xml" title="Vorsicht Schwul 2.0 RSS feed" href="http://vorsicht-schwul.magic-volker.de/index.php?/feeds/index.rss2" />
<link rel="alternate" type="application/x.atom+xml" title="Vorsicht Schwul 2.0 Atom feed" href="http://vorsicht-schwul.magic-volker.de/index.php?/feeds/atom.xml" />
<script type="text/javascript">var lightbox_path = "/plugins/serendipity_event_lightbox/lightbox2";</script>
<script type="text/javascript" src="/plugins/serendipity_event_lightbox/lightbox2/prototype.js"></script>
<script type="text/javascript" src="/plugins/serendipity_event_lightbox/lightbox2/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="/plugins/serendipity_event_lightbox/lightbox2/lightbox2.js"></script>
<link rel="stylesheet" type="text/css" href="/plugins/serendipity_event_lightbox/lightbox2/lightbox2.css" />
<script type="text/javascript" src="http://vorsicht-schwul.magic-volker.de/index.php?/plugin/ls-js"></script><link rel="pingback" href="http://vorsicht-schwul.magic-volker.de/serendipity_xmlrpc.php" />
So weit ich das sehen kann, wird der Pfad zum stylesheet korrekt angegeben (templates/magicheader/style.css)
Jetzt kommt aber im weiteren HTML etwas das mich verwundert.
Es wird immer auf das Verzeichnis des Templates zurueckgegriffen, welches ich als Grundlage genommen habe.
Scheinbar wird der Teil {TEMPLATE_PATH} nicht aktualisiert, woran liegt es?
Posted: Sun Apr 15, 2007 11:44 am
by radarin
ein anderer ansatz wäre doch einfach direkt php-code ins template reinzuschreiben,
so wie ich es in meinem blog mache.
wie das geht kannst du hier nachlesen:
http://www.darin.ch/blog/blog.php?/arch ... iew=single
gruss rene
Posted: Sun Apr 15, 2007 12:15 pm
by MagicV
Irgendwie gefällt mir der Weg nicht so...
ich möchte ja soweit gehen, dass ich ueber die Template-Optionen nachher einen Aniversary-Termin verwalten kann, und die dazugehörige Grafik.
Bei deiner Variante sind ja auch generelle umstellungen (index.php>blog.php) notwendig.
Also nochmals die Frage: Wie ist die Variable noch auf dem Wert des "Ursprungs-Pfades"?
Posted: Sun Apr 15, 2007 12:17 pm
by yellowled
Just for the record: Ich meine mich zu erinnern, dass Matthew Groeninger für so etwas bereits »working code« hat und relativ händeringend jemanden sucht, der das Ganze optisch ein wenig »aufpäppelt«. Leider finde ich es auf die Schnelle bei Matt nicht, aber man könnte ihn einfach mal anmailen - allerdings sollte es auf Englisch erfolgen, wenn man eine Antwort möchte
YL
Posted: Sun Apr 15, 2007 3:40 pm
by garvinhicking
Hi Volker!
Äh, TEMPLATE_PATH wird nicht aktualisiert. Das wird ja auch im Code nirgends aufgegriffen. Wenn das alte Stylesheet auch geladen wird, ist es ja klar, dass bex da noch mit rumspielt...?!
Grüße,
Garvin
Posted: Sun Apr 15, 2007 4:12 pm
by MagicV
Garvin, Du verwirrst mich, aber endlos!
Wenn ich das Template in der ADMIN-Verwaltung von "Bex01" auf "MagicVolker" umstelle, dann sollte doch auch die TEMPLATE_PATH neu gesetz werden, oder nicht?
Diese Variable/Funktion muss doch irgendwann einmal laufen und ihren Wert "BEX01" bekommen haben.
Wenn ich auf ein anderes Template umstelle, muss diese Variable/Funtion doch auch den neuen Wert bekommen, aber wann und wie stelle ich das im Falle meines Templates sicher?
Posted: Sun Apr 15, 2007 5:20 pm
by garvinhicking
Hi!
Wenn ich das Template in der ADMIN-Verwaltung von "Bex01" auf "MagicVolker" umstelle, dann sollte doch auch die TEMPLATE_PATH neu gesetz werden, oder nicht?
Diese Variable/Funktion muss doch irgendwann einmal laufen und ihren Wert "BEX01" bekommen haben.
Ja...äh. Ich weiß nicht wovon Du sprichst. {TEMPLATE_PATH} wird in der style.css immer durch den aktuellen Templatepfad ersetzt. Wenn dort noch "bex" stehen sollte dann kann das nur passieren weil dieser Pfad irgendwo hartkodiert in der style.css vorkommt?!?
Grüße,
Garvin
Posted: Sun Apr 15, 2007 6:59 pm
by MagicV
Hi!
Ja...äh. Ich weiß nicht wovon Du sprichst. {TEMPLATE_PATH} wird in der style.css immer durch den aktuellen Templatepfad ersetzt. Wenn dort noch "bex" stehen sollte dann kann das nur passieren weil dieser Pfad irgendwo hartkodiert in der style.css vorkommt?!?
WIE passiert denn da die Zuweisung?
Bei mir steht weder etwas von Bex, noch sonstwas...
Kann es sein, dass es deswegen NICHT zu dieser Zuweisung kommt?
Posted: Sun Apr 15, 2007 7:49 pm
by garvinhicking
Hi!
WIE passiert denn da die Zuweisung?
Via serendipity.css.php, über diese Datei wird die style.css geparst.
Ich verstehe leider nur noch Bahnhof, vielleicht kannst Du nochmal ganz aufs wesentliche reduziert erklären wo das problem liegt, vielleicht finde ich dann deinen faden wieder
Grüße,
Garvin
Posted: Sun Apr 15, 2007 7:56 pm
by radarin
ob die indexseite nun 'index.php' oder 'blog.php' heisst, das ist s9y letztendlich schnurtzegal. ich habs lediglich geändert, weil ich in meinem spezivischen fall für den start eine url-variable generiert habe, welche ich mittlerweile auch nicht mehr benötige.
aber hauptsche du findest eine lösung um dein problem zu beheben.
gruss rene