"Interaktives" Template möglich?

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
MagicV
Regular
Posts: 159
Joined: Wed Apr 11, 2007 8:44 am
Contact:

"Interaktives" Template möglich?

Post 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
Image
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: "Interaktives" Template möglich?

Post 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
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
MagicV
Regular
Posts: 159
Joined: Wed Apr 11, 2007 8:44 am
Contact:

Post 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
Image
MagicV
Regular
Posts: 159
Joined: Wed Apr 11, 2007 8:44 am
Contact:

Post 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
Image
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post 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
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
MagicV
Regular
Posts: 159
Joined: Wed Apr 11, 2007 8:44 am
Contact:

Post 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.

Code: Select all

/templates/bex01/img/bexmag.gif
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?
Image
radarin
Regular
Posts: 150
Joined: Sat Nov 25, 2006 5:33 pm
Location: St.Gallen/Schweiz
Contact:

Post 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
www.darin.ch - blog.darin.ch - rad.darin.ch
MagicV
Regular
Posts: 159
Joined: Wed Apr 11, 2007 8:44 am
Contact:

Post 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"?
Image
yellowled
Regular
Posts: 7111
Joined: Fri Jan 13, 2006 11:46 am
Location: Eutin, Germany
Contact:

Post 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 :wink:

YL
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post 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
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
MagicV
Regular
Posts: 159
Joined: Wed Apr 11, 2007 8:44 am
Contact:

Post 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?
Image
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post 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
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
MagicV
Regular
Posts: 159
Joined: Wed Apr 11, 2007 8:44 am
Contact:

Post 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?
Image
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post 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
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
radarin
Regular
Posts: 150
Joined: Sat Nov 25, 2006 5:33 pm
Location: St.Gallen/Schweiz
Contact:

Post 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
www.darin.ch - blog.darin.ch - rad.darin.ch
Post Reply