Textpattern CMS support forum
You are not logged in. Register | Login | Help
- Topics: Active | Unanswered
#1 2013-07-11 18:53:10
- phuture303
- Member
- Registered: 2008-09-14
- Posts: 127
[de-de] custom fields im Wochenrhythmus "wechseln"
Hallo zusammen,
ich versuch es erst mal auf deutsch, das ist schon kompliziert genug :-) Also, folgendes:
Ich betreue die Website eines Kinos, dessen Filmprogramm immer Donnerstags wechselt (die sogenannte Kinowoche geht von Donnerstag bis Mittwoch). Immer Dienstags pflege ich die Daten/Filme/Zeiten für die kommende Kinowoche ein. Die Infos pro Film sehen also bspw. so aus (vereinfacht/verkürzt):
Artikel: Musterfilm
custom field “Zeiten aktuelle Kinowoche Donnerstag” => 15:00 + 17:00 + 19:00
custom field “Zeiten aktuelle ktuelle Kinowoche Freitag” => 15:00 + 17:00 + 19:00 + 21:00
custom field “Zeiten aktuelle ktuelle Kinowoche Samstag” => 15:00 + 17:00 + 19:00 + 21:00
usw.
Wenn der Film auch in der darauffolgenden Kinowoche läuft, werden am Dienstag zusätzliche custom fields gefüllt – z.B.
Artikel: Musterfilm
custom field “Zeiten nächste Kinowoche Donnerstag” => 17:00
custom field “Zeiten nächste Kinowoche Freitag” => 19:00
custom field “Zeiten nächste Kinowoche Samstag” => 17:00
Das funktioniert prächtig, die Seite läuft seit Jahren stabil mit Textpattern und ich bin total happy damit. Aber vielleicht kann man noch besser werden, denn: Immer Mittwoch abends nach Beginn der letzten Vorstellung gegen 22 Uhr kopiere ich für alle Filme, die dann ab Donnerstag laufen, die Infos aus den “Nächste Woche”-custom fields in die “Aktuelle Woche”-custom fields, da diese dann ja ab Donnerstag gelten. Das geht mittlerweile recht fix, aber dennoch nicht ganz ohne Umstände…
Die Idee, dir mir nun durch den Kopf gegangen ist: Vielleicht ist es möglich, custom fields “automatisierter” zu nutzen – also nicht in “aktuelle” und “nächste Kinowoche” zu separieren, sondern bspw. in “odd” und “even”. Somit würde die Aktualisierung am Mittwoch Abend wegfallen, denn jeweils donnerstags würde im Wechsel eine Woche mal auf die odd-fields und mal even-fields zurückgegriffen (und die entsprechenden “zukünftigen” Zeiten müsste ich nur dienstags aktualisieren. Das wollte ich über einen PHP-Timestamp o.ä. und dann mit TXP-Variablen lösen, aber da gibt’s einen Haken: Es gibt nicht konsequent immer 52 Kalender- bzw. Kinowochen, sondern auch mal 53. Und nach 53 folgt 1, ich käme mit der Prüfung von “gerader” und “ungerader” Woche im sauberen Wechsel also nicht weiter.
Das ist alles erst mal graue Theorie, der Relaunch der Website findet noch nicht morgen statt :-) Aber vielleicht hat jemand schon mal eine Idee oder einen Tipp, den ich mir mal näher anschauen kann.
Bei Fragen: gerne melden, ich erläutere das gerne weiter, wenn ich mich unklar ausgedrückt habe :-)
Besten Dank & viele Grüße
David
Offline
#2 2013-07-11 19:59:32
- uli
- Moderator
- From: Cologne
- Registered: 2006-08-15
- Posts: 4,310
Re: [de-de] custom fields im Wochenrhythmus "wechseln"
Bei Datumsrechnungen platzt mir regelmäßig der Schädel, deswegen würde ich es anders angehen:
<script type="text/javascript">
$("#custom-2").click(function () {
$("#custom-2").val($("#custom-1").val());
});
</script>
… überträgt beim Klicken in cf2 den Wert aus cf1 in cf2.
Aber das soll nun keinen davon abhalten, die odd/even Rechnerei gerade zu bekommen. Das Script würde ja schließlich auch dabei von Nutzen sein.
Edit: Merke gerade, dass das nicht so rundum praktikabel sein muss.
Brauchbarer, weil es einem etwas mehr Bewegungsfreiheit lässt:
<script type="text/javascript">
$("#custom-2").keydown(function(e) {
if (e.which == 17) {
$("#custom-2").val($("#custom-1").val());
}
});
</script>
Nur wenn du in cf-2 bist und dabei ctrl drückst, wird übernommen. Ansonsten passiert nichts, du kannst also hierbei frei in allen Feldern rumeditieren/klicken/tabben.
Last edited by uli (2013-07-11 20:24:48)
In bad weather I never leave home without wet_plugout, smd_where_used and adi_form_links
Offline
#3 2013-07-12 06:50:36
- phuture303
- Member
- Registered: 2008-09-14
- Posts: 127
Re: [de-de] custom fields im Wochenrhythmus "wechseln"
Hallo Uli,
das ist zwar tatsächlich ein ganz anderer Ansatz, aber wirklich interessant – und wäre ja im aktuellen Stadium schon eine größere Arbeitserleichterung, die ich bei Gelegenheit gerne mal ausprobiere. Wo muss ich den den JS-Code genau einbauen, dass es so funktioniert?
Die ursprüngliche Fragestellung bleibt noch offen für Tipps & Tricks :-)
Offline
#4 2013-07-12 12:49:31
- uli
- Moderator
- From: Cologne
- Registered: 2006-08-15
- Posts: 4,310
Re: [de-de] custom fields im Wochenrhythmus "wechseln"
Falls du schon bot_write_tab_customize installiert hast, geht es darüber am einfachsten. Auf dessen Seite in den Extensions gibt es ein “Additional JavaScript”-Feld, in das du das Script stellst.
Darüber hinaus Oder du kannst den Code in dein textpattern.js (im “textpattern” Ordner) einfügen, vor dem allerletzten });
, dann aber mit einem Zusatz:
if($('#page-article').length) {
$("#custom-2").keydown(function(e) {
if (e.which == 17) {
$("#custom-2").val($("#custom-1").val());
}
});
}
Wobei if($('#page-article').length)
abfragt, ob du im Write-panel bist, so dass keine anderen Seiten davon betroffen sein können.
Auch die Kombination von stm_javascript und jmd_admin_js ist möglich. Dann sind Updates weniger fummelig als wenn es im textpattern.js steht, und du kannst überall im Admin seitenspezifische Scripte ablaufen lassen, bot_wtc hilft da nur auf dem Write panel.
Last edited by uli (2013-07-12 12:50:34)
In bad weather I never leave home without wet_plugout, smd_where_used and adi_form_links
Offline
#5 2013-07-20 08:27:01
- phuture303
- Member
- Registered: 2008-09-14
- Posts: 127
Re: [de-de] custom fields im Wochenrhythmus "wechseln"
Hallo Uli,
herzlichen Dank für deinen Tipp, das funktioniert wunderbar mit meinen über 20 Custom fields. Das erleichtert mir die Kopiererei der Werte ungemein, damit ist die Mittwochs-Arbeit deutlich schneller erledigt! Ich kaue immer noch auf dem Ursprungsproblem herum, aber bis dahin werde ich fleißig das Script nutzen. Toll :-)
Viele Grüße
David
PS: Die Variante mit bot_write_tab_customize verwendet, das läuft super.
Last edited by phuture303 (2013-07-20 08:27:48)
Offline
#6 2013-07-21 13:05:34
- uli
- Moderator
- From: Cologne
- Registered: 2006-08-15
- Posts: 4,310
Re: [de-de] custom fields im Wochenrhythmus "wechseln"
Schön, dass es so gut klappt!
Zu deiner Anfangsfrage: du musst ja nicht die KWs als Rückbezug nehmen, aber dein Denkansatz an sich ist doch brauchbar. Setz einfach ein fixes Datum X als Ankerpunkt deiner Berechnungen. Von dem ausgehend lässt sich dann ermitteln, ob sich die Wochenzahl seit X durch zwei teilen lässt.
In bad weather I never leave home without wet_plugout, smd_where_used and adi_form_links
Offline
#7 2013-07-22 09:44:10
- phuture303
- Member
- Registered: 2008-09-14
- Posts: 127
Re: [de-de] custom fields im Wochenrhythmus "wechseln"
Zu deiner Anfangsfrage: du musst ja nicht die KWs als Rückbezug nehmen, aber dein Denkansatz an sich ist doch brauchbar. Setz einfach ein fixes Datum X als Ankerpunkt deiner Berechnungen. Von dem ausgehend lässt sich dann ermitteln, ob sich die Wochenzahl seit X durch zwei teilen lässt.
Hey, das ist doch mal ein wohlklingender Ansatz – dann muss ich mich um die Jahreswechsel ja gar nicht kümmern. Ich kau’ mal drauf rum, danke! :-)
Last edited by phuture303 (2013-07-22 09:44:31)
Offline
#8 2013-07-22 11:07:18
- phuture303
- Member
- Registered: 2008-09-14
- Posts: 127
Re: [de-de] custom fields im Wochenrhythmus "wechseln"
So hab ich mir das irgendwie zusammengebastelt :-)
<txp:variable name="oddeven" value='<txp:php>
$date1 = "17.07.2013";
$date2 = date("d.m.Y");
$diff = abs(strtotime($date1) - strtotime($date2));
$weeks = $diff / (7 * 24 * 60 * 60);
if (ceil($weeks) % 2 !=0)
{echo "odd";}
else
{echo "even";}
</txp:php>' />
<txp:if_variable name="oddeven" value="odd">it's odd!<txp:else />it's even!</txp:if_variable>
Keine Ahnung, ob das noch stillvoller geht, aber es scheint zu funktionieren :-)
UPDATE: nein, leider doch noch nicht perfekt. Ich arbeite dran…
UPDATE 2: Blöder Denkfehler: Ich muss $date 1 auf einen Mittwoch setzen, wenn ich die wechselnden Wochen (gerade/ungerade) immer auf den Donnerstag legen will. In meinen Augen ist’s von Donnerstag -> Donnerstag über eine Woche (da 8 Tage), aber rechnerisch kommen in der Subtraktion (also bspw. 25.7. minus 18.7.) nur 7 Tage raus, wenn ich $date1 auf einen Donnerstag lege. Und dann haut’s mit dem Donnerstags-Wechsel nicht hin…
Last edited by phuture303 (2013-07-22 11:31:48)
Offline
#9 2013-07-22 12:44:26
- uli
- Moderator
- From: Cologne
- Registered: 2006-08-15
- Posts: 4,310
Re: [de-de] custom fields im Wochenrhythmus "wechseln"
phuture303 wrote
aber rechnerisch kommen in der Subtraktion (also bspw. 25.7. minus 18.7.) nur 7 Tage raus, wenn ich $date1 auf einen Donnerstag lege.
Sowas meinte ich oben mit “Schädel platzen”. (Oder: Aufrunden? Abrunden? Reicht automatisches Runden?) Ich hab Respekt vor den Jungs, die irgendwo den Umgang mit lokalen Zeitzonen plus Sommer-/Winterzeiten einprogrammieren und dabei noch berücksichtigen müssen, dass Server überall auf der Welt stehen können, und dann dort eventuell am aktuellen Datum kein Wechsel von SZ auf WZ stattfindet {:P
In bad weather I never leave home without wet_plugout, smd_where_used and adi_form_links
Offline
#10 2013-07-22 12:57:27
- uli
- Moderator
- From: Cologne
- Registered: 2006-08-15
- Posts: 4,310
Re: [de-de] custom fields im Wochenrhythmus "wechseln"
Was mich übrigens interessieren würde: steht in deiner TXP-Variablen tatsächlich irgendwann mal odd
und sonst nichts?
Oder wäre es immer
odd
also mit zahlreichen Returns? D.h. müsstest du eventuell die Berechnung auf einer Zeile schreiben um potentielle Returns rauszubekommen und hast bei deinen Tests momentan einfach das Glück, dass es hinkommt, weil deine TXP-Variable automatisch von even
ausgeht, wenn nicht odd
ist?
Last edited by uli (2013-07-22 12:58:18)
In bad weather I never leave home without wet_plugout, smd_where_used and adi_form_links
Offline
#11 2013-07-22 13:16:05
- phuture303
- Member
- Registered: 2008-09-14
- Posts: 127
Re: [de-de] custom fields im Wochenrhythmus "wechseln"
uli schrieb:
Was mich übrigens interessieren würde: steht in deiner TXP-Variablen tatsächlich irgendwann mal
odd
?
Jau – immer im wöchentlichen Wechsel: ood
oder even
:-)
Ich rechne nach deinem Vorschlag die Tages-Differenz zwischen heute und einem festgelegten Tag (hier: Mittwoch, der 17.07.2013). Aus der Anzahl der Tage berechne ich dann die Anzahl der Wochen, das kann bei z.B. 10 Tagen ja ein krummer Wert sein. Dieser Wert wird immer aufgerundet (ceil
). Nach obigen Beispiel befindet ich mich in also jetzt gerade Woche 1 (odd) (es wird heute von Null-komma-irgendwas auf 1 aufgerundet). Überschreite ich nun die 1. Woche, ergibt die Berechnung 1-Komma-irgendwas, das auf 2 aufgerundet wird (even). Und so sollte es nach meinem Verständnis auch immer weiter gehen (hoffentlich :-)
Anders formuliert: Wenn ich das Start-Datum vom 17.07. einfach mal auf den 10.07. verschiebe, befinde ich mich jetzt in der even-Woche (da Wert = 2).
So könnte ich nun mit der Variable wochenweise auf ein bestimmtes Set an custom-fields verweisen. Ich werde es im Herbst beim Relaunch merken :-)
UPDATE: Mann, jetzt hab ich deine Frage erst verstanden :-) Aber obiges war gut noch mal für mein eigenes Verständnis. Also, nein: Ich habe keine Probleme mit zusätzlichen Zeilen, die werden scheinbar ignoriert, wenn sie denn überhaupt da wären. Vor meinem Script steht aber notextile.
im Testartikel, vielleicht habe ich daher keine Zeilenumbrüche.
Und schon wieder ein Update, muss die Hitze sein: Uli, du hast recht – sobald ich das in das Variable-Konstrukt baue, muss ich das PHP-Script ohne Zeilenumbrüche schreiben, sonst klappt das tatsächlich nicht:
notextile. <txp:variable name="oddeven" value='<txp:php>$date1 = "17.07.2013";$date2 = date("d.m.Y");$diff = abs(strtotime($date1) - strtotime($date2));$weeks = $diff / (7 * 24 * 60 * 60);if (ceil($weeks) % 2 !=0){echo "odd";}else
{echo "even";}</txp:php>' />
<txp:if_variable name="oddeven" value="odd">it's odd!<txp:else />it's even!</txp:if_variable>
Nicht schön, aber funktionert dann wohl…
Last edited by phuture303 (2013-07-22 13:23:03)
Offline