Wie gewünscht, eine kleine Anleitung, wie man den Mini-Kalender von
Calendarix in 4images integrieren kann.
DEMO: http://tinyurl.com/mtuyd6 [linke Spalte]
Einführung: Da ich eine Konzert-Bilddatenbank nutze, bietet sich ein Kalender an, der mit den Kategorien verknüpft ist. Außerdem soll das "Snippet" die Termine nicht auflisten, sondern schön in der monatlichen Kalenderübersicht anzeigen. Mit ein paar Tricks geht das mit Calendarix. Soviel vorweg: Ganz automatisch geht es nicht (die Termine und Links müssen manuell im Admin-Panel des Calendarix-Scripts eingetragen werden), aber wie in der Demo auf meiner Seite zu sehen ist, ist das Ergebnis durchaus brauchbar, und der Zusatz-Aufwand (pro Kategorie) dauert nur wenige Sekunden mehr. Bei Calendarix können wir als Zusatzangabe eine URL angeben, und dies nutzen wir als Trick aus.
1. Die Freeware
"Calendarix Basic" herunterladen2. Calendarix z.B. in den (neu erstellten) Ordner "events" im 4images-Rootverzeichnis entpacken, hochladen und das ganze (gemäß Readme)
installieren und
konfigurieren. Die entscheidenen Konfigurationsdateien sind "cal_config.inc.php" und "cal_db.inc.php". Damit dürfte der Standalone-Kalender funktionieren.
3. Zur Einbindung in 4 images verwenden wir die beigelegte "minical.php" (jetzt öffnen)
3.1 Oben den absoluten $urlpathtocal anpassen (z.B.
http://www.homepage.de/events/)
3.2 Damit Termine in Links umgewandelt werden, müssen wir die Ausgabe verändern (falls keine URL beim Termin vorliegt, dann wird kein Link ausgegeben). Suche...
if ($devtcnt!=0) {
// overlib line
echo "<a href=\"javascript:void(0);\" onmouseover=\"return overlib('";
echo "<table border=0 cellspacing=0 cellpadding=0 width=100%>" ;
while ($row = mysql_fetch_object($result)){
echo "<tr><td align=center valign=top>" ;
echo "<table class=eventborder cellspacing=0 cellpadding=0 width=100%><tr>";
if ($notimeentry==0) {
echo "<td align=center class=eventtimeborder valign=top>" ;
echo "<div class=smallcalevtime>";
if ($row->starttime=='') echo " " ;
else showtime($row->starttime,$row->endtime,1);
echo "</div>" ;
echo "</td>" ;
}
echo "<td align=left valign=top width=80% class=eventborder>" ;
echo "<div class=smallcalev>";
echo subquot(stripslashes($row->title));
echo "</div>" ;
echo "</td></tr>" ;
echo "</table>" ;
}
echo "</table>" ;
// overlib line
echo "',FGCOLOR,'$overlibbgclr',TEXTSIZE,'1',WIDTH,'120',VAUTO,HAUTO);\" onmouseout=\"return nd();\">";
}
und ersetze es mit folgendem Part:
if ($devtcnt!=0) {
// overlib line
while ($row = mysql_fetch_object($result)){
if ($row->url == "") {
echo "<div onmouseover=\"return overlib('"; }
else {
echo "<a href=\"".$row->url."\" Target=\"_top\" style=\"text-decoration:none;color:#000000;\" onmouseover=\"return overlib('";
}
echo "<table border=0 cellspacing=0 cellpadding=0 width=100%>" ;
echo "<tr><td align=center valign=top>" ;
echo "<table class=eventborder cellspacing=0 cellpadding=0 width=100%><tr>";
if ($notimeentry==0) {
echo "<td align=center class=eventtimeborder valign=top>" ;
echo "<div class=smallcalevtime>";
if ($row->starttime=='') echo " " ;
else showtime($row->starttime,$row->endtime,1);
echo "</div>" ;
echo "</td>" ;
}
echo "<td align=left valign=top class=eventborder>" ;
echo "<div class=smallcalev>";
echo subquot(stripslashes($row->title));
echo "</div>" ;
echo "</td></tr>" ;
echo "</table>" ;
}
echo "</table>" ;
// overlib line
echo "',FGCOLOR,'$overlibbgclr',TEXTSIZE,'1',WIDTH,'120',VAUTO,HAUTO);\" onmouseout=\"return nd();\">";
}
3.3 Damit der Link auch aus der Datenbank geholt wird, ersetze folgende Angabe
$query = "select id,user,title,url,starttime,endtime from ".$EVENTS_TB." left join ".$CAT_TB." on ".$EVENTS_TB.".cat=".$CAT_TB.".cat_id where day='$i' and month='$smmonth' and year='$smyear' and approved='1' " ;
mit
$query = "select id,user,title,starttime,endtime from ".$EVENTS_TB." left join ".$CAT_TB." on ".$EVENTS_TB.".cat=".$CAT_TB.".cat_id where day='$i' and month='$smmonth' and year='$smyear' and approved='1' " ;
3.4 Damit jeder Backlink zum eigentlichen Terminkalender verschwindet (wir also nur innerhalb der Box bleiben, bzw. nur Links zu den Kategorien anbieten) müssen wir den Monatslink löschen.
Suche daher
if ($viewcalok==1) {
echo "<a class=\"smallcalmth\" href=\"".$urlpathtocal."calendar.php?op=cal&month=".$smmonth."&year=".$smyear."\" target=\"_BASE\" >" ;
}
echo $mth[$smmonth] ;
if ($viewcalok==1) echo "</a> " ;
if ($showyear) echo " ".$smyear;
...und ersetze es mit:
if ($viewcalok==1) {
echo "" ;
}
echo $mth[$smmonth] ;
if ($viewcalok==1) echo "" ;
if ($showyear) echo " ".$smyear;
4. ENTWEDER die CSS-Datei (/themes/default.css) anpassen
ODER die vorhandene im Template verwenden. Bei letzterem musst Du natürlich die Angaben aus der default.css übernehmen und in der minical.php diesen Eintrag:
if (!$gotHeader) {
echo "<link href=\"themes/".$theme.".css\" rel=\"stylesheet\" type=\"text/css\" />\n";
z.B. durch diesen ändern:
if (!$gotHeader) {
echo "<link href=\"/templates/default/style.css\" rel=\"stylesheet\" type=\"text/css\" />\n";
...jetzt müsste die minical.php soweit fit sein, damit wir sie in 4images integrieren können.
5. Jetzt öffnen wir die home.html (und alle Templates, in denen wir den Kalender haben wollen), und fügen folgendes "Snippet" als Box (in die linke Spalte) ein:
<iframe src="events/minical.php" style="width:150px;height:113px;overflow:hidden;" marginheight="0" marginwidth="0" frameborder="0"frameborder="0" scrolling="no"></iframe>
Ggf. den Pfad und die Breiten und Längen anpassen.
Fertig.
Wenn wir nun einen Termin beim Kalender-Script eingeben (und den Link der jeweiligen Kategorie bei "URL" verwenden), erstrahlt 4images in einem etwas neuem Glanz. Die größte Fummelarbeit dürfte die Anpassung des Stylesheets sein.