"Top Ten" - oder häufigste besuchte Seiten auflist

markusheinzer
Beiträge: 81
Registriert: Do 8. Sep 2005, 13:18
Wohnort: Sarajevo
Kontaktdaten:

"Top Ten" - oder häufigste besuchte Seiten auflist

Beitrag von markusheinzer » Mo 19. Dez 2005, 23:42

Ich habe das Modul von Halchteranerin für Version 4.6.4. angepasst und möchte es gerne hier zur Verfügung und Diskussion stellen:

Input:

Code: Alles auswählen

***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname   :     Übersicht häufigste/zuletzt besuchte Seiten
* Author          :     Christa Tabara
* Copyright     :      Christa Tabara
* Created        :     25-06-2004
* Modified       :      12-07-2004
************************************************/

echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
        <tr>
           <td>Wieviele Artikel sollen aufgelistet werden?</td>
           <td><input type=\"text\" name=\"CMS_VAR[0]\" value=\"CMS_VALUE[0]\"></td>
           </tr></table>"; 
Output:

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     Übersicht häufigste besuchte Seiten
* Author          :     Christa Tabara 
* (überarbeitet für Contenido 4.6.4. von markusheinzer am 18-12-2005)
* Copyright     :      Christa Tabara
* Created        :     25-06-2004
* Modified       :      12-07-2004
************************************************/
$anzahl='CMS_VALUE[0]';
$db = new DB_Contenido;
$sql = "SELECT ARTLANG.title, ARTLANG.idart, ARTLANG.idartlang, 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'
           ORDER BY STAT.visited desc";

$db->query($sql);

echo '<h3>Am häufigsten besuchte Seiten</h3>';

for ($zeilen = 0; $zeilen<$anzahl; $zeilen++)
     {
       $db->next_record();
           while (isStartArticle($db->f("idartlang"),$db->f("idcat"),$lang)==TRUE)
                 { $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 '<a href="'.$link.'">'.$title.'&nbsp;<span style="font-size:0.6em">('.$aufrufe.'&nbsp;Aufrufe)</span></a>';
     }
?>

mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Re: "Top Ten" - oder häufigste besuchte Seiten auf

Beitrag von mvf » Mo 19. Dez 2005, 23:46

sorry falscher thread

ne doch nicht :lol:

glaube die halchteranerin meinte eher hier

http://contenido.org/forum/viewtopic.php?t=10231
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Di 20. Dez 2005, 08:19

Es ist ok, weil das alte Modul SO nur im Kompatibilitaetsmodus lief, und ich hatte ihm beide Moeglichkeiten vorgeschlagen.
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!

mreif
Beiträge: 192
Registriert: Mi 12. Okt 2005, 16:32
Wohnort: Weiterstadt
Kontaktdaten:

Beitrag von mreif » Sa 31. Dez 2005, 23:53

Hallo,

habe es unter 4.6.4 auf meinem Testaccount eingebunden.
Funktion ist nicht schlecht, wobei die Auflistung der Top Seiten vielleicht eher untereinander dargestellt werden sollten.

Eine Nummerierung der Top List 1 bis ... wäre ebenfalls nicht schlecht.

Vielleicht lässt sich das bei Gelegenheit noch ändern.

Gruß
Michael

markusheinzer
Beiträge: 81
Registriert: Do 8. Sep 2005, 13:18
Wohnort: Sarajevo
Kontaktdaten:

Beitrag von markusheinzer » So 1. Jan 2006, 14:58

Ich bin eben der Meinung, dass man möglichst alle Stil-Infos ins Stylesheet packen soll.
Ich ordne die Links untereinander, indem ich im Stylesheet eine Klasse z.B. "linkliste" definiere:

Code: Alles auswählen

a[class="linkliste"] 
{display:block;}
Dann muss ich natürlich im Output-Code ganz unten ins <a.. -Tag noch die Ergänzung class="linkliste" schreiben und dann kommt es gut (siehe unten).

Für die Nummerierung kannst Du z.B. eine Variable $rang einführen und der den Wert $zeilen+1 zuordnen, da $zeilen bei Null beginnt aber dann schön mitläuft.

Für diese beiden Änderungen müsstest Du dann die unterste Zeile, die mit "echo..." beginnt mit folgendem Code überschreiben:

Code: Alles auswählen

$rang = $zeilen +1;

echo '<a class="linkliste" href="'.$link.'">'.$rang.'. '.$title.'&nbsp;<span style="font-size:0.6em">('.$aufrufe.'&nbsp;Aufrufe)</span></a>';

markusheinzer
Beiträge: 81
Registriert: Do 8. Sep 2005, 13:18
Wohnort: Sarajevo
Kontaktdaten:

Beitrag von markusheinzer » So 1. Jan 2006, 15:10

Ich habe übrigens mittlerweile mein Modul noch erweitert. Man kann jetzt in der Konfiguration selber auswählen, ob die Startartikel einbezogen werden sollen oder nicht. Ausserdem kann man Artikel mit bestimmten Artikel-Spezifiationen ausschliessen.
Das macht bei mir Sinn, da ich einige der Startartikel gerne dabei haben will, aber nicht alle. Ich kann so die rein funktionalen Startartikel wie reine Artikellisten usw. ausschliessen und aber die inhalttragenden Startartikel drinbehalten.

Input-Code:

Code: Alles auswählen

/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname   :     Übersicht häufigste/zuletzt besuchte Seiten
* Author          :     Christa Tabara
* Created       :     25-06-2004
* Modified       :     29-12-2005 by Markus Heinzer
************************************************/

if ("CMS_VALUE[0]" == '')
{$wieviele = 1;} else {$wieviele = "CMS_VALUE[0]";}

if ("CMS_VALUE[4]" == '')
{$startartikel = 'true';} else {$startartikel = "CMS_VALUE[4]";}

$spez_off1 = "CMS_VALUE[5]";
$spez_off2 = "CMS_VALUE[6]";


echo '<table class="text_medium">';

// Anzahl aufgelistete Artikel

echo '<tr>
           <td>'.mi18n("Wieviele Artikel auflisten?").'</td>
           <td><input type="text" name="'."CMS_VAR[0]".'" value="'.$wieviele.'"></td>
           </tr>';

// Startartikel einbeziehen?

echo '<tr>
           <td>'.mi18n("Startartikel einbeziehen").'</td>
           <td><input type="radio" name="'."CMS_VAR[4]".'" value="true"';
               if ($startartikel == 'true') {echo ' checked="checked"';}
           echo '></td></tr>';

echo '<tr>
           <td>'.mi18n("Startartikel nicht einbeziehen").'</td>
           <td><input type="radio" name="'."CMS_VAR[4]".'" value="false"';
               if ($startartikel == 'false') {echo ' checked="checked"';}
           echo '></td></tr>';

// Gewisse Spezifikationen ausschliessen?

$db2 = new DB_Contenido;

$sql = "SELECT SPEC.idartspec, SPEC.artspec, SPEC.client, SPEC.lang 
        FROM {$cfg['tab']['art_spec']} AS SPEC
        WHERE SPEC.client = '$client'
           AND SPEC.lang = '$lang'
        ORDER BY SPEC.idartspec asc";

$db2->query($sql);

echo '<tr>
          <td>'.mi18n("Artikel-Spezifikation ausschliessen 1").':</td>
          <td><select name="CMS_VAR[5]" size="1">';

               if ($spez_off1 == 'keine') 
               {echo '<option value="keine" selected="selected">'.mi18n("keine").'</option>';}
               else 
               {echo '<option value="keine">'.mi18n("keine").'</option>';}

               while ($db2->next_record())
               {
                    $db_idartspec = $db2->f("idartspec");
                    $db_artspec = $db2->f("artspec");

                    if ($db_idartspec == $spez_off1) 
                    {echo '<option value="'.$db_idartspec.'" selected="selected">'.$db_artspec.'</option>';}

                    else 
                    {echo '<option value="'.$db_idartspec.'">'.$db_artspec.'</option>';}
               }    
               echo '</select></td></tr>';

$db2->query($sql);

echo '<tr>
          <td>'.mi18n("Artikel-Spezifikation ausschliessen 2").':</td>
          <td><select name="CMS_VAR[6]" size="1">';

               if ($spez_off2 == 'keine') 
               {echo '<option value="keine" selected="selected">'.mi18n("keine").'</option>';}
               else 
               {echo '<option value="keine">'.mi18n("keine").'</option>';}

               while ($db2->next_record())
               {
                    $db_idartspec = $db2->f("idartspec");
                    $db_artspec = $db2->f("artspec");

                    if ($db_idartspec == $spez_off2) 
                    {echo '<option value="'.$db_idartspec.'" selected="selected">'.$db_artspec.'</option>';}
                    else 
                    {echo '<option value="'.$db_idartspec.'">'.$db_artspec.'</option>';}
               }    
               echo '</select></td></tr>';

echo '</table>';

Output-Code:

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     Übersicht häufigste/zuletzt besuchte Seiten
* Author      :     Christa Tabara
* Created     :     25-06-2004
* Modified    :     29-12-2005 by Markus Heinzer
************************************************/

$backend = false;
if ($contenido&&($view=="edit")) {$backend = true;}

$anzahl= "CMS_VALUE[0]";
$startartikel = "CMS_VALUE[4]";
$spez_off1 = "CMS_VALUE[5]";
$spez_off2 = "CMS_VALUE[6]";

$db = new DB_Contenido;

$sql = "SELECT ARTLANG.title, ARTLANG.idart, ARTLANG.artspec, ARTLANG.idartlang, 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 ARTLANG.artspec != '$spez_off1'
                      AND ARTLANG.artspec != '$spez_off2'
                      AND CATART.idcatart = STAT.idcatart
                      AND CATART.idcat = CAT.idcat
                      AND STAT.idlang = '$lang'
                      AND STAT.idclient = '$client'
           ORDER BY STAT.visited desc";

$db->query($sql);

for ($zeilen = 0; $zeilen<$anzahl; $zeilen++)
     {
       $db->next_record();
       while (($startartikel == 'false') and (isStartArticle($db->f("idartlang"),$db->f("idcat"),$lang) == TRUE))        
              { $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 '<a href="'.$link.'" class="linkliste">'.$title.'&nbsp;<span style="font-size:0.6em">('.$aufrufe.'&nbsp;Aufrufe)</span></a>';
     }
?>

mreif
Beiträge: 192
Registriert: Mi 12. Okt 2005, 16:32
Wohnort: Weiterstadt
Kontaktdaten:

Beitrag von mreif » So 1. Jan 2006, 20:16

Hallo Markus,
(prosit Neujahr)

danke für Deine Unterstützung.
Das neue Modul habe ich eingebunden und die Änderungen Deiner vorherigen Mail durchgeführt.

Mit der Nummerierung hat soweit funktioniert.
Leider funktioniert die Block Darstellung nicht, obwohl die genannten Zeilen im Style.css eingebunden sind.

Mache ich irgendwo noch einen Denkfehler?
Habe die Zeilen 1:1 ins style.css kopiert, wie angegeben.

In der Konfiguration "Artikelspezifikationen ausschließen" steht bei mir nur "keine" zur Auswahl.

In dem Ursprünglichen Modul war glaube ich noch mit ersichtlich, wie oft die Seite aufgerufen wurden (fand ich auch nicht schlecht).


Gruß Michael

mreif
Beiträge: 192
Registriert: Mi 12. Okt 2005, 16:32
Wohnort: Weiterstadt
Kontaktdaten:

Beitrag von mreif » So 1. Jan 2006, 20:20

Nachtrag:

hab's hinbekommen mit dem Style.
Den Eintrag im style.css habe ich jetzt wie folgt eingetragen:

a.linkliste {
display:block;
}

Vielleicht kannst Du ja noch etwas zu den anderen Punkten schreiben.

Gruß
Michael

markusheinzer
Beiträge: 81
Registriert: Do 8. Sep 2005, 13:18
Wohnort: Sarajevo
Kontaktdaten:

Beitrag von markusheinzer » So 1. Jan 2006, 21:56

Wenns so funktioniert ist auch gut.

Also das mit der Angabe, wie oft die Artikel angeklickt worden sind, sollte eigentlich immer noch gleich sein wie beim ursprünglichen Modul.

A propos Artikel-Spezifikation: Du kannst nur Spezifikationen auswählen, die Du im Menu "Administration - Mandanten" unter Artikel-Spezifikationen eingegeben hast. Ausserdem musst du dann bei jedem Artikel in den Eigenschaften auch eine Spezifikation auswählen. Es könnte auch sein, dass die Artikel standardmässig mit der ersten Spezifikation ausgestattet werden. Da bin ich mir jetzt grad nicht sicher.

Das ganze mit den Spezifikationen macht nur Sinn, wenn man mit denen überhaupt arbeiten will. Ansonsten kann man im Modul getrost "keine" auswählen und dann werden auch keine ausgeschlossen, bzw. alle Artikel einbezogen.

mreif
Beiträge: 192
Registriert: Mi 12. Okt 2005, 16:32
Wohnort: Weiterstadt
Kontaktdaten:

Beitrag von mreif » So 1. Jan 2006, 22:13

Artikelspezifikationen habe ich unter Mandanten keine angelegt.
Dafür "spiele" ich mit Contenindo noch nicht so lange - habe hierzu also keien Erfahrungswerte.

Die Anzahl der Seitenaufrufe wird nicht angezeigt - schade.
Woran es liegt, weiss ich allerdings auch nicht.

Habe das Module 1:1 gem. der obigen Mail übernommen.

Gruß
Michael

markusheinzer
Beiträge: 81
Registriert: Do 8. Sep 2005, 13:18
Wohnort: Sarajevo
Kontaktdaten:

Beitrag von markusheinzer » Mo 2. Jan 2006, 08:48

Das Modul sollte hinter dem Linktext in verkleinerter Schrift eine Klammer mit dem Inhalt (x Aufrufe) anzeigen.
Was genau wird bei Dir nicht angezeigt?

mreif
Beiträge: 192
Registriert: Mi 12. Okt 2005, 16:32
Wohnort: Weiterstadt
Kontaktdaten:

Beitrag von mreif » Mo 2. Jan 2006, 11:57

Hallo Markus,

stimmt ... da steht was ... ganz klein ... in hellgrau ... ja, das sind die Seitenaufrufe.

Die stehen aber alle auf (0 Aufrufe) - hmm, passt noch nicht so ganz.


Ich habe im style.css die Farbwerte

a { font-size:11px; color:rgb(190,190,190); text-decoration:none; }
a:hover { text-decoration:underline; }

geändert, damit die Links in einer anderen Farbe erscheinen!
Hat aber nicht funktioniert :cry: Die Links sind nach wie vor noch im Grauton.

Gruß
Michael

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Mo 2. Jan 2006, 13:10

hahaha, die Links werden auch weiterhin in Grau erscheinen, wenn du Grau-Farbwerte angibst!
http://screenexa.net/html/farbtab.htm
Da kannst du dir z.B. Farbtoene zusammenstellen und die Werte anzeigen lassen.

mreif
Beiträge: 192
Registriert: Mi 12. Okt 2005, 16:32
Wohnort: Weiterstadt
Kontaktdaten:

Beitrag von mreif » Mo 2. Jan 2006, 14:38

:) Nee, das hast Du jetzt falsch verstanden.

Der 190,190,190 ist ja der graue Farbton, der vorgegeben war. Den Link habe ich nur in die Mail kopiert, damit Du weißt, was ich geändert habe.
Den Farbwert habe ich geändert auf 104,0,255
Aber der Link bleibt trotzdem grau.

Gibt es sonst noch eine Stelle wo die Farbe für Links geändert werden können ?

Hab den Fehler gefunden ... die Seite wurde aus dem Cache geladen.
Nachdem ich den Button "Seite aktualisieren" gedrückt habe, wurde auch die Farbe geändert.
Man was für ein blöder Fehler. (Blöd, wenn die Firma einen Proxy hat :oops: und man sonst alles von zuhause macht)

Gruß
Michael
Zuletzt geändert von mreif am Mo 2. Jan 2006, 14:44, insgesamt 1-mal geändert.

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt » Mo 2. Jan 2006, 14:40

Es kann sein, dass das a später in der CSS Datei überschrieben wird.

Außerdem gibt man Hex-Werte für Farben an, keine RGB-Werte!

Gesperrt