Zufallswiedergabe

Diskussion zum Modul Latest-News für ConPresso 4.
fab
ConPresso-Newbie
Beiträge: 20
Registriert: 05.10.2005 14:15
Danksagung erhalten: 1 Mal

Zufallswiedergabe

Beitrag von fab »

Hallo semf,

ich möchte das Latest-News Modul verwenden, um zufällig vier Artikel aus verschiedenen Rubriken anzeigen zu lassen.

Wenn ich das Prinzip richtig verstanden habe, sucht das Modul zufällig einen Artikel heraus und stellt diesen mit den nächsten 3 Artikel dieser Rubrik dar.

Wenn der Zufall nun aber auf einen der ersten drei eingestellten Artikel fällt, werden weniger als vier dargestellt. So kann es vorkommen, dass nur 1 bis 3 Artikel ausgelesen werden.

Ist es möglich, dass immer vier Artikel angezeigt werden?
Dann müsste vielleicht das Auslesen wiederholt werden, bis man 4 Artikel erreicht hat?!?!

(Einstellungen: "Navigation aktiviert" und "Artikel pro Seite: 4")
Benutzeravatar
semf
Modul-Entwickler
Beiträge: 1853
Registriert: 01.01.1970 01:00
Wohnort: Gütersloh-Friedrichsdorf
Hat sich bedankt: 14 Mal
Danksagung erhalten: 40 Mal
Kontaktdaten:

Beitrag von semf »

hmm, kann ich jetzt so aus dem stand wenig zu sagen. als workaround
evtl. mal vier profile mit jeweils einem artikel aus einer rubrik mittels
index_php.php untereinander setzen. ungetestet!
Viel Erfolg!

Module ConPresso 4.x
Latest News
Tell-a-friend

Module ConPresso 3.4.x
Index_X
Kontakt
RSS-Feed
Umfrage
Gästebuch
Tell-a-Friend

Modul-Download
fab
ConPresso-Newbie
Beiträge: 20
Registriert: 05.10.2005 14:15
Danksagung erhalten: 1 Mal

Beitrag von fab »

Hi semf,

danke für die Antwort. Dein Workaround habe ich ausprobiert und würde auch funktionieren.
Find ich aber etwas unschön, außerdem könnte der Zufall dann auch auf den selben Artikel fallen :wink:

Bin der Sache aber dann noch auf den Grund gegangen und habe was Interessantes entdeckt.

Der Zufall wird wohl anhand der Artikel-ID der betroffenen Rubriken ausgewählt. Wenn nun die maximale Artikelanzahl auf bspw. 4 gestellt wird und der Zufall auf die niedrigste Artikel-ID dieser Rubriken fällt, kommt nur ein Artikel. Die Abfrage müsste wohl die maximale Anzahl berücksichtigen und dementsprechend die Artikel ausgeben.
Bsp.: bei max. 4 Artikel dürfte der Zufall nur auf die viertniedrigste ID fallen, so dass auch 4 Artikel ausgegeben werden können.

