Artikelliste nach Hits
Artikelliste nach Hits
Hi, derzeit setze ich im Rahmen meiner Diplomarbeit ein Online-Zeitung mit Contenido um. Gerne möchte ich noch einen besonderen Dienst anbieten, der dem Besucher die Top X der meist gelesenen Artikel der letzten X Tage anzeigt. Hat jemand evtl. schon so ein Modul im Einsatz? Wenn nicht, hat jemand Lust und Zeit ein solches Modul zu schreiben? Ich bin dazu leider nicht in der Lage ...
Details zum Modul:
- Über den Input-Bereich lassen sich Tage eintragen, die berücksichtigt werden sollen
- Über den Input-Bereich kann die Anzahl der Artikel festgelegt werden
- Die Ausgabe erfolgt nach: 1., 2., 3., ...
Das Modul ist ja im Grunde ein Mix aus Artikelliste und der Abfrage der Tabelle der DB, in der die Hits gespeichert sind. Vielleicht lässt sich ja die Artikelliste von Kummer adaptieren. Ich würde mich sehr freuen, wenn mir jemand weiterhelfen könnte.
Schöne Grüße, maTTos
Details zum Modul:
- Über den Input-Bereich lassen sich Tage eintragen, die berücksichtigt werden sollen
- Über den Input-Bereich kann die Anzahl der Artikel festgelegt werden
- Die Ausgabe erfolgt nach: 1., 2., 3., ...
Das Modul ist ja im Grunde ein Mix aus Artikelliste und der Abfrage der Tabelle der DB, in der die Hits gespeichert sind. Vielleicht lässt sich ja die Artikelliste von Kummer adaptieren. Ich würde mich sehr freuen, wenn mir jemand weiterhelfen könnte.
Schöne Grüße, maTTos
-
- Beiträge: 5478
- Registriert: Di 2. Mär 2004, 21:11
- Wohnort: Halchter, wo sonst? ;-)
- Kontaktdaten:
ich habe ein aehnliches Modul geschrieben (muss irgendwo im Forum zu finden sein; wenn du nach 'haeufigste' suchst, dann ist die Ergebnisliste auch nicht so umfangreich), bei dem Top X der meist gelesenen Artikel angezeigt werden, allerdings nicht aus den letzten Y Tagen sondern aus dem aktuellen Monat. Wenn du das unbedingt mit einstellbaren Tagen haben willst, hat timo recht, dass du das Archiv der Statistik mit beruecksichtigen muesstest, was aber auch kein so wahnsinnig grosses Problem darstellen sollte. Zeit fuer Aenderungen habe ich allerdings leider keine.
Gruss
Christa
Gruss
Christa
Im Prinzip ist es genau das Modul, das ich gesucht habe. Danke für den Tipp! Allerdings wären noch ein paar Anpassungen erforderlich. Hier die Punkte, die ich als problematisch ansehe:
1. Das Modul sollte nur die echten Artikel berücksichtigen. Bei mir werden Startseite und Übersichtsseiten (Artikellisten) mit ausgegeben. Der Besucher ist jedoch nur an den wirklichen Artikeln interessiert. Evtl. könnte dies über "Startartikel auslassen" gefixt werden.
2. Meine Seite verwendet drei Navigationen, deren Hauptbäume jeweils "Startseite" heißen, damit die Pfladlegende diesen Punkt immer anzeigt. Das Modul listet natürlich dann drei mal den Artikel "Startseite" auf. Dieses Manko wäre aber ebenso über "Startikel auslassen" zu lösen.
3. Schön wäre es, wenn sich der Zählerstand nicht am Anfang des Monats auf 0 stellt. Aber auch ohne könnte ich leben.
Könntest Du die aktuelle Version veröffentlichen, da aufgrund der umdefinierten Variablen (s. http://www.contenido.de/forum/viewtopic.php?t=4854) Probleme entstehen. Schade, dass Du keine Zeit hast ...
1. Das Modul sollte nur die echten Artikel berücksichtigen. Bei mir werden Startseite und Übersichtsseiten (Artikellisten) mit ausgegeben. Der Besucher ist jedoch nur an den wirklichen Artikeln interessiert. Evtl. könnte dies über "Startartikel auslassen" gefixt werden.
2. Meine Seite verwendet drei Navigationen, deren Hauptbäume jeweils "Startseite" heißen, damit die Pfladlegende diesen Punkt immer anzeigt. Das Modul listet natürlich dann drei mal den Artikel "Startseite" auf. Dieses Manko wäre aber ebenso über "Startikel auslassen" zu lösen.
3. Schön wäre es, wenn sich der Zählerstand nicht am Anfang des Monats auf 0 stellt. Aber auch ohne könnte ich leben.
Könntest Du die aktuelle Version veröffentlichen, da aufgrund der umdefinierten Variablen (s. http://www.contenido.de/forum/viewtopic.php?t=4854) Probleme entstehen. Schade, dass Du keine Zeit hast ...
-
- Beiträge: 5478
- Registriert: Di 2. Mär 2004, 21:11
- Wohnort: Halchter, wo sonst? ;-)
- Kontaktdaten:
zu 1+2: Startartikel auslassen ist vergleichsweise einfach. Du musst nur bei den SQL-Anweisungen in der WHERE-Klausel folgende Zeile hinzufuegen:
AND CATART.is_start = '0'
Ich brauche das Modul nicht neu zu posten, denn ich habe es damals an Ort und Stelle geaendert. Die Variablen sind schon laengst umbenannt.
AND CATART.is_start = '0'
Ich brauche das Modul nicht neu zu posten, denn ich habe es damals an Ort und Stelle geaendert. Die Variablen sind schon laengst umbenannt.
Das haengt damit zusammen, weil nur die Tabelle mit der aktuellen Statistik (con_stat) abgefragt wird. Vielleicht kriegst du es ja auch alleine hin, den Rest zu aendern, nachdem der Grossteil eh' schon fertig ist.maTTos hat geschrieben:3. Schön wäre es, wenn sich der Zählerstand nicht am Anfang des Monats auf 0 stellt. Aber auch ohne könnte ich leben.
-
- Beiträge: 5478
- Registriert: Di 2. Mär 2004, 21:11
- Wohnort: Halchter, wo sonst? ;-)
- Kontaktdaten:
Ich hatte inzwischen Zeit. Aber nur, um das Modul zu aendern, nicht auch, um es zu testen. Versuch's mal mit folgendem Output (Input wie beim anderen Modul):
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Übersicht häufigste besuchte Seiten
* berücksichtigt con_stat UND con_stat_archive
* Author : Christa Tabara
* Copyright : Christa Tabara
* Created : 25-06-2004
* Modified : 14-10-2004
************************************************/
$anzahl='CMS_VALUE[0]';
$db = new DB_Contenido;
$sql = "SELECT ARTLANG.title, ARTLANG.idart, CAT.idcat, SUM(STAT.visited+STATARCH.visited) AS visited
FROM {$cfg['tab']['art_lang']} AS ARTLANG,
{$cfg['tab']['cat_art']} AS CATART,
{$cfg['tab']['cat']} AS CAT,
{$cfg['tab']['stat']} AS STAT,
{$cfg['tab']['stat_archive']} AS STATARCH
WHERE ARTLANG.online = '1'
AND ARTLANG.idart = CATART.idart
AND ARTLANG.idlang = STAT.idlang
AND ARTLANG.idlang = STATARCH.idlang
AND CATART.idcatart = STAT.idcatart
AND CATART.idcatart = STATARCH.idcatart
AND CATART.idcat = CAT.idcat
AND STAT.idlang= '$lang'
AND STAT.idclient = '$client'
AND STATARCH.idlang= '$lang'
AND STATARCH.idclient = '$client'
ORDER BY STAT.visited desc
LIMIT 0,".$anzahl;
$db->query($sql);
echo '<table width="290" border="0" cellspacing="0" cellpadding="2" style="border: 1px; border-color: #4779a0; border-style: solid">
<tr><td width="90%" style="border: 1px; border-right: 0px; border-color: #4779a0; border-style: solid; background-color: #EEEEEE; padding-left:10px" class="subheadline">Am häufigsten besuchte Seiten</td>
<td width="10%" style="border: 1px; border-color: #4779a0; border-style: solid; background-color: #EEEEEE; padding-left:10px" class="subheadline">Aufrufe</td>
</tr>';
for ($zeilen = 0; $zeilen<$anzahl; $zeilen++)
{
$db->next_record();
$title = $db->f("title");
$idcat_mfv = $db->f("idcat");//mfv=most frequently visited
$idart_mfv = $db->f("idart");
$aufrufe = $db->f("visited");
$link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat_mfv&idart=$idart_mfv");
echo '<tr>
<td width="90%" style="border: 1px; border-top:0px; border-right:0px; border-color: #4779a0; border-style: solid; padding-left:10px"><a href="'.$link.'">'.$title.'</a></td>
<td width="10%" style="border: 1px; border-top:0px; border-color: #4779a0; border-style: solid; padding-left:10px" class="subheadline">'.$aufrufe.'</a></td>
</tr>';
}
echo '</table>';
?>
Hallo Halchteranerin, danke das du dich dem Thema noch einmal angenommen hast.
Der Outputcode erzeugt kein rotes Lämpchen, aber leider erfolgt im Frontend keine Ausgabe der Artikel. Es bleibt einfach leer. Mit ist nicht klar, welchen Zeitraum das Modul voraussetzt, da ja kein weiterer CMS_VALUE für die Eintragung der Tage genutzt wird.
Der Outputcode erzeugt kein rotes Lämpchen, aber leider erfolgt im Frontend keine Ausgabe der Artikel. Es bleibt einfach leer. Mit ist nicht klar, welchen Zeitraum das Modul voraussetzt, da ja kein weiterer CMS_VALUE für die Eintragung der Tage genutzt wird.
-
- Beiträge: 5478
- Registriert: Di 2. Mär 2004, 21:11
- Wohnort: Halchter, wo sonst? ;-)
- Kontaktdaten:
Das mit den Tagen ist auch noch nicht drin, denn SO schnell kann ich die SQL-Anweisung doch nicht aendern. Was da rauskommen sollte ist erstmal nur die Summe der Hits aus der aktuellen Statistik PLUS Archiv. Du kannst das also nur feststellen, wenn du beide Module nebeneinander einbaust und die ausgegebenen Zahlen vergleichst.maTTos hat geschrieben:Mit ist nicht klar, welchen Zeitraum das Modul voraussetzt, da ja kein weiterer CMS_VALUE für die Eintragung der Tage genutzt wird.
So wie du das haben willst, dass man die Anzahl der Tage angeben kann, weiss ich auch noch nicht, wie man das realisiert, denn in den beiden Tabellen con_stat und con_stat_archive ist zwar jeweils eine Spalte visitdate, mir ist aber das dort enthaltene Format nicht klar. Da stehen solche Zahlen wie 20041015102351 oder 20041004124113. Der Datentyp fuer visitdate ist timestamp, und ich weiss leider nicht, wie man einen timestamp-Wert in ein Datum zurueckwandelt. Ich habe bei php.net etwas anderes gefunden, womit man ggf. rechnen koennte, das muss ich mir in einer ruhigen Minute angucken.
Bis dahin wuerde es mich aber interessieren, ob das bisherige Modul so wie gerade beschrieben funktioniert.
Naja kannst ja splittenHalchteranerin hat geschrieben:Da stehen solche Zahlen wie 20041015102351 oder 20041004124113. Der Datentyp fuer visitdate ist timestamp, und ich weiss leider nicht, wie man einen timestamp-Wert in ein Datum zurueckwandelt. Ich habe bei php.net etwas anderes gefunden, womit man ggf. rechnen koennte, das muss ich mir in einer ruhigen Minute angucken.
Beispiel:
20041015102351 =
Jahr 2004
Monat 10
Tag 15
Stunde 10
Minute 23
Sekunde 51
das ist nicht nötig. du kannst es dir direkt von mysql so zurückgeben lassen, wie du es gerne möchtest.
siehe hier (unter date_format):
http://dev.mysql.com/doc/mysql/en/Date_ ... tions.html
gruss,
andreas
siehe hier (unter date_format):
http://dev.mysql.com/doc/mysql/en/Date_ ... tions.html
gruss,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
-
- Beiträge: 5478
- Registriert: Di 2. Mär 2004, 21:11
- Wohnort: Halchter, wo sonst? ;-)
- Kontaktdaten:
-
- Beiträge: 5478
- Registriert: Di 2. Mär 2004, 21:11
- Wohnort: Halchter, wo sonst? ;-)
- Kontaktdaten:
Nicht schoen, aber selten ... Eigentlich laeuft's auch nicht, wie es soll, aber ich wollte trotzdem schon mal den Zwischenstand veroeffentlichen. Vielleicht kann es jemand verbessern.
Ich weiss naemlich gerade nicht, woran es liegt, aber ... je nach Anzahl der eingestellten Tage werden entweder die Daten aus der aktuellen Statistik oder aus dem Archiv geholt, jedoch ohne die Anzahl wirklich zu beruecksichtigen. Also ob ich heute 25 oder 250 Tage einstelle, macht nichts, es stehen bei beiden die gleichen Zahlen. Was ich nicht weiss und gerade auch nicht ausprobieren kann, weil sich mein Server verabschiedet hat: ob das wenigstens funktioniert, wenn man weniger Tage als das aktuelle Datum (also z.B. nur 15) angibt, also ob dann tatsaechlich nur die Statistik der letzten 15 Tage oder doch die vom ganzen (aktuellen) Monat ausgegeben wird.
Ich weiss naemlich gerade nicht, woran es liegt, aber ... je nach Anzahl der eingestellten Tage werden entweder die Daten aus der aktuellen Statistik oder aus dem Archiv geholt, jedoch ohne die Anzahl wirklich zu beruecksichtigen. Also ob ich heute 25 oder 250 Tage einstelle, macht nichts, es stehen bei beiden die gleichen Zahlen. Was ich nicht weiss und gerade auch nicht ausprobieren kann, weil sich mein Server verabschiedet hat: ob das wenigstens funktioniert, wenn man weniger Tage als das aktuelle Datum (also z.B. nur 15) angibt, also ob dann tatsaechlich nur die Statistik der letzten 15 Tage oder doch die vom ganzen (aktuellen) Monat ausgegeben wird.
Code: Alles auswählen
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : Übersicht häufigste besuchte Seiten
* berücksichtigt con_stat UND con_stat_archive
* Anzahl der zu berücksichtigen Tage
* ist einstellbar
* Author : Christa Tabara
* Copyright : Christa Tabara
* Created : 25-06-2004
* Modified : 17-10-2004
************************************************/
echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
<tr>
<td>Wieviele Artikel sollen aufgelistet werden?</td>
<td><input type=\"text\" name=\"CMS_VAR[4]\" value=\"CMS_VALUE[4]\"></td>
</tr>
<tr>
<td>Wieviel Tage sollen berücksichtigt werden?</td>
<td><input type=\"text\" name=\"CMS_VAR[5]\" value=\"CMS_VALUE[5]\"></td>
</tr>
</table>";
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Übersicht häufigste besuchte Seiten
* berücksichtigt con_stat UND con_stat_archive
* Anzahl der zu berücksichtigen Tage
* ist einstellbar
* Author : Christa Tabara
* Copyright : Christa Tabara
* Created : 25-06-2004
* Modified : 17-10-2004
************************************************/
$anzahl='CMS_VALUE[4]';
$anzahltage='CMS_VALUE[5]';
$aktuellesekunde=date("YmdHis");
$erstesekundedesmonats=date("Ym").'01000001';
$zeitdifferenz=($aktuellesekunde-$erstesekundedesmonats)/1000000;
$db = new DB_Contenido;
if($zeitdifferenz>=$anzahltage)
$sql = "SELECT DISTINCT ARTLANG.title, ARTLANG.idart, CAT.idcat, STAT.visited
FROM {$cfg['tab']['art_lang']} AS ARTLANG,
{$cfg['tab']['cat_art']} AS CATART,
{$cfg['tab']['cat']} AS CAT,
{$cfg['tab']['stat']} AS STAT
WHERE ARTLANG.online = '1'
AND ARTLANG.idart = CATART.idart
AND ARTLANG.idlang = STAT.idlang
AND CATART.idcatart = STAT.idcatart
AND CATART.idcat = CAT.idcat
AND STAT.idlang= '$lang'
AND STAT.idclient = '$client'
AND (DATE_SUB(CURRENT_TIMESTAMP()+0,INTERVAL $anzahltage DAY) <= STAT.visitdate)
GROUP BY ARTLANG.title
ORDER BY STAT.visited desc
LIMIT 0,".$anzahl;
else
$sql = "SELECT DISTINCT ARTLANG.title, ARTLANG.idart, CAT.idcat, STATARCH.visited,
STAT.visitdate, STATARCH.visitdate
FROM {$cfg['tab']['art_lang']} AS ARTLANG,
{$cfg['tab']['cat_art']} AS CATART,
{$cfg['tab']['cat']} AS CAT,
{$cfg['tab']['stat']} AS STAT,
{$cfg['tab']['stat_archive']} AS STATARCH
WHERE ARTLANG.online = '1'
AND ARTLANG.idart = CATART.idart
AND ARTLANG.idlang = STAT.idlang
AND ARTLANG.idlang = STATARCH.idlang
AND CATART.idcatart = STAT.idcatart
AND CATART.idcatart = STATARCH.idcatart
AND CATART.idcat = CAT.idcat
AND STAT.idlang= '$lang'
AND STAT.idclient = '$client'
AND STATARCH.idlang= '$lang'
AND STATARCH.idclient = '$client'
AND (DATE_SUB(CURRENT_TIMESTAMP()+0,INTERVAL $anzahltage DAY) <= STAT.visitdate
OR DATE_SUB(CURRENT_TIMESTAMP()+0,INTERVAL $anzahltage DAY) <= STATARCH.visitdate)
GROUP BY ARTLANG.title
ORDER BY STATARCH.visited desc
LIMIT 0,".$anzahl;
$db->query($sql);
echo '<table width="290" border="0" cellspacing="0" cellpadding="2" style="border: 1px; border-color: #4779a0; border-style: solid">
<tr><td width="90%" style="border: 1px; border-right: 0px; border-color: #4779a0; border-style: solid; background-color: #EEEEEE; padding-left:10px" class="subheadline">Am häufigsten besuchte Seiten</td>
<td width="10%" style="border: 1px; border-color: #4779a0; border-style: solid; background-color: #EEEEEE; padding-left:10px" class="subheadline">Aufrufe</td>
</tr>';
for ($zeilen = 0; $zeilen<$anzahl; $zeilen++)
{
$db->next_record();
$title = $db->f("title");
$idcat_mfv = $db->f("idcat");//mfv=most frequently visited
$idart_mfv = $db->f("idart");
$aufrufe = $db->f("visited");
$link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat_mfv&idart=$idart_mfv");
echo '<tr>
<td width="90%" style="border: 1px; border-top:0px; border-right:0px; border-color: #4779a0; border-style: solid; padding-left:10px"><a href="'.$link.'">'.$title.'</a></td>
<td width="10%" style="border: 1px; border-top:0px; border-color: #4779a0; border-style: solid; padding-left:10px" class="subheadline">'.$aufrufe.'</a></td>
</tr>';
}
echo '</table>';
?>
Statistik
Hallo,Halchteranerin hat geschrieben:Nicht schoen, aber selten ... Eigentlich laeuft's auch nicht, wie es soll, aber ich wollte trotzdem schon mal den Zwischenstand veroeffentlichen. Vielleicht kann es jemand verbessern.
Ich weiss naemlich gerade nicht, woran es liegt, aber ... je nach Anzahl der eingestellten Tage werden entweder die Daten aus der aktuellen Statistik oder aus dem Archiv geholt, jedoch ohne die Anzahl wirklich zu beruecksichtigen. Also ob ich heute 25 oder 250 Tage einstelle, macht nichts, es stehen bei beiden die gleichen Zahlen. Was ich nicht weiss und gerade auch nicht ausprobieren kann, weil sich mein Server verabschiedet hat: ob das wenigstens funktioniert, wenn man weniger Tage als das aktuelle Datum (also z.B. nur 15) angibt, also ob dann tatsaechlich nur die Statistik der letzten 15 Tage oder doch die vom ganzen (aktuellen) Monat ausgegeben wird.
habe Dein Modul eingesetzt und den gleichen Fehler (gleiche Ausgabe von Hits, unabhängig davon ob 30 oder 365 Tage eingetragen sind). Hast Du zwischenzeitlich den Fehler entdeckt? Wäre schön!
-
- Beiträge: 5478
- Registriert: Di 2. Mär 2004, 21:11
- Wohnort: Halchter, wo sonst? ;-)
- Kontaktdaten: