ConPresso Community

Fragen, Antworten, Diskussionen rund um das Content Management System ConPresso

 
Zufallswiedergabe
Gehe zu Seite 1, 2  Weiter
 
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> Modul Latest-News (ConPresso 4)
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
fab
ConPresso-Newbie


Anmeldungsdatum: 05.10.2005
Beiträge: 20

BeitragVerfasst am: 09.08.2006 15:19    Titel: Zufallswiedergabe Antworten mit Zitat

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")
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
semf
Modul-Entwickler


Anmeldungsdatum: 01.01.1970
Beiträge: 1853
Wohnort: Gütersloh-Friedrichsdorf

BeitragVerfasst am: 09.08.2006 20:26    Titel: Antworten mit Zitat

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
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
fab
ConPresso-Newbie


Anmeldungsdatum: 05.10.2005
Beiträge: 20

BeitragVerfasst am: 14.08.2006 07:43    Titel: Antworten mit Zitat

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 ... Rolling Eyes
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 995
Wohnort: Wuppertal

BeitragVerfasst am: 22.02.2007 18:44    Titel: Antworten mit Zitat

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?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
balu
ConPresso-Entwickler


Anmeldungsdatum: 01.01.1970
Beiträge: 1745

BeitragVerfasst am: 23.02.2007 20:17    Titel: Antworten mit Zitat


 Hi Magpie,

Ich bin mit dem Thema nicht ganz vertraut, aber ich denke sowas koennte funktionieren:
php:
$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

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 995
Wohnort: Wuppertal

BeitragVerfasst am: 23.02.2007 22:46    Titel: Antworten mit Zitat


 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:

php:
$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');
}

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 995
Wohnort: Wuppertal

BeitragVerfasst am: 23.02.2007 23:28    Titel: Antworten mit Zitat


 ... 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)

php:
$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?profid=4');
}

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6994

BeitragVerfasst am: 24.02.2007 22:19    Titel: Antworten mit Zitat

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
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 995
Wohnort: Wuppertal

BeitragVerfasst am: 24.02.2007 23:03    Titel: Antworten mit Zitat

ich dachte, das müsste so gemacht werden, da es in den Moduleinstellungen heißt, makefile.php sollte mit
Code:
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
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6994

BeitragVerfasst am: 24.02.2007 23:11    Titel: Antworten mit Zitat

Mr. Magpie hat Folgendes 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
Zitat:
... 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ß
Zitat:
es in den Moduleinstellungen heißt, makefile.php sollte mit Code:
Code:
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
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 995
Wohnort: Wuppertal

BeitragVerfasst am: 24.02.2007 23:36    Titel: Antworten mit Zitat

Dann lag ich wohl instinktiv richtig. Smile

Vielen Dank
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 995
Wohnort: Wuppertal

BeitragVerfasst am: 03.08.2008 21:45    Titel: Antworten mit Zitat

Mr. Magpie hat Folgendes 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, amazingBytes webdesign   

Referenzen finden Sie hier: amazingBytes webdesign - Referenzen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6994

BeitragVerfasst am: 04.08.2008 09:12    Titel: Antworten mit Zitat

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:
//Random-Mode
if ($arrSettings['randommode']==1) {
   $_GET['pos'] = rand($arrSettings['startposition'], $numberOfNews-1);
}

ersetzen durch
Code:
//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
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 995
Wohnort: Wuppertal

BeitragVerfasst am: 04.08.2008 12:09    Titel: Antworten mit Zitat

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 Sad - 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, amazingBytes webdesign   

Referenzen finden Sie hier: amazingBytes webdesign - Referenzen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6994

BeitragVerfasst am: 04.08.2008 16:21    Titel: Antworten mit Zitat

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... Rolling Eyes
_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> Modul Latest-News (ConPresso 4) Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen