Restaurant mit TagesMenu
Moderator: mikey
Restaurant mit TagesMenu
Ich meine, dass ich diese Webseite ganz ineteressant umgebaut/modernisiert habe.
Die Hauptsache war TagesMenu zeitgesteuert zu veröffentlichen und auf den kleinen Bildschirme ganz am Anfang zu stellen.
Die Zeitsteuerun ist durch ein Script besorgt (einige Variable habe ich in config und <language> erweitert)
Jetzt lohnt sicih das Effekt täglich (Mon-Fr) von 9:30 - 13:30 gut sehen.
Die Hauptsache war TagesMenu zeitgesteuert zu veröffentlichen und auf den kleinen Bildschirme ganz am Anfang zu stellen.
Die Zeitsteuerun ist durch ein Script besorgt (einige Variable habe ich in config und <language> erweitert)
Jetzt lohnt sicih das Effekt täglich (Mon-Fr) von 9:30 - 13:30 gut sehen.
Last edited by Tata on Fri Feb 10, 2017 4:35 pm, edited 1 time in total.
CMSimple.sk
It's no shame to ask for an answer if all efforts failed.
But it's awful to ask without any effort to find the answer yourself.
It's no shame to ask for an answer if all efforts failed.
But it's awful to ask without any effort to find the answer yourself.
Re: Restaurant mit TagesMenu
Gerade bin ich dazu gekommen, dass in dem bestimmten Fall würde ich noch brauchen, dass das Tagesmenu während Wochenende ausgeblendet sein sollte. Sonst am Samstag und Sontag scheint da das Freitagsmenu. Seit Morgen versuche ich es irgendwie hinkriegen, aber immer mache ich in Syntax etwas falsch.
Noch wollte ich eine "Ersatzseite hingeben, so dass die Zwei Seten am Freitag um "$hideTime" ändern Status "Publisched/Nonpublished". Das scheint nicht zu funktionieren. Die "Menuseite" bleibt sichtbar, egal ob "Publisched" oder "Nonpublished".
Es geht um folgendes:
1. Enweder nur den Skript korrekt zu schreiben, um das id="actual" DIV für Wochenende auszublenden, oder
2. Für den id="actual" DIV die zweite Seite (z.B. '000_denne_menu') zu definieren nur für Sam/Son.
Bitte, kann mir jemand damit helfen?
Code: Select all
</div>
<?php
$day_name=array('Nedeľa','Pondelok','Utorok','Streda','Štvrtok','Piatok','Sobota');
$time = time();
$showTime = strtotime($tx['template']['menu_od']);
$hideTime = strtotime($tx['template']['menu_do'], $showTime);
$day= strftime("%d");
$month = strftime("%m");
?>
<div class="day-time">
<?php echo $day_name[date('w')].", ".date($tx['today']['dateformat'])." hod.";?>
</div>
<div class="in">
<?php
if ($time < $showTime) {
echo '
<div align="center">'.$tx['template']['priprava_ponuky_pred'].'</div>';
} elseif ($time > $showTime && $time < $hideTime) {
echo '
<div class="actual" id="actual">'.newsbox('!!!_denne_menu').tag('br').'</div>';
} else {
echo '
<div align="center">'
.$tx['template']['priprava_ponuky_po']
.' o '
.date('H:i',strtotime("+0 minutes",$showTime)).'
</div>';
}
?>
</div>
Es geht um folgendes:
1. Enweder nur den Skript korrekt zu schreiben, um das id="actual" DIV für Wochenende auszublenden, oder
2. Für den id="actual" DIV die zweite Seite (z.B. '000_denne_menu') zu definieren nur für Sam/Son.
Bitte, kann mir jemand damit helfen?
CMSimple.sk
It's no shame to ask for an answer if all efforts failed.
But it's awful to ask without any effort to find the answer yourself.
It's no shame to ask for an answer if all efforts failed.
But it's awful to ask without any effort to find the answer yourself.
Re: Restaurant mit TagesMenu
Soweit ich es überblicke, sind die relevanten Zeilen:
Da müsste dann wohl nur eine Abfrage auf den Wochentag eingebaut werden:
Insgesamt wäre es aber besser den Code umzuschreiben; so wie er jetzt ist, ist er kaum lesbar und nur schwer wartbar. Eine Möglichkeit wäre alles in eine function tagesmenue() auszulagern, und diese dann wie andere Plugin-Aufrufe auch im Template aufzurufen.
Code: Select all
} elseif ($time > $showTime && $time < $hideTime) {
echo '
<div class="actual" id="actual">'.newsbox('!!!_denne_menu').tag('br').'</div>';
} else {
Code: Select all
} elseif ($time > $showTime && $time < $hideTime) {
if (in_array(date('w'), array(0, 6))) {
echo '
<div class="actual" id="actual">'.newsbox('WOCHENENDSEITE').tag('br').'</div>';
} else {
echo '
<div class="actual" id="actual">'.newsbox('!!!_denne_menu').tag('br').'</div>';
}
} else {
Last edited by cmb on Fri Feb 10, 2017 6:58 pm, edited 1 time in total.
Reason: Fix code
Reason: Fix code
Christoph M. Becker – Plugins for CMSimple_XH
Re: Restaurant mit TagesMenu
Etwa so habe ich es auch gehabt, aber auch jetzt bakomme ich ![Embarrassed :oops:](./images/smilies/icon_redface.gif)
Parse error: syntax error, unexpected 'else' (T_ELSE)
Ich fürchte es zu schaffen. Habe schon mal versucht es zum Plugin überschreiben, aber... nach vielen Stunden ...cmb wrote:Insgesamt wäre es aber besser den Code umzuschreiben; so wie er jetzt ist, ist er kaum lesbar und nur schwer wartbar. Eine Möglichkeit wäre alles in eine function tagesmenue() auszulagern, und diese dann wie andere Plugin-Aufrufe auch im Template aufzurufen.
![Embarrassed :oops:](./images/smilies/icon_redface.gif)
CMSimple.sk
It's no shame to ask for an answer if all efforts failed.
But it's awful to ask without any effort to find the answer yourself.
It's no shame to ask for an answer if all efforts failed.
But it's awful to ask without any effort to find the answer yourself.
Re: Restaurant mit TagesMenu
Ich glaube, da hat einfach ein } gefehlt. Ich habe es nun oben korrigiert.Tata wrote:Etwa so habe ich es auch gehabt, aber auch jetzt bakomme ichParse error: syntax error, unexpected 'else' (T_ELSE)
Christoph M. Becker – Plugins for CMSimple_XH
Re: Restaurant mit TagesMenu
Ich habe den Code "tabbiert", um die "}" richtig zu paren und habe auch die fehlende gefunden.
Jetzt gefählt dem Parser etwas neues
Soweit habe ich es durch Seite-Reiter mit Veröfftlichung-Zeitspanne besorgt. Und es ist wohl auch mehr praktisch, weill das Tagesmenu kann auch aus anderen verschiedenen Gründen ausfallen.
Die erste Lösung hatte einen Vorteil, dass man auf der WOCHENENDE Seite etwas geschrieben sein könnte.
Jetzt gefählt dem Parser etwas neues
.Parse error: syntax error, unexpected 'w' (T_STRING), expecting ',' or ';'...
Soweit habe ich es durch Seite-Reiter mit Veröfftlichung-Zeitspanne besorgt. Und es ist wohl auch mehr praktisch, weill das Tagesmenu kann auch aus anderen verschiedenen Gründen ausfallen.
Die erste Lösung hatte einen Vorteil, dass man auf der WOCHENENDE Seite etwas geschrieben sein könnte.
CMSimple.sk
It's no shame to ask for an answer if all efforts failed.
But it's awful to ask without any effort to find the answer yourself.
It's no shame to ask for an answer if all efforts failed.
But it's awful to ask without any effort to find the answer yourself.
Re: Restaurant mit TagesMenu
Im Prinzip könntest Du auch für die WOCHENENDE Seite einen entsprechenden Veröffentlichungszeitraum eintragen, und dann einfach beide Newsboxen anzeigen lassen (die jeweils unveröffentlichte erzeugt ja keine Ausgabe).Tata wrote:Soweit habe ich es durch Seite-Reiter mit Veröfftlichung-Zeitspanne besorgt. Und es ist wohl auch mehr praktisch, weill das Tagesmenu kann auch aus anderen verschiedenen Gründen ausfallen.
Die erste Lösung hatte einen Vorteil, dass man auf der WOCHENENDE Seite etwas geschrieben sein könnte.
Allerdings muss bei dieser Variante der Veröffentlichungszeitraum täglich (oder zumindest wöchentlich) korrigiert werden, soweit ich es überblicke. Nicht gerade benutzerfreundlich.
Ich habe noch mal Dein Schnipsel von weiter oben überarbeitet, und die gewünschte Weiche für Wochentage/Feiertage eingebaut:
Code: Select all
</div>
<?php
$day_name=array('Nedeľa','Pondelok','Utorok','Streda','Štvrtok','Piatok','Sobota');
$time = time();
$showTime = strtotime($tx['template']['menu_od']);
$hideTime = strtotime($tx['template']['menu_do'], $showTime);
$day= strftime("%d");
$month = strftime("%m");
?>
<div class="day-time">
<?php echo $day_name[date('w')].", ".date($tx['today']['dateformat'])." hod.";?>
</div>
<div class="in">
<?php if ($time < $showTime):?>
<div align="center"><?=$tx['template']['priprava_ponuky_pred']?></div>
<?php elseif ($time > $showTime && $time < $hideTime):?>
<?php if (in_array(date('w'), array(0, 6))):?>
<div class="actual" id="actual"><?=newsbox('WOCHENENDSEITE')?><br></div>
<?php else:?>
<div class="actual" id="actual"><?=newsbox('!!!_denne_menu')?><br></div>
<?php endif?>
<?php else:?>
<div align="center">
<?=$tx['template']['priprava_ponuky_po'], ' o ', date('H:i', $showTime)?>
</div>
<?php endif?>
</div>
Christoph M. Becker – Plugins for CMSimple_XH
Re: Restaurant mit TagesMenu
Ja, das funktioniert.
Ich habe es auch so versucht
und es funktioniert auch.
Aber auf der realen Webseite habe ich nur die "!!!_denne_menu'" Seite mit dem Zeitraum für (immer folgende Woche). So ist am Wochenende das Tagesmenu weg. Der Text darunter ist bisschen geändert, so dass es klappt jetzt ganz gut. Der Nachteil ist, dass während Festtage, die ausser Wochenende kommen, klappt das nicht. Faür bin ich entschieden noch eine Seite erstellen (z.B. !!!_denne_menu und !!_dene_menu). Es wird dann einfach, beide Seiten zu übernennen. Die !!-denne_menu wird dann für aktuelle Informationen benutzt und wird nach bedarf gezeigt.
Jedenfalls sind beide Varianten vorbereitet. Vielen Dank für die Hilfe. Wieder etwas zugelernt![Wink ;)](./images/smilies/icon_e_wink.gif)
Ich habe es auch so versucht
Code: Select all
<div class="in">
<?php
if ($time < $showTime) {
echo '
<div align="center">'.$tx['template']['priprava_ponuky_pred'].'</div>';
} elseif (($time > $showTime && $time < $hideTime) && (!in_array(date('w'), array(0, 6)))){
echo '
<div class="actual" id="actual">'.newsbox('!!!_denne_menu').tag('br').'</div>';
} else {
echo '
<div align="center">
<div class="actual" id="actual">'.newsbox('!!!_weekend_menu').tag('br').'</div>'
.$tx['template']['priprava_ponuky_po']
.' o '
.date('H:i',strtotime("+0 minutes",$showTime)).'
</div>';
}
?>
</div>
Aber auf der realen Webseite habe ich nur die "!!!_denne_menu'" Seite mit dem Zeitraum für (immer folgende Woche). So ist am Wochenende das Tagesmenu weg. Der Text darunter ist bisschen geändert, so dass es klappt jetzt ganz gut. Der Nachteil ist, dass während Festtage, die ausser Wochenende kommen, klappt das nicht. Faür bin ich entschieden noch eine Seite erstellen (z.B. !!!_denne_menu und !!_dene_menu). Es wird dann einfach, beide Seiten zu übernennen. Die !!-denne_menu wird dann für aktuelle Informationen benutzt und wird nach bedarf gezeigt.
Jedenfalls sind beide Varianten vorbereitet. Vielen Dank für die Hilfe. Wieder etwas zugelernt
![Wink ;)](./images/smilies/icon_e_wink.gif)
CMSimple.sk
It's no shame to ask for an answer if all efforts failed.
But it's awful to ask without any effort to find the answer yourself.
It's no shame to ask for an answer if all efforts failed.
But it's awful to ask without any effort to find the answer yourself.
Re: Restaurant mit TagesMenu
Ich habe mir nun die Frechheit erlaubt aus dem Skript ein Plugin zu machen. Ich habe noch einige Ideen, wie es noch bisschen pullieren, aber dafür brauche ich noch etwa nehr Frechheit zu sammeln, um noch tiefer zu blagieren.
Hier das Ergebniss: http://sitr_plugin.cmsimple.sk
Bitte, kommentieren.
Oder ein Hinweiss geben, wie noch eine Abfrage reizubekommen, die es konfigurierbar mach, ob die Wochenende auswertet wird oder nicht.
Hier das Ergebniss: http://sitr_plugin.cmsimple.sk
Bitte, kommentieren.
Oder ein Hinweiss geben, wie noch eine Abfrage reizubekommen, die es konfigurierbar mach, ob die Wochenende auswertet wird oder nicht.
CMSimple.sk
It's no shame to ask for an answer if all efforts failed.
But it's awful to ask without any effort to find the answer yourself.
It's no shame to ask for an answer if all efforts failed.
But it's awful to ask without any effort to find the answer yourself.
Re: Restaurant mit TagesMenu
Hm, die Seite zeigt mehrere Deprecated-Warnings an, was nicht sein sollte, siehe https://cmsimpleforum.com/viewtopic.php?f=2&t=12456.Tata wrote:Hier das Ergebniss: http://sitr_plugin.cmsimple.sk
Dazu brauchst Du zunächst eine Konfigurationsvariable, also z.B.:Tata wrote:Oder ein Hinweiss geben, wie noch eine Abfrage reizubekommen, die es konfigurierbar mach, ob die Wochenende auswertet wird oder nicht.
Code: Select all
$plugin_cf['sitr']['weekend']="1";
Code: Select all
}elseif (($time > $startTime && $time < $stopTime) && (!in_array(date('w'), array(0, 6)))){
Code: Select all
}elseif (($time > $startTime && $time < $stopTime) && (!$plugin_cf['sitr']['weekend'] || !in_array(date('w'), array(0, 6))))){
Code: Select all
Wochenende → kein Wochenendtag
PHP hat aber keinen Operator für logische Implikation, so dass man die folgende Equivalenz ausnutzen sollte:
Code: Select all
Wochenende → kein Wochenendtag ⇔ !Wochenende || kein Wochenendtag
Dann könnte man noch folgendes De Morgansches Gesetz anwenden, was den Code vielleicht etwas besser lesbar macht:
Code: Select all
!A || !B ⇔ !(A && B)
Code: Select all
} elseif (isMenuTime($time) && !isWeekend()) {
Christoph M. Becker – Plugins for CMSimple_XH