Page 3 of 4

Re: Veröffentlichung jeden Tag im Zeitfenster

Posted: Tue Mar 24, 2020 3:37 pm
by cmss
Das letztere Script muss auf der Seite stehen, sonst gilt es für alle Seiten .
Ansonsten muss man das gleiche Template duplizieren.

Es geht auch mit nativem javascript :
function DateFunction() {
var d = new Date(); var n = d.getUTCDay();
document.getElementById("main").innerHTML = n; // main ist die ID des DIVs, in dem der ganze Inhalt steht
} var dx = document ... liefert 0 für Sonntag und 7 für Samstag
....................
function hourFunction() {
var d = new Date(); var o = d.getHours();
document.getElementById("main").innerHTML = o; -- > var hy = document... liefert genaue Stunde im Web

dann if dx nicht 0 oder 7 und hy gleichzeitig kleiner 9 und größer 11.... dann

window.document.location.href = "http://www.andereseite.com/"; Umlenkung
-- oder mit JS unsichtbar machen :
var xy = document.getElementById("main");
xy.getElementsByClassName("child")[1].style.opacity = "0";

Das script einfach mal im Footer der Seite in den Quelltext legen

Re: Veröffentlichung jeden Tag im Zeitfenster

Posted: Tue Mar 24, 2020 5:23 pm
by olape
cmss wrote:
Tue Mar 24, 2020 3:37 pm
Das letztere Script muss auf der Seite stehen, sonst gilt es für alle Seiten .
Ansonsten muss man das gleiche Template duplizieren.
Grundsätzlich richtig, man muss das Script nicht unbedingt laden, wenn es nicht benötigt wird.
Aber das tut der Funktion keinen Abbruch, da es ja auf

Code: Select all

<div id="time-based-content">
beschränkt ist.

cmss wrote:
Tue Mar 24, 2020 3:37 pm
Das script einfach mal im Footer der Seite in den Quelltext legen
Dabei passiert übrigens das Selbe, auch hier würde das Script auf jeder Seite geladen.

Man könnte die Einbindung des Scripts auch abhängig vom Seitennamen machen.
Das spart das zusätzliche Template.

Re: Veröffentlichung jeden Tag im Zeitfenster

Posted: Tue Mar 24, 2020 7:51 pm
by cmss
Das Skript gehört in den Quellkode einer Seite, am besten in den footer - dann wird es auch nur für die Seite aktiv (JS-DOM). Wer ganz sicher sein will, kann dem DIV eine einzigartige ID geben. Das einzige Problem bei JS ist, daß die Sperre bei abgeschaltetem Browswer-Js nicht funktioniert und auch daß die Zeit gleich der lokalen Zeit des Browsers ist. Bei europaweiter Nutzung wäre das ein Problem.

Re: Veröffentlichung jeden Tag im Zeitfenster

Posted: Tue Mar 24, 2020 8:05 pm
by olape
cmss wrote:
Tue Mar 24, 2020 7:51 pm
Das Skript gehört in den Quellkode einer Seite, am besten in den footer
Ja, genau, aber der footer steckt bei XH normalerweise im Template, ist also für alle Seiten gültig.
JS für eine einzelne Seite per Editor reinzufummeln wird schwer und ist nur mit Änderungen am Editor möglich.

Re: Veröffentlichung jeden Tag im Zeitfenster

Posted: Wed Mar 25, 2020 2:01 pm
by cmss
Die Diskussion ist zwar müssig, aber selbst im Tinyce gibt es den Punkt <> Quelltext - ein Grund für mich den Ckeditor zu benutzen, der hat auch ein Sicherheitstoken ( Ansonsten : Probieren, Hauptsache es funktioniert).
Bei Cmsimple muss man es evtl. über {{{ }}} einfügen, weil es sonst kein <script> im Quelltext akzeptiert.
$hjs .= "\n".'<script>.....

Re: Veröffentlichung jeden Tag im Zeitfenster

Posted: Wed Mar 25, 2020 3:40 pm
by olape
das in die userfuncs.php

Code: Select all

function daily_9to12_box() {
    $weekday = date('w', time()+(1*60*60));
    $hour = date('H', time()+(1*60*60));
    if((($weekday > 0) && ($weekday < 6))
    && (($hour >= 9) && ($hour < 12))) {
        return newsbox('daily');
    }
return false;
}
Die Zeit ist Serverzeit + 1h. Muss event. angepasst werden.
Jetzt eine versteckte Seite 'daily' anlegen und mit dem entsprechenden Inhalt belegen!
https://test.penschke.net/?daily

Dann bei der Seite, bei der der Inhalt von Mo - Fr. jeweils 9 - 12:00 angezeigt werden soll

Code: Select all

{{{daily_9to12_box();}}}
aufrufen!

https://test.penschke.net/?Mo-Fr_9to12

Re: Veröffentlichung jeden Tag im Zeitfenster

Posted: Wed Mar 25, 2020 5:33 pm
by lck
:) Super Olaf! Funktioniert.

Vorschlag, wenn die Newsbox außerhalb der eingestellten Zeit nicht angezeigt wird, wäre eine Einbindung einer 2ten Newsbox (hier als Beispiel 'daily info') mit einer kurzen Info hilfreich. Zum Beispiel "Der Inhalt dieser Seite ist nur von Montag bis Freitag von 9 - 12 Uhr sichtbar."

Code: Select all

function daily_9to12_box() {
    $weekday = date('w', time()+(1*60*60));
    $hour = date('H', time()+(1*60*60));
    if((($weekday > 0) && ($weekday < 6))
    && (($hour >= 9) && ($hour < 12))) {
        return newsbox('daily');
    } else {
	return newsbox('daily info');
	}
return false;
}
olape wrote:
Wed Mar 25, 2020 3:40 pm
Die Zeit ist Serverzeit + 1h. Muss event. angepasst werden.
Zu ändern bei $hour und $weekday, oder?

Re: Veröffentlichung jeden Tag im Zeitfenster

Posted: Wed Mar 25, 2020 5:44 pm
by olape

Code: Select all

function daily_9to12_box() {
    $weekday = date('w', time()+(1*60*60));
    $hour = date('H', time()+(1*60*60));
    if((($weekday > 0) && ($weekday < 6))
    && (($hour >= 9) && ($hour < 12))) {
        return newsbox('daily');
    }
return newsbox('daily info');
}
So sollte es noch kürzer gehen.
lck wrote:
Wed Mar 25, 2020 5:33 pm
Zu ändern bei $hour und $weekday, oder?
Ja, +(1*60*60) also jeweils + oder - und statt 1 die entsprechende Abweichung in h.

Re: Veröffentlichung jeden Tag im Zeitfenster

Posted: Wed Mar 25, 2020 5:57 pm
by lck
olape wrote:
Wed Mar 25, 2020 5:44 pm
...
So sollte es noch kürzer gehen.
Sehr schön, geht!

Re: Veröffentlichung jeden Tag im Zeitfenster

Posted: Wed Mar 25, 2020 8:36 pm
by olape

Code: Select all

time()+(1*60*60)
könnte man vielleicht noch als Variable setzen. Dann muss man nur eine Stelle ändern.

Code: Select all

function daily_9to12_box() {
    $time_correct = time()+(1*60*60);
    $weekday = date('w', $time_correct);
    $hour = date('H', $time_correct);
    if((($weekday > 0) && ($weekday < 6))
    && (($hour >= 9) && ($hour < 12))) {
        return newsbox('daily');
    }
return newsbox('daily info');
}