Bin mal gespannt, ob ich mehr oder weniger richtig liege ... :roll:
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Jetzt verstehe ich, warum bei mir die Datei "Newsticker_(vertikal).txt" nach jedem Aufruf von makefile.php unterschiedlich groß ist und dementsprechend eine unterschiedliche Anzahl "Latest News" enthält.
Unter Zufallswiedergabe hätte ich eher eine zufällige Reihenfolge der gefundenen Artikel vermutet denn eine zufällige Anzahl und Auswahl von Artikeln.
Außerdem heißt dies ja, dass nur beim Ausführen der makefile.php eine zufällige Auswahl der Latest News erfolgt. Das hatte ich mir bisher so noch nicht klar gemacht.
Eigentlich hatte ich vor, den Aufruf von makefile.php mit dem Ausloggen vom Backend zu koppeln (wie das geht: http://community.conpresso.de/viewtopic.php?t=2915), da ich keine Cronjobs einsetzen kann.

Jetzt die eigentliche Frage: Gibt es eine gute Möglichkeit, wie ich - bei gutem Zeitverhalten - makefile.php öfters aufrufen lassen kann?
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

Hi Magpie,

Ich bin mit dem Thema nicht ganz vertraut, aber ich denke sowas koennte funktionieren:

Code: Alles auswählen

$filename = 'Newsticker_(vertikal).txt';
$maxSekundenAlt = 5*60; // 5 Minuten
if (file_exists($filename) && time()-filemtime($filename)>$maxSekundenAlt) {
    include('makefile.php');
}
Das prueft ob das Alter der Datei in $filename den Wert $maxSekundenAlt ueberschreitet und ruft in dem Fall makefile.php auf.

Sowas koennte man z.B. in den globalen Header oder aehnliches einbauen.

Balu
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Erstmal vielen Dank Balu,

diese Lösung hilft ersteinmal, die Serverlast erheblich zu reduzieren.
Leider besteht aber dennoch das "Problem", dass die Zusammenstellung der Latest News bei aktivierter "Zufallswiedergabe" erheblich in der Anzahl News variiert.

Ich habe übrigens deine Lösung etwas generalisiert, da ja das Modul-Verzeichnis bei jedem Projekt anders sein kann:

Code: Alles auswählen

$mod_latest_news_dir = $activeModules['Latest News']['directory'];
$filename = CPO_BASEDIR.$mod_latest_news_dir.'/Newsticker_(vertikal).txt';
$maxSekundenAlt = 5*60; // 5 Minuten
if (file_exists($filename) && time()-filemtime($filename)>$maxSekundenAlt) {
include(BASE_ABS.$mod_latest_news_dir.'/makefile.php');
}
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

... es sieht (für mich) so aus, als wenn beim Aufruf von makefile.php die Profil-ID nicht weggelassen werden kann. Deshalb muss der obige Code geändert werden zu: (Änderungen fett)

Code: Alles auswählen

$mod_latest_news_dir = $activeModules['Latest News']['directory'];
$filename = CPO_BASEDIR.$mod_latest_news_dir.'/Newsticker_(vertikal).txt';
$maxSekundenAlt = 5*60; // 5 Minuten
if (file_exists($filename) && time()-filemtime($filename)>$maxSekundenAlt) {
include(BASE_ABS.$mod_latest_news_dir.'/makefile.php[b]?profid=4[/b]');
}
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

Das liegt daran wenn man statt mittels CPO_BASEDIR einen http-include mittels BASE_ABS macht. Dann fehlen natürlich die Rubrikinformationen, die man für die Benutzung der Alias-Funktion benötigt.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

ich dachte, das müsste so gemacht werden, da es in den Moduleinstellungen heißt, makefile.php sollte mit

Code: Alles auswählen

include("http://www.internate-vdp.de/mod_latest_news/makefile.php?profid=4");
aufgerufen werden, also als http-include.

Wahrscheinlich habe ich nur noch nicht verstanden, was der Unterschied zwischen BASE_ABS und CPO_BASEDIR genau ist - oder ich sitz' auf der Leitung.

Dennoch vielen Dank und noch einen ruhigen Sonntag
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

Mr. Magpie hat geschrieben:Wahrscheinlich habe ich nur noch nicht verstanden, was der Unterschied zwischen BASE_ABS und CPO_BASEDIR genau ist - oder ich sitz' auf der Leitung.
Mit einem echo davor erfährt man es.
BASE_ABS ist die absolute URL des Projektes
CPO_BASEDIR ist die Pfadangabe auf dem Server

Die Angabe einer Profil-ID ist natürlich nötig bei einem http-include.
Bei einem normalen include ist die Rubrik ja bekannt und kann über den Rubrikalias genutzt werden.
Allerdings habe ich dies nicht für makefile getestet sondern nur für die normalen Latest-News-Ausgaben.

Kann also auch alles falsch sein. Und wenn es als http-include funzt, dann ist ja gut.

Ich hatte mich ja auch nur auf
... es sieht (für mich) so aus, als wenn beim Aufruf von makefile.php die Profil-ID nicht weggelassen werden kann.
bezogen. Wenn man dann natürlich weiß, daß
es in den Moduleinstellungen heißt, makefile.php sollte mit Code:

Code: Alles auswählen

include("http://www.internate-vdp.de/mod_latest_news/makefile.php?profid=4");

aufgerufen werden
dann sieht es für mich auch so aus.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Dann lag ich wohl instinktiv richtig. :)

Vielen Dank
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Mr. Magpie hat geschrieben:Leider besteht aber dennoch das "Problem", dass die Zusammenstellung der Latest News bei aktivierter "Zufallswiedergabe" erheblich in der Anzahl News variiert.
Ich möchte gerne dieses Thema wieder anpacken. Was muss ich wo ändern, damit nicht eine zufällige Artikelanzahl erscheint?
Günther Ludwig
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

Aus meiner Sicht wird keine reine Zufallswiedergabe erzeugt sondern es wird lediglich ein zufälliger Startpunkt gewählt, ab dem dann die gewünschte Anzahl ausgegeben wird. Daher kann es bei einem Start kurz vor Ende der Artikelliste zu geringeren Anzahlen kommen.

Wenn man keine "echte" Zufallswiedergabe benötigt, dann könnte man in index.inc.php den Teil

Code: Alles auswählen

//Random-Mode
if ($arrSettings['randommode']==1) {
	$_GET['pos'] = rand($arrSettings['startposition'], $numberOfNews-1);
}
ersetzen durch

Code: Alles auswählen

//Random-Mode
if ($arrSettings['randommode']==1) {
	$_GET['pos'] = rand($arrSettings['startposition'], $numberOfNews-$arrSettings['articlespersite']-1);
}
wobei ich nicht getestet habe ob dann die -1 da noch benötigt wird...
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Hallo Markus, leider funktioniert das nicht. Ich hab' die Codeersetzung an beiden Vorkommen in _includes/index.inc.php gemacht. Mit dem Ergebnis, dass die Anzahl der Ticker-Meldungen immer noch sehr stark schwankt.

Dann hab' ich entdeckt, dass auch makefile.php den gleichen Zufallscode zweimal enthält und auch diesen dann mit deinem Vorschlag ersetzt.
Nun ist der Zufall völlig eliminiert :-( - es wird immer dieselbe Anzahl an Artikeln in genau derselben Reihenfolge getickert.

Daher versuchsweise den ursprünglichen Code in _includes/index.inc.php wiederhergestellt: Macht keinen Unterschied, Anzahl und Reihenfolge der Ticker-Meldungen bleibt starr.
Günther Ludwig
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

Schade daß ich selbst keinen Webauftritt habe an dem man das betrachten könnte. Über die ausgegebenen Artikel könnte man vielleicht auf das Verhalten schließen... :roll:
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Antworten